win32 sdk绘制ListBox控件

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,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值