win32 sdk绘制ListBox控件
2016-04-18 00:53
351 查看
1》产生:
//
HWND CreateLB(HWND parentWnd)
{
HWND hListBox=0;
hListBox = CreateWindow("LISTBOX",
NULL,
WS_CHILD|WS_VSCROLL | WS_TABSTOP | LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,
230, 20, 60, 80,
parentWnd, (HMENU)IDC_LISTBOX,
(HINSTANCE) GetWindowLong(parentWnd, GWL_HINSTANCE),
NULL);
ShowWindow(hListBox,SW_SHOW);
SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"你好");
SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"我好");
SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"他好");
//
return hListBox;
}
2》指定size:
case WM_MEASUREITEM://ODT_LISTBOX
if((UINT) wParam==IDC_LISTBOX)
{
LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT) lParam;
lpmis->itemWidth=400;
lpmis->itemHeight=22;
}
break;
3》画:
case WM_DRAWITEM:
if((UINT) wParam==IDC_LISTBOX)
{
LPDRAWITEMSTRUCT pDI=(LPDRAWITEMSTRUCT) lParam;
HBRUSH brsh=CreateSolidBrush(RGB(255-30*pDI->itemID, 128+40*pDI->itemID, 128+40*pDI->itemID));//yellow
FillRect(pDI->hDC,&pDI->rcItem,brsh);
DeleteObject(brsh);
// text
SetBkMode(pDI->hDC,TRANSPARENT);
char szText[260];
SendMessage(m_hListBox,LB_GETTEXT,pDI->itemID,(LPARAM)szText);
const DWORD dwStyle = DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_END_ELLIPSIS;
DrawText(pDI->hDC, szText, strlen(szText), &pDI->rcItem, dwStyle);
}
break;
4》要点:| LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,
http://www.cnblogs.com/lidabo/p/3701607.html
//
HWND CreateLB(HWND parentWnd)
{
HWND hListBox=0;
hListBox = CreateWindow("LISTBOX",
NULL,
WS_CHILD|WS_VSCROLL | WS_TABSTOP | LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,
230, 20, 60, 80,
parentWnd, (HMENU)IDC_LISTBOX,
(HINSTANCE) GetWindowLong(parentWnd, GWL_HINSTANCE),
NULL);
ShowWindow(hListBox,SW_SHOW);
SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"你好");
SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"我好");
SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"他好");
//
return hListBox;
}
2》指定size:
case WM_MEASUREITEM://ODT_LISTBOX
if((UINT) wParam==IDC_LISTBOX)
{
LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT) lParam;
lpmis->itemWidth=400;
lpmis->itemHeight=22;
}
break;
3》画:
case WM_DRAWITEM:
if((UINT) wParam==IDC_LISTBOX)
{
LPDRAWITEMSTRUCT pDI=(LPDRAWITEMSTRUCT) lParam;
HBRUSH brsh=CreateSolidBrush(RGB(255-30*pDI->itemID, 128+40*pDI->itemID, 128+40*pDI->itemID));//yellow
FillRect(pDI->hDC,&pDI->rcItem,brsh);
DeleteObject(brsh);
// text
SetBkMode(pDI->hDC,TRANSPARENT);
char szText[260];
SendMessage(m_hListBox,LB_GETTEXT,pDI->itemID,(LPARAM)szText);
const DWORD dwStyle = DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_END_ELLIPSIS;
DrawText(pDI->hDC, szText, strlen(szText), &pDI->rcItem, dwStyle);
}
break;
4》要点:| LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,
http://www.cnblogs.com/lidabo/p/3701607.html
相关文章推荐
- PE格式的理解(待补充)
- VMvare版本10.0.7, Ubuntu 版本1404下安装vmtools 以后共享hgfs下为空的解决方案
- BZOJ4538 : [Hnoi2016]网络
- window下连接linux虚拟机里面的mysql连不上
- hdu4466 将长度为n线段瓜分成若干个相似三角形,有多少种分法(划分dp)
- 【Leetcode】5.Longest Palindromic Substring 解题
- C++之多态
- HDOJ(HDU) 1491 Octorber 21st
- HDOJ(HDU) 1491 Octorber 21st
- 监听键盘状态
- 磁盘和文件系统管理(二)
- TransparentBlt、StretchBlt与BitBlt三个函数的区别
- Android 热修补方案(AndFix)
- 如何在一个jpg图片上面叠加文字
- Java正则表达式
- SQL Server 父子迭代查询语句,树状查询(转)
- 岁月蹉跎
- Mysql命令行添加用户
- C++混合编程之idlcpp教程Lua篇(7)
- sublime text 插件