求基于cstatic和基于cwnd写的子类的差别

hgy601 2010-06-23 07:15:33
我用基于CWnd的类(记为cwndex)自绘了一个圆角矩形区域,又用基于CButton自绘了个按钮(记为cbuttonex),又用基于CStatic自给了一个圆角矩形区域(记为cstaticex),其中cwndex和cstaticex,都是在onpaint中自绘了整个客户区,
问题点:我把cbuttonex生成的按钮放在cwndex生成的圆角矩形区域中,它们两者是叠加的兄弟窗口关系,按钮在Z序上方,发现按钮可见,但不再响应wm_lbuttondown之类的消息了,也就是按钮无效,但把按钮放在cstatic生成的圆角矩形中,却能响应。也就是按钮有效。求教为什么??
cwndex和cstaticex除了基类不同,所有写法一样,为什么cwndex的onpaint会使按钮无效,而cstatiex却不会呢?
...全文
189 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyrx2010 2010-07-03
  • 打赏
  • 举报
回复
http://passport.csdn.net/ActivateUser.aspx?UserName=cyrx2010&Code=AVSW6Xzt%2fBGMnyyvzp36AEQSdyHdPXsG1ma%2fYpcYoB1L81p7lqsglJP40N7QuQq1vFnh57s4SE2sIEi%2fxfdfXNDtB5a0vHNHBtzf7qX59s0%3d

向立天 2010-07-03
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
zxdlms 2010-06-25
  • 打赏
  • 举报
回复
CStatic默认是不接受鼠标消息的,所以按钮可以响应。

用CWnd,可能CWnd窗口先接受了鼠标消息,导致你的按钮响应鼠标。
  • 打赏
  • 举报
回复
Static必须启用Notify属性才会向父窗口发消息的
gz_qmc 2010-06-24
  • 打赏
  • 举报
回复
静态控件也是从CWnd类来的
但他比较CWnd而言,多了很多对自身消息的处理

所以你从CWnd类直接派生的控件,也同样需要做很多消息上的处理.
否则,有些东西你觉得怪,其实也不怪

向立天 2010-06-24
  • 打赏
  • 举报
回复
静态控件MFC内部是做了处理的
相当于对话框的背景
Eleven 2010-06-24
  • 打赏
  • 举报
回复
应该是你自绘的代码存在问题吧。。。
hgy601 2010-06-24
  • 打赏
  • 举报
回复
继续顶贴,等高手解答!!
hgy601 2010-06-23
  • 打赏
  • 举报
回复
都跟过了,我只是想知道两个倒底有什么不同,有没有高手清楚,
jhayumu 2010-06-23
  • 打赏
  • 举报
回复
跟下 OnbtnClick消息。。我猜是cstaticex屏蔽掉了OnCmd消息,你自己试试
hgy601 2010-06-23
  • 打赏
  • 举报
回复
都是ws_visible和ws_child,我用spy++探过。并且用setwindowpos保证button在z序最上面
hgy601 2010-06-23
  • 打赏
  • 举报
回复
上面三个窗口都是cdialog下的子窗口,他们三个是兄弟窗口关系,就比如在dialog中画一个大的static框,再在static框内放一个button;
XiongYouXiaoZhi 2010-06-23
  • 打赏
  • 举报
回复
我估计 是 cwndex 的 Style 没设置对
你看下 cwndex 和 cbuttonex 的Style 一样么 创建的时候
vann1982 2010-06-23
  • 打赏
  • 举报
回复
cbuttonex 有没有设置child属性?
liyelun 2010-06-23
  • 打赏
  • 举报
回复
不懂,帮顶

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧