|
网站首页
|
JAVA文章
|
AppServers
|
Web开发
|
应用开发
|
资源下载
|
论坛
想学好编程,学好外语很重要 [enadd 2006年12月25日]
设为首页
加入收藏
联系站长
您现在的位置:
编程笔记网
>>
应用开发
>>
vc
>>
CC++MFC
>> 文章正文
WTL for MFC Programming实践篇 --- 一个自定义ComboBox的移植过程(上)
【字体:
小
大
】
WTL for MFC Programming实践篇 --- 一个自定义ComboBox的移植过程(上)
作者:- 文章来源:- 点击数: 更新时间:2006-12-2
break;
case WM_VKEYTOITEM:
case WM_CHARTOITEM:
case WM_HSCROLL:
case WM_VSCROLL:
hWndChild = (HWND)lParam;
break;
case WM_CTLCOLORBTN:
case WM_CTLCOLORDLG:
case WM_CTLCOLOREDIT:
case WM_CTLCOLORLISTBOX:
case WM_CTLCOLORMSGBOX:
case WM_CTLCOLORSCROLLBAR:
case WM_CTLCOLORSTATIC:
hWndChild = (HWND)lParam;
break;
default:
break;
}
if(hWndChild == NULL)
{
bHandled = FALSE;
return 1;
}
ATLASSERT(::IsWindow(hWndChild));
return ::SendMessage(hWndChild, OCM__BASE + uMsg, wParam, lParam);
}
参看ATL文件<atlwin.h>
我们感兴趣的是最后一句,控件接收到的是ID = OCM__BASE + WM_DRAWITEM的消息,那么我们可以让控件直接接收消息(OCM__BASE + WM_DRAWITEM),用于取代使用不起作用的MSG_OCM_DRAWITEM。于是有了下面的代码:
MESSAGE_HANDLER_EX(OCM__BASE + WM_DRAWITEM, OnDrawItem)
但是结果还是一样 - 重画事件没有被触发。
幸亏我们有了新的发现,否则有可能就没由信心解决这个问题了。我们在CMainDlg中添加了WM_DRAWITEM事件,结果捕抓到了CComboBoxEx的重画事件,这说明CComBoxEx的重画事件发出了,但不知什么原因没有反射回控件。于是我们在CMainDlg::OnDrawItem()中添加了
SendMessage(m_cmbEx.m_hWnd, OCM__BASE + WM_DRAWITEM, 0, 0)
以取代REFLECT_NOTIFICATIONS宏所做的自动反射,结果发现,事件还是没有收到。难道WTL事件处理出了问题?我们又为CComboBoxEx添加了非反射的事件WM_PAINT,结果发现WM_PAINT事件也没有被触发!!!
CComboBoxEx根本无法收到任何事件!!!!!
上一页
[1]
[2]
[3]
[4]
文章录入:enadd 责任编辑:enadd
上一篇文章:
WTL for MFC Programming实践篇 --- 一个自定义ComboBox的移植过程(下)
下一篇文章:
用Viusal C++实现字符串分割函数
【
发表评论
】【
加入收藏
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
最新热点
最新推荐
相关文章
转:从VC++到GCC移植:谈两者…
Visual C++编译器常用选项设…
在VisualStudio中使用Window…
VC++开发的应用技巧三则放送
VC调试入门
Visual C++编程窃取QQ密码
VC时间控制函数
WTL for MFC Programming实践…
ATL ActiveX控件中用WTL::CB…
VC常用知识
网友评论:
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
|
设为首页
|
加入收藏
|
联系站长
|
友情链接
|
版权申明
|
管理登录
|
Copyright ©2000 - 2005
Enadd
.com
备案序号:辽ICP备06005595号
QQ:1656107
站长:
enadd