相关疑难解决方法(0)

如何检测当前屏幕分辨率?

如何从Winapi(在C或C++中)检测当前的屏幕分辨率?

一些背景:

我想开始一个新的OpenGL全屏窗口,但希望它以桌面已经设置的相同水平和垂直大小打开.(现在当每个人都使用LCD屏幕时,我认为这是获得屏幕原始分辨率的最佳方式.)

我并不急需知道桌面颜色深度,虽然这将是一个很好的奖励.

c c++ api winapi resolution

36
推荐指数
3
解决办法
8万
查看次数

如何从hWnd获取显示器屏幕分辨率?

如何从hWnd获得显示器屏幕分辨率?

我正在使用hWnd,因为窗口可以位于多个监视器中的任何一个上.

即hWnd顶部/左侧坐标位于屏幕分辨率为800 x 600的显示器上.

我用一种名为PL/B的语言编程,它允许调用Windows API.

可以使用哪些Window API?

winapi screen-resolution

16
推荐指数
3
解决办法
2万
查看次数

EnumDisplayMonitors 回调

我正在尝试使用 EnumDisplayMonitors 创建每个监视器的动态数组并存储 DISPLAY_DEVICE 结构。为什么下面的代码不正确?

BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {

    MONITORINFOEX iMonitor;
    iMonitor.cbSize = sizeof(MONITORINFOEX);
    GetMonitorInfo(hMonitor, &iMonitor);

    if (iMonitor.dwFlags == DISPLAY_DEVICE_MIRRORING_DRIVER)
    {
        return true;
    }
    else
    {
        *reinterpret_cast<ScreenArray*>(dwData) = ScreenArray(&iMonitor);
        return true;
    };

}
Run Code Online (Sandbox Code Playgroud)

调用使用

ScreenArray monitorArray[15];

int i = 0;
EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, reinterpret_cast<LPARAM>(&monitorArray[i++]));
Run Code Online (Sandbox Code Playgroud)

数组中的第一个 (monitorArray[0]) 为第二个监视器返回正确的信息,但 monitorArray[1] 是最大值。

编辑:已解决我使用的方法只是实现我创建的函数:

MonitorArray *mA = reinterpret_cast<MonitorArray*>(dwData);
        mA->addScreen(&iMonitor);
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi callback

4
推荐指数
2
解决办法
8255
查看次数

标签 统计

winapi ×3

c++ ×2

api ×1

c ×1

callback ×1

resolution ×1

screen-resolution ×1

windows ×1