在我用鼠标触摸richedit 窗口之前,它的内容是实时更新的,但是将鼠标悬停在它上面会将箭头变成沙漏光标。然后,该窗口不会对随后通过标题栏移动它的三到四次尝试做出反应。当它最终对鼠标拖动做出反应时,它移动正常但停止刷新其内容并且标题栏变为空。类似的效果是当我尝试单击窗口的客户区时。这次点击几下后没有反应窗口也停止更新,其标题栏变为(不响应)。
当循环最终停止时,程序会返回窗口更新并“活着”返回。在更新客户区时如何操作窗口(并看到它正在更新内容)?
#include <windows.h>
#include <sstream>
int main() {
using namespace std;
LoadLibrary("Msftedit.dll");
HWND richeditWindow = CreateWindowExW (
WS_EX_TOPMOST,
L"RICHEDIT50W",
L"window text",
WS_SYSMENU | WS_VSCROLL | ES_MULTILINE | ES_NOHIDESEL | WS_VISIBLE,
50, 50, 500, 500,
NULL, NULL, NULL, NULL
);
for (int i = 0 ; i<100000; i++) {
wstringstream wss;
wss << i << L", ";
SendMessageW(richeditWindow, EM_REPLACESEL, FALSE, (LPARAM) wss.str().c_str());
}
MSG msg;
while( GetMessageW( &msg, richeditWindow, 0, 0 ) ) {
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}