【发布时间】:2018-11-16 00:17:19
【问题描述】:
基本上,我正在制作一些模仿屏幕融化效果的东西,但我只能在我的主显示器上让它工作。我已经尽可能多地查找了所有显示器的GetDC论坛,但它没有用,它所做的只是从我的主显示器到我的辅助显示器制作一个矩形,效果仍然只能工作我的主显示器。这是我阅读的主题:GetDC(NULL) gets primary monitor or virtual screen?
LRESULT CALLBACK Melter(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) {
switch (Message) {
case WM_CREATE: {
HDC Desktop = GetDC(HWND_DESKTOP);
HDC Window = GetDC(hWnd);
BitBlt(Window, 0, 0, ScreenWidth, ScreenHeight, Desktop, 0, 0, SRCCOPY);
ReleaseDC(hWnd, Window);
ReleaseDC(HWND_DESKTOP, Desktop);
SetTimer(hWnd, 0, Interval, 0);
ShowWindow(hWnd, SW_SHOW);
break;
}
case WM_PAINT: {
ValidateRect(hWnd, 0);
break;
}
case WM_TIMER: {
HDC Window = GetDC(hWnd);
int uX = (rand() % ScreenWidth) - (150 / 2), uY = (rand() % 15), Width = (rand() % 150);
BitBlt(Window, uX, uY, Width, ScreenHeight, Window, uX, 0, SRCCOPY);
ReleaseDC(hWnd, Window);
break;
}
case WM_DESTROY: {
KillTimer(hWnd, 0);
PostQuitMessage(EXIT_SUCCESS);
break;
}
return EXIT_SUCCESS;
}
return DefWindowProc(hWnd, Message, wParam, lParam);
}
我更改的行是HDC Window = GetDC(Window) to HDC Window = GetDC(NULL),然后是其他一些东西,例如RECT。如果有人可以帮助我,那就太好了,谢谢:)
PS,ScreenWidth = 3600,ScreenHeight = 1080 而 PMScreenWidth = 1920,PMScreenHeight = 1080。PM 与主监视器中一样,所以我将该函数中的所有内容设置为 ScreenWidth/ScreenHeight 所以它的宽度/高度所有显示器。不过还是不行。
【问题讨论】:
-
你试过
EnumDisplayMonitors吗?
标签: c++ visual-studio visual-c++ multiple-monitors