“=WM_CTLCOLOR”和“WM_CTLCOLOR”有什么区别?(急!)

zhpzh 2004-04-30 11:06:03
请问,除了“=WM_CTLCOLOR”比“WM_CTLCOLOR”多个“=”号,它们之间还有什么区别?
...全文
73 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
enoloo 2004-04-30


WM_CTLCOLOR是控件重画时发给主窗口的windows消息。在这里可以根据pWnd等参数改变控件的外观。

=WM_CTLCOLOR是消息反射。他的函数CtlColor是一个虚函数。可以在控件中重载这个函数,当主窗口得到控件要重画的消息后,首先通过虚函数调用控件,使控件自己来维护自己的外观等。然后再送入消息路由。
  • 打赏
  • 举报
回复
宝_爸 2004-04-30
请注意看:
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就是用来区分是哪个子窗口的,而前者不用


  • 打赏
  • 举报
回复
gaosl11 2004-04-30
CtlColor是虚函数,OnCtlColor是消息响应函数。估计是基类的onctlcolor调用ctlcolor
  • 打赏
  • 举报
回复
numen27 2004-04-30
好像涉及到消息反射
  • 打赏
  • 举报
回复
zhpzh 2004-04-30
“=WM_CTLCOLOR”的影射函数是CtlColor(CDC* pDC, UINT nCtlColor) ,而“WM_CTLCOLOR”的是OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 。
这两个函数的功能是否一样???
  • 打赏
  • 举报
回复
zhpzh 2004-04-30
到ClassWizard里可以发现它(“=WM_CTLCOLOR”),这,你们不知道么?
  • 打赏
  • 举报
回复
zhpzh 2004-04-30
没错,到ClassWizard里可以发现它(“=WM_CTLCOLOR”)。
  • 打赏
  • 举报
回复
windyloft 2004-04-30
呵呵,WM_CTLCOLOR是正确的,没有=
  • 打赏
  • 举报
回复
archer_hao 2004-04-30
还有一个区别,后者是一个合法的WINDOWS消息,前者没有意义,估计是你拷代码的时候出错了
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-04-30 11:06
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……