- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上,我正在制作模仿屏幕融化效果的东西,但我只能让它在我的主显示器上运行。我已经尽可能多地查找了所有显示器的 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) 到 HDC Window = GetDC(NULL)
,然后是一些其他内容,例如 RECT
。如果有人能帮助我,那就太好了,谢谢:)
PS,ScreenWidth = 3600,ScreenHeight = 1080,而 PMScreenWidth = 1920,PMScreenHeight = 1080。PM 在主监视器中,所以我将该函数中的所有内容都设置为 ScreenWidth/ScreenHeight,所以它的宽度/高度所有显示器。不过还是不行。
最佳答案
GetDC(HWND_DESKTOP)
(与 GetDC(0)
相同)已返回所有显示器的 DC。上述代码的问题主要在于 BitBlt
的使用和坐标的选择。请参阅下面解决该问题的 MCVE。
不要响应 WM_CREATE
进行绘制,它只会在 WM_PAINT
中或背景被删除时被删除。
不要调用 ValidateRect
来响应 WM_PAINT
。如果您想删除窗口,只需使用 FillRect
,或通过命令或其他路径强制重新绘制。
使用 GetSystemMetrics(SM_CXVIRTUALSCREEN)
和 GetSystemMetrics(SM_CYVIRTUALSCREEN)
返回虚拟监视器的宽度和高度。
还要确保进程是 DPI 感知的。为了进行测试,您可以在程序开始时调用 SetProcessDPIAware();
。理想情况下,应在 list 文件中设置 DPI 感知。
int uX = (rand() % ScreenWidth) - (150 / 2);
int uY = (rand() % 15);
int Width = (rand() % 150);
BitBlt(Window, uX, uY, Width, ScreenHeight, Window, uX, 0, SRCCOPY);
上面的代码是从同一个客户端 DC 的客户端 DC 复制位,它不会做任何事情。假设您想从桌面 DC 复制到客户端 DC。
而且,坐标基本上是随机选取的。它假定主监视器位于左上角。如果 uX
大于窗口自身的宽度,它将不会被复制,除非窗口拉伸(stretch)整个虚拟监视器。
LRESULT CALLBACK Melter(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam) {
switch(Message)
{
case WM_PAINT:
{
PAINTSTRUCT ps;
auto hdc = BeginPaint(hWnd, &ps);
RECT rc;
GetClientRect(hWnd, &rc);
HDC hdesktop = GetDC(0);
int screenx = GetSystemMetrics(SM_XVIRTUALSCREEN);
int screeny = GetSystemMetrics(SM_YVIRTUALSCREEN);
int screenw = GetSystemMetrics(SM_CXVIRTUALSCREEN);
int screenh = GetSystemMetrics(SM_CYVIRTUALSCREEN);
StretchBlt(hdc, 0, 0, rc.right, rc.bottom,
hdesktop, screenx, screeny, screenw, screenh, SRCCOPY);
ReleaseDC(0, hdesktop);
EndPaint(hWnd, &ps);
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hWnd, Message, wParam, lParam);
}
关于C++ GetDC 所有监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53329673/
以下是否意味着只有一个线程可以在对象的任何方法中?或者多个线程可以使用不同的方法而不是同一个方法吗?为什么? public class SynchronizedCounter { privat
我有一个 java 监视器,但我需要一些解释: class Test { private int data; private boolean full = false; public sy
#include #include #include #include #define N_ASS 4 pthread_t tid[N_ASS]; //mutex pthread_mutex_
我想知道是否有一种工具可以跟踪我的 C# 程序正在使用/访问的文件列表(文本/任何外部文件)? =D 有什么工具吗? 附注它是为了测试程序安全性.. ;) 最佳答案 ProcessMonitor监控任
我想知道 Monitor 类。据我所知,所有等待线程都不是 FIFO。第一个获得锁的并不总是等待队列中的第一个。这样对吗?有什么方法可以确保 FIFO 条件? 问候 最佳答案 如果您指的是内置方式,则
我有一个 ASP.net (c#) 应用程序,其中包含修改全局可访问资源(如 web.config 文件)的部分代码。当然,在修改资源时,为了防止竞争条件,一次只允许一个用户,因此我需要使用监视器锁定
如何方便调试持久化上下文的状态、观察查询结果、监控所有实体? 有一些 JPA 监视器可以用于此吗? 最佳答案 如果您使用 EclipseLink,则有一个性能监视器选项, 看, http://wiki
启动和停止按钮在监视器 tomcat 中被禁用,大约 10-15 分钟后,它允许我重新启动服务器 当 tomcat 停止响应并且我尝试重新启动服务器时,我遇到了这个问题,我能够停止服务器,但之后它不允
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我必须开发一个系统来监控报告的生成/传输。 系统数据将存储在数据库表中(Sybase) 报告将按不同的时间表生成(“周一至周五晚上 10 点”、“周六早上 5 点”、“每月的第一天”等) 系统只会监控
我需要同步多个线程(使用 POSIX 线程)。此外,我正在使用条件变量(监视器)来实现这一点。 问题是我必须实现“先到先得”的策略。假设多个线程正在等待另一个线程发出条件变化的信号,pthread_c
在 eclipse 中,我有一个运行的 weblogic 服务器,并部署了一个 j2ee 应用程序。该应用程序在端口 7001 上提供服务。我想将监视器连接到应用程序,我不知道要使用什么端口。我想我知
我正在使用芹菜和花卉。当我访问Flower中的“任务”标签时,我可以看到我的任务正在注册,甚至可以在“状态”列中看到“成功”标签以及所有内容。 但是,在“监视器”选项卡上,所有图形(“成功任务”,“失
有人知道有一个可以监控 beanstalkd 队列的应用程序吗?我正在寻找一些可以显示管道和工作统计信息并允许您检查详细信息的东西。 我对语言/平台并不是很挑剔,只是想在编写自己的语言/平台之前知道是
使用 Microsoft.Azure.Management.Monitor 的预览包,我尝试将指标从 Azure 获取到 .NET Core 应用程序中,但我不确定要输入什么内容作为“resource
使用 Microsoft.Azure.Management.Monitor 的预览包,我尝试将指标从 Azure 获取到 .NET Core 应用程序中,但我不确定要输入什么内容作为“resource
我想知道是否有一种方法可以通过客户端应用程序连接到位于 WebLogic 服务器上的业务 Activity 监视器。我想用 BAM 语句替换 JMS 生产者/消费者客户端中的日志语句,以便使用消息进度
我的网站有一个DIV,它的高度不固定。当用户在图像上移动鼠标时,将出现此 DIV 并显示有关图像的一些信息。页面上有几个网格格式的图像,每个图像都有自己的信息。很明显,一些图像位于屏幕底部,因此通过
提醒:Arch Linux 使用 pacman 而不是 apt-get 所以我有一个想法,我希望能够离开我的房间,并且仍然可以看到我手机的下载进度。我曾寻找过已有的程序,但一无所获,所以我决定自己编写
如果连接到多个显示器,如何使用 python 制作屏幕截图? 我试过: import sys from PyQt4.QtGui import QPixmap, QApplication app = Q
我是一名优秀的程序员,十分优秀!