程式啟動並執行結果是改變螢幕的解析度和色彩深度。
一、程式的編寫:
1. 建立和配置工程
建立一個工程,然後在Project->Setting->Link 中,加入OpenGL 相關幾個lib檔案
OpenGL32.lib Glu32.lib GLaux.lib
2. 加入標頭檔
#include <windows.h><br />#include <GL/gl.h> //OpenGL 核心函數庫檔案的標頭檔<br />#include <GL/glu.h>//OpenGL 應用程式函數庫的標頭檔<br />#include <gl/glaux.h>//OpenGL 輔助函數庫的標頭檔<br />#include <stdio.h> //標準輸入輸出<br />#include <io.h> //輸入輸出
3. 改變解析度函數的實現
bool ChangeResolution(int w,int h,int bitdepth)<br />{<br />DEVMODE devMode;<br />int modeSwitch;<br />int closeMode = 0;</p><p>EnumDisplaySettings(NULL,closeMode,&devMode); //擷取指定顯示裝置的圖形模式的資訊</p><p>devMode.dmBitsPerPel = bitdepth;<br />devMode.dmPelsWidth = w;<br />devMode.dmPelsHeight = h;<br />devMode.dmFields = DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;</p><p>modeSwitch = ChangeDisplaySettings(&devMode,CDS_FULLSCREEN);</p><p>if(modeSwitch == DISP_CHANGE_SUCCESSFUL){<br />return true;<br />}<br />else{<br />ChangeDisplaySettings(NULL,0);<br />return FALSE;<br />}<br />}
4. 調用函數
在程式能執行到任意位置調用 上述函數即可
如:
ChangeResolution(640,480,16);
5. 運行程式
二、 程式說明
1. DEVMODE 結構體
The DEVMODE data structure contains information about the initialization and environment of a printer or a display device.
dmFields 指示DEVMODE結構體中的某個域有沒有被初始化
這個結構體包含一個印表機或顯示裝置的初始化資料和環境資訊。
2.EnumDisplaySettings函數
BOOL EnumDisplaySettings(<br /> LPCTSTR lpszDeviceName, // display device<br /> DWORD iModeNum, // graphics mode<br /> LPDEVMODE lpDevMode // graphics mode settings<br />);<br />
這個函數是擷取某一個顯示裝置的圖形模式資訊
如果第一個參數為空白,則表示擷取的是當前進程正在用的顯示裝置
第三個參數是out類型,它返回當前顯示裝置的資訊
3.ChangeDisplaySetting函數
LONG ChangeDisplaySettings(<br /> LPDEVMODE lpDevMode, // graphics mode<br /> DWORD dwflags // graphics mode options<br />);<br />
把預設顯示器的顯示設定改成指定的圖形模式