我的MainFrame里建立了一个容器
在容器里有一个Button现在想给Button设置CustomDraw风格但是从MainFrame不能拦截到Button的NOTIFY消息
通过何种编码可以让这个消息传递到我的MainFrame?(我用的容器并没有派生类,所以需要不用修改容器代码的方法)

解决方案 »

  1.   

    可以用CMainFrame的子窗口容器来接受WM_NOTIFY消息并响应。
    如果硬要CMainFrame处理,可在容器OnNotify里面((CMainFrame*)GetParent())->自定义的函数
    处理吧。
      

  2.   

    MainFrame不能拦截的,因为消息是直接送到对应窗口,而不是通过父窗口层层转发。你要自己处理线程消息队列
      

  3.   

    对 我希望我的容器能够转发消息到主窗口但是,我不能修改容器的代码。话说MFC有什么方法可以跟踪一个消息的处理过程吗拦截不到的消息我都不知道怎么下断点。
      

  4.   

    添加HOOK函数,然后拦截窗口句柄是容器窗口的WM_NOTIFY消息
      

  5.   

    WM_NOTOFY是发送给CButton的父窗口的,你的MainFrame并不是CButton的父窗口所以直接是收不到的。
    既然你不能修改容器的代码,这样你在容器上再创建一个窗口(可以派生自CWnd类或者CWnd类的子类),将CButton作为该窗口类的子窗口,这样你就可以在你创建的窗口类中处理WM_NOTIFY消息了,那么转发到MainFrame主框架类就比较容易了
      

  6.   

    谢谢大家,自己研究出来了,直接子类化Button就可以了。