| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 283 人关注过本帖
标题:求助OnCtlColor的第二个参数
只看楼主 加入收藏
coldlxh
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-1-31
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
求助OnCtlColor的第二个参数
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
这个函数是响应WM_CTLCOLOR消息的,是用于控件的绘制时向父类发送的一个消息,请求控件的绘制颜色.
在这个函数中.
我用了两个if

if (pWnd->GetDlgCtrlID() == IDC_EDIT1)//通过控件的指针调用GetDlgCtrlID()方法得到他的ID

if(GetDlgItem(IDC_EDIT1) == pWnd)//通过控件的ID得到该控件的指针
第一个可以成功,第二条竟然不能成功.我有点迷糊,竟然同一个控件的指针还能不一样
搜索更多相关主题的帖子: 成功 
2013-01-31 22:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9026
专家分:54030
注 册:2011-1-18
收藏
得分:10 
每一个控件有一个唯一的Handle
而CWnd只是Handle的代理类,所以可能多个不同的CWnd控制的是同一个Handle
你可以试试 if( GetDlgItem(IDC_EDIT1)->GetSafeHandle() == pWnd->GetSafeHandle() )
2013-02-01 08:25
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
if(GetDlgItem(IDC_EDIT1) == pWnd) 这个大多数情况下是不能成立的。
GetDlgItem(IDC_EDIT1)返回的可能是临时被创建的。

下面是msdn上面的说法

Return Value

--------------------------------------------------------------------------------



A pointer to the given control or child window. If no control with the integer ID given by the nID parameter exists, the value is NULL.

The returned pointer may be temporary and should not be stored for later use.


我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-02-01 12:20
快速回复:求助OnCtlColor的第二个参数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022500 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved