win32實現ListBox自繪

2021-10-20 02:36:50 字數 971 閱讀 9635

在createwindowex建立視窗時,需要對引數dwstyle設定上lbs_ownerdrawfixed | lbs_hasstrings這兩個屬性。並且需要在建立listbox視窗的父視窗中處理wm_drawitem和wm_measureitem兩個訊息進行列表框的重繪。

lbs_ownerdrawfixed:指定列表框的父視窗負責繪製其內容,並且列表框中的專案具有相同的高度。建立列表框時,父視窗將收到wm_measureitem訊息;如果列表框的外觀已發生更改,則父視窗將收到wm_drawitem訊息。

也可以根據需要用lbs_ownerdrawvariable替換lbs_ownerdrawfixed。lbs_ownerdrawvariable指定也是用於列表框的父視窗負責繪製其內容,另外列表框中的條目的高度可變。

lbs_hasstrings:如果不設定lbs_hasstrings,那麼通過lb_gettext訊息或者listbox_gettext方法取得的字串將是亂碼

//建立listbox

hwnd hwndlistbox =createwindowex(0, wc_listbox, l"",

ws_visible | ws_child | ws_vscroll | ws_border | ws_tabstop | lbs_notify | lbs_ownerdrawfixed | lbs_hasstrings,//如果不設定lbs_hasstrings,那麼gettext取得的將是亂碼

20, 20, 360, 240, hwnd, nullptr,getmodulehandle(nullptr), nullptr);

//新增資料

for (int i = 0; i < 10; i++)

//在父視窗中處理wm_drawitem訊息實現列表條目的自繪

case wm_drawitem:

break;

Win32中的listbox學習

列表框樣式 visual studio 2013 其他版本 當列表框不包含足夠的項滾動時,lbs disablenoscroll列表框顯示乙個禁用的垂直滾動條。若無此樣式,當列表框不包含足夠的項時,滾動條將隱藏。使用 shift 鍵和滑鼠或特定組合鍵lbs extendedsel,使用者可以選擇多個...

Win32 自繪Button的實現方法

win32 自繪button 的實現方法 由於不會 mfc來繪製按鍵,只能通過 win32 來繪製按鍵。那麼如何實現自定義按鍵了,首先你需要做的事情 1.根據按鍵的大小設計好圖形大小,和圖形的填充色 填充色是為了實現同明效果而必需的 2.建立按鍵的時候,需要定義 bs ownerdraw 格式,也就...

win32實現檔案追加

實現原理 開啟兩個檔案,迴圈讀取要追加的檔案內容,然後寫入到要被追加檔案的末尾 相關api createfile setfilepointerex readfile writefile funname filecat param szexistsfilepath 要被追加的檔案路徑 szaddfil...