说明:请不要用任何控件,我只想用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钩子,还有没有其他办法?谢谢大家~~

解决方案 »

  1.   

    你说的问题我自己也做过,我自己做的是一个类似MFC CButton类的按钮类。其实按钮是一个窗口,所有的消息都是应该自己来处理的,如果你要和主窗口沟通的话,自己建立一个自定义的按钮消息就好像MFC里的那样,用SendMessage或PostMessage来向主窗口发送消息。如你要主窗口响应按钮的WM_COMMAND消息,那你可以自己定义一个WM_BUTTON1的消息,在按钮这个窗口中响应了WM_LBUTTONDBLCLK消息就向主窗口发送WM_BUTTON1消息,让主窗口自己来处理。
      

  2.   

    可是,GROUPBOX的WNDPROC不是由我控制的啊晕了
      

  3.   

    不知道你有没有用VC的资源编辑器进行过对话框的设计,如果设计过你就会明白VC的GROUPBOX和VB、Delphi不一样,它只不过是逻辑上将控件分组,而事实上它和它所包围的控件并不存在父、子窗口的关系。
    所以你在创建按钮的时候,设置它的父窗口为主窗口,相对坐标处于GROUPBOX之内就可以了。
      

  4.   

    To: titilima(李马)
    不错的主意~~!!谢谢