调查了一个问题,被困扰了很久,希望各位高手可以帮助解决一下:
需求是这样的:主机上接了两个显示器,按键盘上的某一个快捷键,自动切换显示模式:
显示模式: 镜像模式(克隆模式)--> 扩展模式 ; 扩展模式 --> 镜像模式(克隆模式)
切换到扩展模式后,需要单独的设置每个显示器的分辨率,色彩深度,刷新率等。目前,已经可以单独设置每个显示器的各项信息内容,但无法实现显示模式的切换:
如:无法实现从扩展模式 --> 镜像模式(克隆模式)请各位高手,帮忙解决一下,十分感激。
需求是这样的:主机上接了两个显示器,按键盘上的某一个快捷键,自动切换显示模式:
显示模式: 镜像模式(克隆模式)--> 扩展模式 ; 扩展模式 --> 镜像模式(克隆模式)
切换到扩展模式后,需要单独的设置每个显示器的分辨率,色彩深度,刷新率等。目前,已经可以单独设置每个显示器的各项信息内容,但无法实现显示模式的切换:
如:无法实现从扩展模式 --> 镜像模式(克隆模式)请各位高手,帮忙解决一下,十分感激。
解决方案 »
- CListBox频繁插入数据,如何做成windows搜索效果
- 熟悉MFC进程线程和模块状态的大虾请进,有问题请教(高分)
- 急切,请教个CXIMAGE的问题,drawstring的,200分~~~~~~
- C++将成为最好的RAD(GUI)开发语言!!!
- 如何用RichEdit实现类似于UE的16进制编辑器?
- 请问:控制台程序是否能做成托盘?如果能做,请指教!
- 问一个关于SDK的问题
- 请问如何设置CDateTimeCtrl的前景色和背景色(注意,不是下拉框)
- 你来看吧!
- double型N阶二维数组怎样在listbox内显示出来?大家代码交流~
- EditBox空间的问题,有点难度,高手帮忙。。
- TransparentBlt函数是不是不支持目标高度为负呀?
int ChangeToMirrorMode(vector<DISPLAY_DEVICE> & physicScreenSet, int iSecondaryScreen)
{
DEVMODE primaryScreenMode;
memset(&primaryScreenMode, 0, sizeof(primaryScreenMode));
primaryScreenMode.dmSize = sizeof(primaryScreenMode);
EnumDisplaySettings(physicScreenSet[0].DeviceName, ENUM_CURRENT_SETTINGS, &primaryScreenMode);
memcpy(primaryScreenMode.dmDeviceName, physicScreenSet[0].DeviceName, strlen(physicScreenSet[0].DeviceName) + 1);
DEVMODE defaultMode;
//memcpy(&defaultMode, &primaryScreenMode, sizeof(primaryScreenMode));
memset(&defaultMode, 0, sizeof(defaultMode));
defaultMode.dmSize = sizeof(defaultMode);
memcpy(defaultMode.dmDeviceName, physicScreenSet[iSecondaryScreen].DeviceName, sizeof(physicScreenSet[iSecondaryScreen].DeviceName) + 1);
defaultMode.dmPosition.x = -1440;
defaultMode.dmPosition.y = 0;
defaultMode.dmPelsWidth = 1280;
defaultMode.dmPelsHeight = 1024;
defaultMode.dmDisplayFlags = DM_INTERLACED;
defaultMode.dmFields |= DM_POSITION | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFLAGS; int detachResult = ChangeDisplaySettingsEx(
physicScreenSet[iSecondaryScreen].DeviceName,
&defaultMode, NULL, CDS_NORESET|CDS_UPDATEREGISTRY, NULL
);
detachResult |= ChangeDisplaySettingsEx(NULL, NULL, NULL, NULL, NULL); HDC hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
HDC hMemDC = CreateCompatibleDC(hScrDC);
int width = GetDeviceCaps(hScrDC, HORZRES);
int height = GetDeviceCaps(hScrDC, VERTRES);
HBITMAP hBmp = (HBITMAP)CreateCompatibleBitmap(hScrDC, width, height);
HBITMAP hOldBmp = (HBITMAP)SelectObject(hMemDC, hBmp); return detachResult;
}