天天看點

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;

 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     }

      動态修改系統分辨率和旋轉螢幕的效果圖如下。

WinCE6.0下如何動态設定系統分辨率
WinCE6.0下如何動态設定系統分辨率
WinCE6.0下如何動态設定系統分辨率

     測試平台原始分辨率是800*480,先後将分辨率改為640*480和480*272,并在480*272的分辨率下将螢幕旋轉90°。

繼續閱讀