我有一个简单的Win32程序,可执行以下操作
1)创建一个窗口
HWND hWnd = CreateWindowEx(
WS_EX_LEFT |
WS_EX_LTRREADING |
WS_EX_RIGHTSCROLLBAR |
WS_EX_WINDOWEDGE |
WS_EX_APPWINDOW,
wc.lpszClassName,
L"App Name",
WS_CAPTION |
WS_VISIBLE |
WS_CLIPSIBLINGS |
WS_CLIPCHILDREN |
WS_SYSMENU |
WS_OVERLAPPED |
WS_MINIMIZEBOX, 0, 0, 540, 180, 0, 0, hInstance, NULL);
然后
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
{
HDC hdc;
hdc = BeginPaint(hWnd, &ps);
// code here (not shown) calculates pixel size of text with GetTextExtentPoint32
// resizes window to fit text with MoveWindow
MoveWindow(hWnd, rect.left, rect.top, rect.right - rect.left, height + borderSize, false);
// writes text to window with DrawText
EndPaint(hWnd, &ps);
}
break;
case WM_CLOSE:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
这在桌面上运行正常,没有问题,Window看起来很好,并按预期显示。
但是在RDP上存在以下工件:
如果我最小化远程桌面客户端,并切换回它,则窗口将按预期显示。
其他程序在RDP会话期间不会显示此行为。
RDP客户端在Win10 x64上,目标计算机是Server 2008 R2或Windows 7 SP1 x64。
尝试在MoveWindow中将重绘设置为TRUE,但这没有任何影响。
答案 0 :(得分:0)
通过从我的CreateWindowEx命令中删除WS_VISIBLE来修复此问题,首先调整Window的大小,然后在调整Window调整后调用
ShowWindow(hWnd,SW_SHOW);
我还从WM_PAINT中删除了窗口大小调整,但这并没有解决问题。