とりわけ、コンソール ウィンドウのサイズを変更し、ウィンドウの境界線を削除するプログラムを作成しました (ほとんどの場合、ウィンドウ スタイルを WS_POPUP に設定します)。
私のコンピューターでは、アプリケーションは問題なく実行されますが、別のコンピューター (または VirtualBox) でコードを実行すると、ファンキーな不具合が発生します。
これは、私が話しているこれらの不具合を示す画像です。
これらの不具合は、ユーザーがウィンドウをコンソール ウィンドウの上に移動または開いてから、コンソール ウィンドウを再び一番上に移動した場合に発生します。
当然のことながら、この問題を解決する最も簡単な方法は、コンソール ウィンドウを常に最前面に表示することだと思いましたが、それは役に立ちませんでした。なぜなら、グリッチは、新しいウィンドウの前にあったものから「背景」を取得するだけだからです。ウィンドウがコンソール ウィンドウの上(または下)に移動/開かれました。
グリッチ領域がどこかにキャッシュ/保存されているようで、ウィンドウのサイズが変更されたことに気付きません。
GetClientRect(hWnd, &rClnt);
rClnt.top += 1;
rClnt.bottom -= 2;
rClnt.right -= 1;
SetWindowRgn(hWnd, CreateRectRgnIndirect(&rClnt), 1);
SetWindowLongPtr(hWnd, GWL_STYLE, WS_POPUP);
exStyle = GetWindowLongPtr(hWnd, GWL_EXSTYLE);
exStyle &= ~WS_EX_CLIENTEDGE;
SetWindowLongPtr(hWnd, GWL_EXSTYLE, exStyle);
BringWindowToTop(hWnd);
SetWindowPos(hWnd, HWND_TOPMOST, ((rScr.right / 2) - rWnd.right / 2) - 1, (rScr.bottom / 2) - rWnd.bottom / 2, 0, 0, SWP_FRAMECHANGED | SWP_DRAWFRAME | SWP_NOSIZE);// After this I just use ShowWindow().