我正在为 Windows 10 开发一个模块,用于管理配置并将其应用到连接的显示器。使用下面的代码,我可以克隆和扩展通过 HDMI、VGA、DP 和 DVI 连接的显示器,但在克隆使用 displaylink 驱动程序 ( https://www.displaylink.com/downloads )的 USB 连接显示器时遇到问题。当然,如果我使用Windows 显示设置窗口,这将有效。问题是我不太确定如何在 Windows 上正确克隆和扩展监视器。
代码很简单,基本上就是这样做的:
GetDisplayConfigBufferSizes函数检索调用QueryDisplayConfig所需的缓冲区大小。
它确定保存所有有效路径所需的路径和模式信息数组的大小。有关这些路径的更多详细信息,请参阅
下面的文档以获取更多信息。
#include <Windows.h>
#include <iostream>
#include <vector>
int main()
{
UINT32 pathSize, modeSize;
GetDisplayConfigBufferSizes(QDC_ALL_PATHS, &pathSize, &modeSize);
std::vector<DISPLAYCONFIG_PATH_INFO> pathArray(pathSize);
std::vector<DISPLAYCONFIG_MODE_INFO> modeArray(modeSize);
// Fills a block of memory with zeros.
SecureZeroMemory(&pathArray[0],
sizeof(DISPLAYCONFIG_PATH_INFO) *
pathArray.size());
SecureZeroMemory(&modeArray[0],
sizeof(DISPLAYCONFIG_MODE_INFO) *
modeArray.size());
//...
}
Run Code Online (Sandbox Code Playgroud)
QDC_ALL_PATHS :源到目标的所有可能的路径组合。
QueryDisplayConfig函数检索有关当前设置中所有显示设备或视图的所有可能显示路径的信息。 …
我试图弄清楚为什么 8 位 char 数据类型可以包含所有这些奇怪的字符,因为它们不是前 256 个字符表的一部分。
\n#include <iostream>\n\nint main()\n{\n char chars[] = " \xe5\xbf\x85 \xe8\xa5\xbf \xe2\x99\xa0 \xe2\x99\xac \xe2\x99\xad \xe2\x99\xae \xe2\x99\xaf";\n std::cout << "sizeof(char): " << sizeof(char) << " byte" << std::endl;\n std::cout << chars << std::endl;\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n