WinCE6.0下如何动态设置系统分辨率

      由于WinCE的显示驱动是本地驱动,不能像流驱动一样动态加载。所以,一般情况下不能动态修改和调试。前两天曾介绍过一种在应用程序中针对相同分辨率但不同尺寸的LCD的调试方法。这里继续介绍WinCE6.0下动态设置系统分辨率的一种方法。我们可以通过系统提供的ChangeDisplaySettingsEx()函数实现动态修改系统的分辨率。

      设定系统分辨率的参考代码如下:

 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      }

       通过这个函数,我们还可以实现屏幕的旋转,参考代码如下:

 1      DWORD dwAngle;
 2      DEVMODE dm;
 3 
 4      dwAngle  =  SendDlgItemMessage(IDC_COMBO_ANGLE, CB_GETCURSEL, NULL, NULL);
 5      memset(( char * ) & dm,  0 sizeof (DEVMODE));    
 6      dm.dmSize  =   sizeof (DEVMODE);
 7      dm.dmDisplayOrientation  =  DMDO_0  +  (dwAngle  <=  DMDO_180  ?  dwAngle :  4 );
 8      dm.dmFields  =  DM_DISPLAYORIENTATION;
 9 
10       if  (DISP_CHANGE_SUCCESSFUL  ==  ChangeDisplaySettingsEx(NULL,  & dm, NULL,  0 , NULL))
11      {
12          CenterWindow();
13      }

      动态修改系统分辨率和旋转屏幕的效果图如下。

          image

                    image

                             image

     测试平台原始分辨率是800*480,先后将分辨率改为640*480和480*272,并在480*272的分辨率下将屏幕旋转90°。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值