创建窗口非WIN7 AERO模式下窗口被遮罩出有关问题
创建窗口非WIN7 AERO模式下窗口被遮罩出问题
我只要把这个窗口隐藏或者用其他图片程序覆盖后 我截图这个窗口就回出问题,也就是我看到时什么样 截图就是什么样的。
为什么会这样,WIN7 AERO 模式下没问题,如果我吧AERO 关闭就出这个问题了
我哪儿参数没设置对吗?
------解决思路----------------------
应该是你的程序没有正确处理WM_PAINT消息吧。
另外这个创建过程很奇怪,没有必要创建了窗口再SetWindowLong,你可以直接在CreateWindow时指定Style和StyleEx啊。不用那个WS_OVERLAPPEDWINDOW就行了。
HINSTANCE hInstance(AfxGetInstanceHandle());
WNDCLASS wc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hInstance = hInstance;
wc.lpfnWndProc = WinProc;
wc.lpszClassName = L"FakeWnd";
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW | CS_NOCLOSE;
RegisterClass(&wc);
m_wndParent = CreateWindow(L"FakeWnd", L"", WS_OVERLAPPEDWINDOW, 0, 0, 320, 240, ::GetDesktopWindow(), NULL, hInstance, NULL);
if (m_wndParent == NULL)return wlet(FALSE, L"CreateWindow() failed.");
::SetWindowLong(m_wndParent, GWL_STYLE, (GetWindowLong(m_wndParent, GWL_STYLE) & (~(WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_THICKFRAME | WS_BORDER))) | WS_DLGFRAME);
::SetWindowLong(m_wndParent, GWL_EXSTYLE, GetWindowLong(m_wndParent, GWL_EXSTYLE) | WS_EX_TOOLWINDOW);
return TRUE;
我只要把这个窗口隐藏或者用其他图片程序覆盖后 我截图这个窗口就回出问题,也就是我看到时什么样 截图就是什么样的。
为什么会这样,WIN7 AERO 模式下没问题,如果我吧AERO 关闭就出这个问题了
我哪儿参数没设置对吗?
------解决思路----------------------
应该是你的程序没有正确处理WM_PAINT消息吧。
另外这个创建过程很奇怪,没有必要创建了窗口再SetWindowLong,你可以直接在CreateWindow时指定Style和StyleEx啊。不用那个WS_OVERLAPPEDWINDOW就行了。