win32 sdk绘制ListBox控件

1》产生:

  1. //
  2. HWND CreateLB(HWND parentWnd)
  3. {
  4. HWND hListBox=0;
  5. hListBox = CreateWindow("LISTBOX",
  6. NULL,
  7. WS_CHILD|WS_VSCROLL | WS_TABSTOP | LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,
  8. 230, 20, 60, 80,
  9. parentWnd, (HMENU)IDC_LISTBOX,
  10. (HINSTANCE) GetWindowLong(parentWnd, GWL_HINSTANCE),
  11. NULL);
  12. ShowWindow(hListBox,SW_SHOW);
  13. SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"你好");
  14. SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"我好");
  15. SendMessage(hListBox,LB_ADDSTRING ,0,(LPARAM)"他好");
  16. //
  17. return hListBox;
  18. }
2》指定size:
 
  1. case WM_MEASUREITEM://ODT_LISTBOX
  2. if((UINT) wParam==IDC_LISTBOX)
  3. {
  4. LPMEASUREITEMSTRUCT lpmis = (LPMEASUREITEMSTRUCT) lParam;
  5. lpmis->itemWidth=400;
  6. lpmis->itemHeight=22;
  7. }
  8. break;
3》画:
 
  1. case WM_DRAWITEM:
  2. if((UINT) wParam==IDC_LISTBOX)
  3. {
  4. LPDRAWITEMSTRUCT pDI=(LPDRAWITEMSTRUCT) lParam;
  5. HBRUSH brsh=CreateSolidBrush(RGB(255-30*pDI->itemID, 128+40*pDI->itemID, 128+40*pDI->itemID));//yellow
  6. FillRect(pDI->hDC,&pDI->rcItem,brsh);
  7. DeleteObject(brsh);
  8. // text
  9. SetBkMode(pDI->hDC,TRANSPARENT);
  10. char szText[260];
  11. SendMessage(m_hListBox,LB_GETTEXT,pDI->itemID,(LPARAM)szText);
  12. const DWORD dwStyle = DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_END_ELLIPSIS;
  13. DrawText(pDI->hDC, szText, strlen(szText), &pDI->rcItem, dwStyle);
  14. }
  15. break;
4》要点:| LBS_OWNERDRAWFIXED | LBS_HASSTRINGS,

http://www.cnblogs.com/lidabo/p/3701607.html

上一篇:C/C++预处理指令#define,#ifdef,#ifndef,#endif…


下一篇:将redis作为windows系统的系统服务