1 DWORD dwWidth, dwHeight;
2 DEVMODE dm;
3
4 dwWidth = GetDlgItemInt(IDC_COMBO_WIDTH, NULL, FALSE);
5 dwHeight = GetDlgItemInt(IDC_COMBO_HEIGHT, NULL, FALSE);
6 memset((char*)&dm, 0, sizeof(DEVMODE));
7 dm.dmSize = sizeof(DEVMODE);
8 dm.dmPelsWidth = dwWidth;
9 dm.dmPelsHeight = dwHeight;
10 dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
11
12 if (DISP_CHANGE_SUCCESSFUL == ChangeDisplaySettingsEx(NULL, &dm, NULL, 0, NULL))
13 {
14 CenterWindow();
15 }
我的wince6.0烧写的镜像800*600的,我只有dm.dmPelsWidth为800,dm.dmPelsHeight为600时能调用成功,ChangeDisplaySettingsEx返回DISP_CHANGE_SUCCESSFUL,其他480*272,640*480,800*480分辨率时,ChangeDisplaySettingsEx均返回 DISP_CHANGE_BADMODE(-2),还要在哪做修改?急求
------解决方案--------------------
对于VGA接口的显示器,不是很了解。但是对于RGB接口的TFT LCD的一些经验,希望对你有帮助。
切换分辨率是要显示驱动支持的。我接触到的WinCE驱动中,对于指定LCD默认都是只支持一种分辨率的。但是,WinCE的显示驱动模型是允许改变LCD的显示分辨率的。你可能在其他网页也看到了这样的描述,你要看显示驱动中SetMode()函数是否支持分辨率切换。我的驱动中都是只支持当前分辨率模式下的旋转。
实际上,添加一种分辨率支持并不难。改变驱动中m_pMode->height和m_pMode->width就行。但是,千万记住不要随便改变Frame buffer的大小。因为这是由你的LCD硬件决定的。
------解决方案--------------------
我已经告诉你要改哪些参数了,再下去就是我帮你写了。你自己看看网上LCD驱动调试,把原理搞懂。
就可以搞定的。