WTL:如何绘制ComboBox
来源:互联网 发布:linux 复制文件夹 编辑:程序博客网 时间:2024/06/01 23:11
首先给大家介绍一个csdn博客关于ComboBox的组成和如何绘制的介绍。
http://blog.csdn.net/fengbangyue/article/details/5222124
我要绘制的是drop list模式的ComboBox。
直接上代码:
//下拉列表框class ComboBox : public CWindowImpl<ComboBox,CComboBox>,public COwnerDraw<ComboBox>{public:BEGIN_MSG_MAP(ComboBox)MSG_WM_ERASEBKGND(OnEraseBkgnd)MSG_WM_PAINT(OnPaint)CHAIN_MSG_MAP_ALT(COwnerDraw<ComboBox>,1)DEFAULT_REFLECTION_HANDLER()END_MSG_MAP()BOOL OnEraseBkgnd(CDCHandle dc){return TRUE;}void OnPaint(CDCHandle)//绘制那个按钮{CPaintDC dc(m_hWnd);CRect rc;GetClientRect(&rc);HBRUSH hBrush = CreateSolidBrush(RGB(200,200,250));dc.FillRect(&rc,hBrush);TCHAR str[255];GetWindowTextW(str,255);if(CString(str).IsEmpty() == FALSE){CFont font;font.CreatePointFont(110,L"华文行楷");dc.SelectFont(font);dc.SetBkMode(TRANSPARENT);rc.left += 5;dc.DrawTextW(str,-1,&rc,DT_VCENTER | DT_SINGLELINE | DT_LEFT);}DeleteObject(hBrush);}void DrawItem(LPDRAWITEMSTRUCT lpdis){//ATLTRACE("ComboBox::DrawItem\r\n");int index = lpdis->itemID;if(index < 0)return;CDCHandle dc(lpdis->hDC);CRect rc = lpdis->rcItem;TCHAR sz[255] = { 0 };GetLBText(index,sz);if(lpdis->itemState & ODS_SELECTED){dc.Draw3dRect(&rc,RGB(0,0,255),RGB(0,0,255));dc.SetTextColor(RGB(200,0,0));}else{HBRUSH hBrush = CreateSolidBrush(RGB(255,255,255));dc.FillRect(&rc,hBrush);dc.SetTextColor(RGB(0,0,0));DeleteObject(hBrush);}dc.SetBkMode(TRANSPARENT);rc.left += 5;dc.DrawTextW(sz,-1,&rc,DT_VCENTER | DT_SINGLELINE | DT_LEFT);}void MeasureItem(LPMEASUREITEMSTRUCT lpmis){//ATLTRACE("ComboBox::MeasureItem\r\n");if(lpmis->itemID < 0)//是按钮lpmis->itemHeight = 25;//如果是子类化,改动无效elselpmis->itemHeight = 25;}};
效果如下:
- WTL:如何绘制ComboBox
- 在MFC/WTL中如何绘制Gif动态图片
- WTL绘制自定义控件
- 关于ComboBox的自绘制
- 用WTL实现自定义绘制控件
- WTL 自绘ComboBox改变颜色和大小
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS2005下如何安装WTL
- VS如何安装WTL模板
- VS如何安装WTL模板
- ComboBox如何禁止编辑
- C# combobox 如何赋值
- C# 绘制ComboBox控件图片列表
- WTL
- Oracle入门:Order By 和Group By 的基本用法
- 类SVN的多平台数据同步系统服务器端设计
- Ext.Net 1.x_Ext.Net.GridPanel之右键菜单
- 数据库索引 ,sql视图的作用(2012-05-29 11:42:17)
- setjmp,longjmp,isgsetjmp,siglongjump
- WTL:如何绘制ComboBox
- [转]推荐给 JavaScript 开发者十款超级有用的工具
- linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解
- Android将允许纯C/C++开发应用
- SQL Server优化的方法<二>
- 从URL加载图像
- 位图排序
- c 常量 const
- 尾递归