动态创建自绘的CListBox注意事项
Create(WS_VISIBLE|WS_CHILD|LBS_NOTIFY|LBS_OWNERDRAWFIXED|LBS_HASSTRINGS|LBS_NOINTEGRALHEIGHT ,rcWnd,this,xxx);
如果想要响应ON_LBN_SELCHANGE消息,则一定要加LBS_NOTIFY;
如果想要自绘风格则加LBS_OWNERDRAWFIXED;
如果碰到DrawItem的时候,GetText获取不到正常的字符串的时候,则要加LBS_HASSTRINGS;
如果碰到改变列表框大小的时候,列表框高度不对劲,则要加LBS_NOINTEGRALHEIGHT;
顺便贴出自绘代码段:
void CMyListBox::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
if ((int)lpDIS->itemID < 0)
return; TCHAR ch[64] = {0};
GetText(lpDIS->itemID, ch); CDC* pDC = CDC::FromHandle(lpDIS->hDC);
CRect rFrame = lpDIS->rcItem;
rFrame.DeflateRect(1,1,1,1); // If item has been selected, draw the highlight rectangle using the item's color.
CBrush brush(RGB(255,255,255));
pDC->FillRect(&rFrame, &brush); if ((lpDIS->itemState & ODS_SELECTED))
{
CBrush brush(RGB(51,153,255));
pDC->FillRect(&rFrame, &brush);
pDC->SetTextColor(RGB(20,0,0));
} int nBkMode = pDC->SetBkMode(TRANSPARENT);
UINT nFormat = DT_LEFT | DT_SINGLELINE | DT_VCENTER;
if (GetStyle() & LBS_USETABSTOPS)
nFormat |= DT_EXPANDTABS;
CFont font;
font.CreatePointFont(120, _T("宋体"));
pDC->SelectObject(&font);
// Calculate the rectangle size before drawing the text.
pDC->DrawText(ch,-1, &rFrame, nFormat);
pDC->SetBkMode(nBkMode); DeleteObject(&font);
}
动态创建自绘的CListBox注意事项的更多相关文章
- VC++ 动态创建单个工具条,并加载外部的位图(bmp)文件为工具栏图像
		步骤: 1, 在框架类CMainFrame头文件里,增加图像变量和工具条变量. CMFCToolBarImages m_UserImages; CMFCToolBar m_wndToolBar; 2, ... 
- mfc 动态创建EDIT控件
		知识点: CWnd::Create CWnd::CreateEx Spy++工具 动态创建控件 一. CWnd::Create 参数 virtual BOOL Create( LPCTSTR lpsz ... 
- js入门之DOM动态创建数据
		一. 知识点回顾 1. DOM结构 nodeName: '' 标签名 nodeType: '' 类型 1元素节点 2属性节点 3文本节点 nodeValue: '' 如果是元素节点 nodeValue ... 
- Python中type()详解:动态创建类
		众所周知: type()函数可以查看变量的类型: 先看一个简单的列子来看一下type查看变量类型 class Animal(): pass a=Animal() print(type(a)) prin ... 
- JavaScript dom 动态创建标记
		此前的大多数DOM都是用来查找元素,getElementById和getElementsByTagName都可以方便快捷的找到文档中的某个或者某些特定的元素节点,这些元素随后可以用诸如setAttri ... 
- ios动态创建类Class
		[Objective-C Runtime动态加载]---动态创建类Class 动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法 a.使用objc_al ... 
- winform 用户控件、 动态创建添加控件、timer控件、控件联动
		用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ... 
- python动态创建类的声明
		动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类 ... 
- Python 动态创建函数【转】
		知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简 ... 
随机推荐
- docker相关内容
			原文地址:https://www.cnblogs.com/zhuochong/category/1310443.html 
- 学习数据结构Day1
			数据结构的分类: 线性结构 数组:栈:队列:链表:哈希表:... 树结构 二叉树:二分查找树:AVL;红黑树:Treap:Splay:堆:栈:Trie:线段树:K-D树:并查集:哈夫曼 ... 
- WPS应用技巧
			打开云文档的文件:文件-打开-我的云文档 (选择时的文档为PDF时仅扫描PDF文件) 
- 【剑指offer】链表中的倒数第k个结点
			输入一个链表,输出该链表中倒数第k个结点. 分析: 定义两个结点p1和p2都指向头节点,p1先走k-1步,然后p1和p2一起走,当p1走到链表尾部时,p2指向的结点就是倒数第k个结点 遍历一遍链表即可 ... 
- React 的高级用法(Children、Component、createElement、cloneElement)
			React.Children props.children 代表了所有的子节点. React.Children 用于处理 props.children 的 提供了几个方法 ( map ,foreach ... 
- [笔记] 命令行参数 int main(int argc,char *argv[])
			int main(int argc,char *argv[]) // argument count 变量个数 argument values 变量值 C程序的main函数有两个形参* argc:整数, ... 
- centos7搭建gitlab仓库
			在有一些企业里会搭建属于自己的代码仓库,只能内网访问,所以说今天在centos7中搭建了一个gitlab仓库,大家也可以搭建一个玩一玩.呵呵 1.首先安装依赖软件包和开启ssh服务: sudo yum ... 
- 【写法】为什么if判断中,值要倒着写
			=============================================== 2019/8/27_第1次修改 ccb_warlock == ... 
- C# 练习题 将一个正整数分解质因数
			题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程 ... 
- 阿里巴巴 Java 开发手册  (八) 注释规约
			1. [强制]类.类属性.类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用 //xxx 方式. 说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Ja ... 
