请问,除了“=WM_CTLCOLOR”比“WM_CTLCOLOR”多个“=”号,它们之间还有什么区别?

解决方案 »

  1.   

    还有一个区别,后者是一个合法的WINDOWS消息,前者没有意义,估计是你拷代码的时候出错了
      

  2.   

    呵呵,WM_CTLCOLOR是正确的,没有=
      

  3.   

    没错,到ClassWizard里可以发现它(“=WM_CTLCOLOR”)。
      

  4.   

    到ClassWizard里可以发现它(“=WM_CTLCOLOR”),这,你们不知道么?
      

  5.   

    “=WM_CTLCOLOR”的影射函数是CtlColor(CDC* pDC, UINT nCtlColor) ,而“WM_CTLCOLOR”的是OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 。
    这两个函数的功能是否一样???
      

  6.   

    CtlColor是虚函数,OnCtlColor是消息响应函数。估计是基类的onctlcolor调用ctlcolor
      

  7.   

    请注意看:
    classwizard下面的解释
    例如:LV_INSERTITEM:[Reflected from control]: Indicates.....如果前面有等号,则都有[Reflected from control]这个注释。
    那么这个[Reflected from control]是什么意思呢???MSDN有这样的解释
    REFLECT_NOTIFICATIONS
    This macro reflects notification messages back to the child window, control, that sent them. Specify this macro as part of your message map.应该是此消息是从父窗口过来的。你说的:
    "=WM_CTLCOLOR”的影射函数是CtlColor(CDC* pDC, UINT nCtlColor) ,
    而“WM_CTLCOLOR”的是OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 。
    后者需要CWnd* pWnd就是用来区分是哪个子窗口的,而前者不用
      

  8.   

    WM_CTLCOLOR是控件重画时发给主窗口的windows消息。在这里可以根据pWnd等参数改变控件的外观。=WM_CTLCOLOR是消息反射。他的函数CtlColor是一个虚函数。可以在控件中重载这个函数,当主窗口得到控件要重画的消息后,首先通过虚函数调用控件,使控件自己来维护自己的外观等。然后再送入消息路由。