マウスでリッチエディット ウィンドウに触れるまで、その内容はライブ更新されますが、マウスをその上に置くと、矢印が砂時計カーソルに変わります。ウィンドウは、タイトル バーでウィンドウを移動しようとして 3 回または 4 回試行しても反応しません。最終的にマウスのドラッグに反応すると、正常に動作しますが、コンテンツの更新が停止し、タイトル バーが空になります。同様の効果は、ウィンドウのクライアント領域をクリックしようとしたときです。今回は、反応ウィンドウなしで数回クリックした後も更新が停止し、タイトルバーが(応答なし)に変わります。
ループが最終的に停止すると、プログラムはウィンドウの更新に戻り、「生きている」状態に戻ります。クライアント領域が更新されている間にウィンドウを操作できるようにする (そして、更新されているコンテンツを確認する) にはどうすればよいですか?
#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);
}
}