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

zhpzh 2004-04-30 11:06:03
请问,除了“=WM_CTLCOLOR”比“WM_CTLCOLOR”多个“=”号,它们之间还有什么区别?
...全文
144 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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消息,前者没有意义,估计是你拷代码的时候出错了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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