我正在尝试使用以下内容来获取主显示器的高度和宽度:
#include <winuser.h>
size_t width = (size_t)GetSystemMetrics(SM_CXBORDER);
size_t height = (size_t)GetSystemMetrics(SM_CYBORDER);
但是,它在未解决的外部链接错误 ( LNK1120
) 上失败。我尝试链接到 user32.lib (如此处所述),并收到相同的错误,以及链接到 wmbase.lib (如此处所记载),并收到 wmbase.lib 不存在的错误!我究竟做错了什么?
请注意,我只使用普通的 C,而不是 C++。这是用于获取主显示器的屏幕分辨率(以像素为单位)的正确功能吗?
我目前正在尝试在 MSVC 上编译它,但更喜欢可移植到其他编译器的解决方案。
谢谢。
编辑
所以看起来我正在寻找的参数是SM_CXSCREEN
and SM_CYSCREEN
,而不是SM_CXBORDER
and SM_CYBORDER
。但是,我仍然无法编译它。
如果这澄清了任何事情(当链接到 user32.lib 时),这是实际错误:
screen.obj : error LNK2019: unresolved external symbol __imp__GetSystemMetrics@4 referenced in function _getMainDisplaySize
build\lib.win32-2.6\foomodule\bitmap.pyd : fatal error LNK1120: 1 unresolved externals
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.exe"' failed with exit status 1120
(我正在尝试编译 Python/C 模块,这就是为什么你会看到奇怪的目录)