不用控件,纯API画了一个WS_GROUPBOX风格的窗口之后。。。

瓦琦儿 2004-08-26 09:45:02
说明:请不要用任何控件,我只想用API完成所有功能

首先,我画了一个主窗口,然后以主窗口为parent画了一个WS_GROUPBOX风格的子窗口。
然后,我又以GROUPBOX为parent画了一个button类的子窗口。

这时候界面正常,但button的WM_COMMAND却被发送到了GROUPBOX,我无法处理这个消息。
于是我SetWindowLong把GROUPBOX的GWL_WNDPROC改成了主窗口的地址
这样,我便可以在主窗口处理button的WM_COMMAND消息。

问题来了,由于GROUPBOX的WM_PAINT消息也被发送到了主窗口,GROUPBOX便无法被画出来了。
请问各位高手,有没有什么办法,使GROUPBOX把WM_COMMAND交给主窗口处理,把WM_PAINT自己处理呢?
除了WH_GETMESSAGE钩子,还有没有其他办法?

谢谢大家~~
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
瓦琦儿 2004-08-29
  • 打赏
  • 举报
回复
To: titilima(李马)
不错的主意~~!!谢谢
李马 2004-08-28
  • 打赏
  • 举报
回复
不知道你有没有用VC的资源编辑器进行过对话框的设计,如果设计过你就会明白VC的GROUPBOX和VB、Delphi不一样,它只不过是逻辑上将控件分组,而事实上它和它所包围的控件并不存在父、子窗口的关系。
所以你在创建按钮的时候,设置它的父窗口为主窗口,相对坐标处于GROUPBOX之内就可以了。
瓦琦儿 2004-08-28
  • 打赏
  • 举报
回复
可是,GROUPBOX的WNDPROC不是由我控制的啊。。。晕了。。。
maijian 2004-08-26
  • 打赏
  • 举报
回复
你说的问题我自己也做过,我自己做的是一个类似MFC CButton类的按钮类。其实按钮是一个窗口,所有的消息都是应该自己来处理的,如果你要和主窗口沟通的话,自己建立一个自定义的按钮消息就好像MFC里的那样,用SendMessage或PostMessage来向主窗口发送消息。

如你要主窗口响应按钮的WM_COMMAND消息,那你可以自己定义一个WM_BUTTON1的消息,在按钮这个窗口中响应了WM_LBUTTONDBLCLK消息就向主窗口发送WM_BUTTON1消息,让主窗口自己来处理。

15,979

社区成员

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

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