⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_23571.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:23571 发表者:lwx 发表日期:2002-12-05 09:39:29
<br>主题:200分
<br>内容:我在按书上的例子作一个程序的时候,出现了一些不解和奇怪的问题,现说明如下:<BR>程序的一项功能是用Static Text控件来显示位图,并能通过鼠标事件来移动他的位置,最终的载入位图的代码如下<BR>CStatic* pstatic=new CStatic;<BR>pstatic-&gt;Create("DFGHESRGSD ",WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE,CRect(0,0,40,40),this,IDC_STATIC1);<BR>// TODO: Add extra initialization here<BR>bitmap.LoadBitmap(IDB_BITMAP1);<BR>pstatic-&gt;SetBitmap((HBITMAP)bitmap.Detach());<BR>pstatic-&gt;SetWindowPos(NULL,10,10,0,0,SWP_NOSIZE);<BR><BR>其中IDC_STATIC1是我在对话框里添加的Static Text控件ID,运行后能够在CRect指定的位置显示位图,但是这个位图并不是显示在Static控件里面,而只是在CRect内,我很不理解,这里的Create函数里面有一个参数是IDC_STATIC1,他的作用就是把我建立的这个CStatic类和控件Static建立关联对吧,怎么后来的结果是一点关联都没有(我显示出来的位图并没有出现在我的Static控里,甚至可以用这个Static控件把我的位图覆盖掉,二者看起来是各自独立的)是不是我的代码的问题,那么我应该怎么作才能把我建立的CStatic对象和Static文本控件建立关联,也就是把我的位图显示在Static控件里那?<BR>还有一个问题就是,我想给我的Static控件加上鼠标事件,我是直接用class wizard 的方法来建立的,我想试试该控件能否相应鼠标事件就在其消息函数中随便先加了一段代码如下:<BR>void CMyDlg::OnStatic1() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your control notification handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString msg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;msg="ddd";<BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(msg);<BR>}<BR>结果令我失望,运行后怎么点击鼠标也是一点反映都没有,但是如果我用同样的方法来测试button控件则很顺利,所以我这里的问题是我为Static控件加入鼠标事件的方法错了吗?如果不对,那又该怎么作那,请高手们指点,本人深表感激!!<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:凯凯 回复日期:2002-12-05 10:09:29
<br>内容:这里的Static控件是动态创建的,不需要你在对话框中添加它。<BR><BR>你先到对话框资源编辑器中,将你添加的ID为IDC_STATIC1的static控件删除。<BR>再点击菜单View-&gt;Resource Symbols... 在出现的对话框中按new按钮,再在弹出的对话框的Name中输入IDC_STATIC1,按OK,再按Close。再编译你的程序就可以了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lwx 回复日期:2002-12-05 10:41:40
<br>内容:我按照楼上的朋友的方法作了,但是我要的那个要求Static控件能相应鼠标事件还是没有一点眉目,我不知道这次我哪里错了,咳,可惜我买的这本书又忘要光盘了,不然就可以参照他的代码.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:凯凯 回复日期:2002-12-05 10:43:56
<br>内容:因为static是动态创建的,所以它的鼠标响应事件需要手动添加。具体的方法你可以参照用向导产生的代码。<BR>记得给分!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:未出手的飞刀 回复日期:2002-12-05 10:48:10
<br>内容:<BR>bitmap已经显示在你的static控件了。不过是你的“动态创建”的static,你在dialog上摆的static是另一个(虽然他们id相同)。<BR><BR>如果你要在dialog上摆static,那通过"mfc向导“为它建立一个CStatic变量,再用此变量去SetBitmap就行了。<BR><BR>如果要响应Static控件的鼠标事件,你必须给static加上SS_NOTIFY的style才行(在dialog中选Notify属性)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntiVirus 回复日期:2002-12-05 10:49:39
<br>内容:现在大家都要提醒给分了,嘻嘻<BR><BR>没关系啊,他不给你,我给你啊!<BR><BR>:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lwx 回复日期:2002-12-05 10:54:56
<br>内容:我要急疯了,我是全套照搬 CLASSWIZARD代码,先定义消息函数<BR>afx_msg void OnStatic1(); 在定义消息机制&nbsp;&nbsp;&nbsp;&nbsp;<BR>ON_BN_CLICKED(IDC_STATIC1,OnStatic1)<BR>最后是消息函数<BR>void CMyDlg::OnStatic1() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString msg;<BR>&nbsp;&nbsp;&nbsp;&nbsp;msg="ddd";<BR>&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(msg);<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your control notification handler code here<BR>//&nbsp;&nbsp;&nbsp;&nbsp;pstatic-&gt;SetWindowPo(NULL,100,100,0,0,SWP_NOSIZE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR><BR>按理我运行后对着我的图片点击鼠标应该弹出ddd 对话框的,怎么就是没有,好像根本没有执行我这个消息函数!!!!!!<BR>请教楼上的大侠,能给段代码给我吗,我看看你是怎么编的,<BR>这里我是让动态Static控件相应鼠标的事件,就是我建立一个静态Static控件,用CLASSWIZARD来添加鼠标事件也一点反应都没有阿,怎么回事那!!<BR>干脆发个代码给我,只要static控件能相应鼠标事件就行 我的邮箱lwx314@sina.com<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:未出手的飞刀 回复日期:2002-12-05 10:57:50
<br>内容:<BR>如果要响应Static控件的鼠标事件,你必须给static加上SS_NOTIFY的style才行(在dialog中选Notify属性)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:小年 回复日期:2002-12-05 11:03:11
<br>内容:Static控件默认情况下,不会响应消息,你必须自己强行设置<BR>pstatic-&gt;Create("DFGHESRGSD ",WS_CHILD|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE|WS_NOTIFY,CRect(0,0,40,40),this,IDC_STATIC1);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lwx 回复日期:2002-12-05 11:06:17
<br>内容:谢谢众位高人指点,我终于明白了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntiVirus 回复日期:2002-12-05 17:35:58
<br>内容:哎,他把分给飞刀了!<BR><BR>我没法子了!<BR><BR>:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:未出手的飞刀 回复日期:2002-12-05 19:20:06
<br>内容:(:<BR>Norton AntiVirus,你想干吗
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Norton AntiVirus 回复日期:2002-12-06 08:38:01
<br>内容:没什么啊<BR><BR>KK说让楼主给他分,我说楼主不给的话,我可以给他<BR><BR>后来楼主把分给你了<BR><BR>我就没有办法了<BR><BR>:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -