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注意事项的更多相关文章

  1. VC++ 动态创建单个工具条,并加载外部的位图(bmp)文件为工具栏图像

    步骤: 1, 在框架类CMainFrame头文件里,增加图像变量和工具条变量. CMFCToolBarImages m_UserImages; CMFCToolBar m_wndToolBar; 2, ...

  2. mfc 动态创建EDIT控件

    知识点: CWnd::Create CWnd::CreateEx Spy++工具 动态创建控件 一. CWnd::Create 参数 virtual BOOL Create( LPCTSTR lpsz ...

  3. js入门之DOM动态创建数据

    一. 知识点回顾 1. DOM结构 nodeName: '' 标签名 nodeType: '' 类型 1元素节点 2属性节点 3文本节点 nodeValue: '' 如果是元素节点 nodeValue ...

  4. Python中type()详解:动态创建类

    众所周知: type()函数可以查看变量的类型: 先看一个简单的列子来看一下type查看变量类型 class Animal(): pass a=Animal() print(type(a)) prin ...

  5. JavaScript dom 动态创建标记

    此前的大多数DOM都是用来查找元素,getElementById和getElementsByTagName都可以方便快捷的找到文档中的某个或者某些特定的元素节点,这些元素随后可以用诸如setAttri ...

  6. ios动态创建类Class

    [Objective-C Runtime动态加载]---动态创建类Class 动态创建类Class,动态添加Class成员变量与成员函数,动态变量赋值与取值,动态函数调用等方法 a.使用objc_al ...

  7. winform 用户控件、 动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  8. python动态创建类的声明

    动态创建类的声明 使用内置函数type,原型:class type(name, bases, dict)name是类的名字,相当于__class__bases是类的基类,元组,可以有多个基类,但是基类 ...

  9. Python 动态创建函数【转】

    知乎上也有相似的问题 偶然碰到一个问题,初想是通过动态创建Python函数的方式来解决,于是调研了动态创建Python函数的方法. 定义lambda函数 在Python中定义lambda函数的写法很简 ...

随机推荐

  1. Chaikin Curves in Processing

    转自:https://sighack.com/post/chaikin-curves In this post, we’ll look at what Chaikin curves are, how ...

  2. POJ-动态规划-背包问题模板

    背包问题模板 一.0-1背包 状态:背包容量为j时,求前i个物品所能达到最大价值,设为dp[i][j].初始时,dp[0][j](0<=j<=V)为0,没有物品也就没有价值. 状态转移方程 ...

  3. 基于redis+lua实现高并发场景下的秒杀限流解决方案

    转自:https://blog.csdn.net/zzaric/article/details/80641786 应用场景如下: 公司内有多个业务系统,由于业务系统内有向用户发送消息的服务,所以通过统 ...

  4. Graph machine learning 工具

    OGB: Open Graph Benchmark https://ogb.stanford.edu/ https://github.com/snap-stanford/ogb OGB is a co ...

  5. jmeter Dashboard Report

    说明:详情参考:https://jmeter.apache.org/usermanual/generating-dashboard.html JMeter3.0以后引入了Dashboard Repor ...

  6. Java多线程编程(1)--Java中的线程

    一.程序.进程和线程   程序是一组指令的有序集合,也可以将其通俗地理解为若干行代码.它本身没有任何运行的含义,它只是一个静态的实体,它可能只是一个单纯的文本文件,也有可能是经过编译之后生成的可执行文 ...

  7. 网络爬虫第五章之Scrapy框架

    第一节:Scrapy框架架构 Scrapy框架介绍 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自 ...

  8. spark2.2 从入门到精通全套视频教程(含网盘下载地址)

    Spark2.2从入门到精通链接:https://pan.baidu.com/s/1GnPq_p4wOV916REMB_XJ5w 提取码:16zp

  9. 笔记:npm常见错误

    常见错误 破坏的npm安装 随机错误 找不到兼容版本 权限错误 Error: ENOENT, stat 'C:\Users\<user>\AppData\Roaming\npm' 在Win ...

  10. php中的htmlspecialchars_decode()函数

    htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符. <?php $str = "This is some <b>bold&l ...