|
我看到411版本,10MB好大代码也多,看了你发的3.1的版本的代码,
和我的代码一样用了EnumDisplaySettings,ChangeDisplaySettings。
原来,转横竖的时候要交换下,分辨率的长,宽。
我处理下,晚点发上来,菜单我也测试下子菜单注册表的是否可以,不能的话,
我就PExlorer.exe添加下。
- void rotate(DWORD orientation)
- {
- DEVMODE tempdevmode;
- EnumDisplaySettings(NULL, -1, &tempdevmode);
- //Do not rotate if the given value is the current screen orientation
- if(tempdevmode.dmDisplayOrientation == orientation) return;
- DWORD def_height;
- DWORD def_width;
- //Get base resolution settings
- if((tempdevmode.dmDisplayOrientation == 0 ) || (tempdevmode.dmDisplayOrientation == 2 ))
- {
- def_height = tempdevmode.dmPelsHeight;
- def_width = tempdevmode.dmPelsWidth;
- }
- else
- {
- def_height = tempdevmode.dmPelsWidth;
- def_width = tempdevmode.dmPelsHeight;
- }
- //Rotate if necessary
- if((orientation == 1) || (orientation == 3))
- {
- tempdevmode.dmPelsWidth = def_height;
- tempdevmode.dmPelsHeight = def_width;
- }
- else
- {
- tempdevmode.dmPelsWidth = def_width;
- tempdevmode.dmPelsHeight = def_height;
- }
- tempdevmode.dmDisplayOrientation = orientation;
- ChangeDisplaySettings(&tempdevmode, 0);
- }
复制代码 |
|