OS:Win7的後的Win32列表框不LB_ADDSTRING消息
SendMessage消息(hwndListData,LB_ADDSTRING,0,(LPARAM)szListMainBuffer)
列表框沒有更新其區域;
如果將鼠標光標懸停在空白行上,該空白行應包含來自szListMainBuffer的文本並單擊,則會顯示文本。我試圖使用UpdateWindow(),InvalidateRect()函數針對hwndListData和父窗口,沒有任何效果。
有人知道如何解決字符串插入後刷新列表框?
hwndListData = CreateWindow(TEXT("listbox"), L"Data List",
WS_CHILDWINDOW | WS_VISIBLE | LBS_NOTIFY | WS_VSCROLL | WS_HSCROLL | WS_BORDER,
cxChar * 50, cyChar,
cxChar * 38 + GetSystemMetrics(SM_CXVSCROLL), cyChar * 26 + GetSystemMetrics(SM_CYHSCROLL),
hwnd, (HMENU) ID_LISTDATA,
(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
NULL);
增加:
Global scope: WNDPROC oldListDataProcedure;
During WM_CREATE: oldListDataProcedure = (WNDPROC) SetWindowLong (hwndListData, GWL_WNDPROC, (LPARAM) ListDataProc);
LRESULT CALLBACK ListDataProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
return CallWindowProc(oldListDataProcedure, hwnd, message, wParam, lParam);
}
它280行..所以沒有發佈:)低於它,只是父母的客戶區。當我調整它的大小時,文字會出現。 – 2010-10-10 11:17:20
嗯...做了什麼特別的控制(如子類)? – 2010-10-10 11:22:23
是的。 WNDPROC oldListDataProcedure;如你所見,胸圍還沒有。 oldListDataProcedure =(WNDPROC)SetWindowLong(hwndListData,GWL_WNDPROC,(LPARAM)ListDataProc); LRESULT CALLBACK ListDataProc \t(HWND HWND,UINT消息,WPARAM wParam參數,LPARAM lParam的) { \t返回CallWindowProc的(oldListDataProcedure,HWND,消息的wParam,LPARAM); } – 2010-10-10 11:51:30