【发布时间】:2011-04-23 10:21:06
【问题描述】:
操作系统:Win7
列表框在
之后没有更新其区域SendMessage(hwndListData, LB_ADDSTRING, 0, (LPARAM) szListMainBuffer);
如果鼠标光标悬停在应该包含来自 szListMainBuffer 的文本的空白行上并单击,则会出现文本。我尝试使用针对 hwndListData 和父窗口的 UpdateWindow()、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);
}
【问题讨论】: