Windows7 调用显示设置中的“检测”按钮原理
时间: 2023-11-13 09:03:24 浏览: 34
在 Windows 7 中,调用显示设置中的“检测”按钮实际上是重新扫描系统中的显示器和图形适配器,以便更新显示设置。当您单击“检测”按钮时,Windows 7 将发送一条指令到显示器和图形适配器,要求它们重新向计算机发送其属性信息,包括其分辨率、刷新率和连接类型等信息。一旦计算机收到这些信息,Windows 7 将根据显示器和图形适配器的属性信息更新显示设置。因此,通过调用“检测”按钮,您可以确保计算机使用正确的显示设置来显示图形和文本。
相关问题
Windows7 C++调用显示设置中的“检测”按钮原理
在Windows 7中,调用显示设置中的“检测”按钮会触发系统重新扫描显示器和图形适配器,以更新显示设置。当用户单击“检测”按钮时,系统会向显示器和图形适配器发送命令,要求它们重新向计算机发送其属性信息,包括它们的分辨率、刷新率和连接类型等信息。一旦计算机收到这些信息,系统会根据显示器和图形适配器的属性信息更新显示设置。因此,通过调用“检测”按钮,用户可以确保计算机使用正确的显示设置来显示图形和文本。
在代码实现上,使用 EnumDisplayDevices 函数获取当前连接的显示设备列表,然后使用 ChangeDisplaySettingsEx 函数重新初始化每个显示设备的显示设置。这些函数的具体作用已经在前面的回答中进行了介绍。
Windows7 C++调用显示设置中的“检测”按钮
你可以使用 WinAPI 中的 EnumDisplayDevices 函数和 ChangeDisplaySettingsEx 函数来实现在 Windows 7 中调用显示设置中的“检测”按钮。具体步骤如下:
1. 使用 EnumDisplayDevices 函数获取当前连接的显示设备列表。
```c++
DISPLAY_DEVICE displayDevice = { 0 };
displayDevice.cb = sizeof(DISPLAY_DEVICE);
DWORD deviceIndex = 0;
while (EnumDisplayDevices(nullptr, deviceIndex++, &displayDevice, 0))
{
// 处理每个显示设备
}
```
2. 对于每个显示设备,使用 ChangeDisplaySettingsEx 函数重新初始化其显示设置。
```c++
DEVMODE devMode = { 0 };
devMode.dmSize = sizeof(DEVMODE);
devMode.dmDriverExtra = 0;
// 获取当前显示模式
EnumDisplaySettings(displayDevice.DeviceName, ENUM_CURRENT_SETTINGS, &devMode);
// 使用 ChangeDisplaySettingsEx 函数重新初始化显示设置
LONG result = ChangeDisplaySettingsEx(displayDevice.DeviceName, &devMode, nullptr, CDS_UPDATEREGISTRY | CDS_RESET, nullptr);
```
3. 如果 ChangeDisplaySettingsEx 函数返回成功,则表示显示设置已经更新成功,如果返回 DISP_CHANGE_BADDUALVIEW,则表示尝试更新双显示器设置失败。
请注意,使用 ChangeDisplaySettingsEx 函数重新初始化显示设置可能会导致显示器重新启动,因此在调用此函数前,请确保您已保存所有打开的文档和工作。