当前位置: 代码迷 >> WinCE >> wince6.0分辨率的动态设置,老是成功不了,该如何解决
  详细解决方案

wince6.0分辨率的动态设置,老是成功不了,该如何解决

热度:50   发布时间:2016-04-28 12:32:34.0
wince6.0分辨率的动态设置,老是成功不了
 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驱动调试,把原理搞懂。
就可以搞定的。
  相关解决方案