操作系统:Win7
后,
列表框未更新其区域
SendMessage(hwndListData,LB_ADDSTRING,0,(LPARAM)szListMainBuffer);
如果鼠标光标悬停在应包含szListMainBuffer文本的空白行上并单击,则会显示文本。我已经尝试使用UpdateWindow(),针对hwndListData和父窗口的InvalidateRect()函数,但没有效果。
有人知道在插入字符串后如何解决列表框的刷新问题吗?
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);
}
答案 0 :(得分:1)
它应该自行更新。 UpdateWindow和InvalidateRect无法正常工作的事实告诉我错误可能在您的代码中的其他位置。如果它很小,请随意发布。列表框是否位于任何其他控件之上?调整窗口大小时会发生什么?
答案 1 :(得分:0)
要解决此问题,请转到列表框控件属性,然后将 NoRedraw 从 true 更改为 false 。