您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: