社区
界面
帖子详情
WTL CTabViewImpl 重绘Tab控件
imlmy
2011-10-24 03:26:08
我先实现一个自定义的Tab View控件,继承自CTabViewImpl,重绘其Tab标签。发现CTabViewImpl的CTabCtrl m_tab成员变量就是其tab标签,但是我用自定义的TabCtrl类SubclassWindow(m_tab),实现tab的重绘,发现不会调用自定义类的绘制函数,还是调用了CTabCtrl中的绘制函数。
...全文
435
8
打赏
收藏
WTL CTabViewImpl 重绘Tab控件
我先实现一个自定义的Tab View控件,继承自CTabViewImpl,重绘其Tab标签。发现CTabViewImpl的CTabCtrl m_tab成员变量就是其tab标签,但是我用自定义的TabCtrl类SubclassWindow(m_tab),实现tab的重绘,发现不会调用自定义类的绘制函数,还是调用了CTabCtrl中的绘制函数。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
imlmy
2011-10-25
打赏
举报
回复
BEGIN_MSG_MAP(CZyTabCtrl)
REFLECT_NOTIFICATIONS()
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
MESSAGE_HANDLER(WM_DRAWITEM, OnDrawItem)
MESSAGE_HANDLER(WM_SIZE, OnSize)
END_MSG_MAP()
是不是这样加,还是没反应。我在上面下了断点,如果有消息的话不管有没有自定义处理函数都会运行到该断点,但是现在只在控件Destroy时候才有消息
康斯坦汀
2011-10-25
打赏
举报
回复
3楼说的对,要在BEGIN_MSG_MAP中加入REFLECT_NOTIFICATIONS(),否则子控件收不到消息。
healer_kx
2011-10-25
打赏
举报
回复
父窗口有这个 宏吗?
REFLECT_NOTIFICATIONS()
imlmy
2011-10-25
打赏
举报
回复
目前只能收到Destroy消息,其他WM_PAINT等消息收不到
imlmy
2011-10-25
打赏
举报
回复
自己顶一下
imlmy
2011-10-25
打赏
举报
回复
找到原因了,程序里面有两个View类,一个是CTabView,另一个是自定义的view类,继承自CTabViewImpl。CTabView管理所有的自定义view对象。之前是子类化了自定义view类的tab控件,实际界面上的tab控件是属于CTabView的。低级的错误。
谢谢各位的帮助
imlmy
2011-10-25
打赏
举报
回复
我是重载了一个tab控件,想响应他的WM_PAINT消息进行重绘。我用subclasswindow方法子类化那个控件,但是没有办法响应他的绘制消息,只响应到销毁的消息。我使用wtl
康斯坦汀
2011-10-25
打赏
举报
回复
在的地方不对吧,应该这样:
比如你有一个窗体,窗体上面有一个子控件,需要子控件处理消息,要在窗体的消息映射里加
REFLECT_NOTIFICATIONS(),然后子控件的消息可以被处理:
例如:
BEGIN_MSG_MAP(CCaptionWnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
MESSAGE_HANDLER(WM_SYSCOLORCHANGE, OnSysColorChange)
MESSAGE_HANDLER(WM_SIZE, OnSize)
COMMAND_ID_HANDLER(IDC_FLAT_BUTTON, OnFlatButton)
REFLECT_NOTIFICATIONS() // required by owner drawn buttons
MESSAGE_HANDLER(WM_COMMAND, OnCommand)
END_MSG_MAP()
CCaptionWnd 是一个窗口,IDC_FLAT_BUTTON是上面的一个自绘的按钮子控件。
WTL
控件
库 v1.3
WTL
控件
库 源码及demo 该demo暂时只演示了button 按钮。
重绘
CButton按钮
控件
该源码主要介绍如何继承CButton::DrawItem
重绘
按钮
控件
使用
WTL
进行Windows桌面应用开发-第二部
1. 在第一部基础上增加更深入的内容,比如
WTL
提供的标准Win32窗口和自定义窗口的使用方式.2. 涉及到一些项目开发难题的窗口自定义的解决方案。3. 涉及到Gdiplus绘图的项目开发难题的一些解决方案。4. 推荐使用的第三方跨平台库, 虽然
WTL
是基于Windows的,但是不妨碍我们使用第三方的库进行开发,减少跨平台开发的学习成本。5.
WTL
是对Win32窗口的薄封装,库是原微软员工开发,是MFC的替代选择。掌握了
WTL
表示你已经基本掌握了Win32的窗口编程.6. 使用
WTL
库完全使用C++开发,不需要其他编程语言,减少学习成本和复杂度,整个
WTL
是开源可控的。7.
WTL
库只能使用VS2005以上版本开发, 因为它依赖ATL库. 不同的VS版本对应的atl版本不一致,建议使用VS2010以上版本开发.
WTL
自绘日历
基于
WTL
自绘编写的日历
控件
,可自行修改
控件
,方便使用!
Wtl
vc 二级联动
控件
分享一个自己写的选项空间 暂时只支持二级联动
wtl
。最近在学
wtl
就写写了。
界面
15,978
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章