#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
char Current[100];
DEVMODE dm;
dm.dmSize=sizeof(DEVMODE);
::EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&dm);
wsprintf(Current, "%s at %dx%d %dbpp %dHz ",
dm.dmDeviceName,
dm.dmPelsWidth,
dm.dmPelsHeight,
dm.dmBitsPerPel,
dm.dmDisplayFrequency);
MessageBox(NULL,Current,"顯示器資訊",MB_OK);
return 0;
}
在VC中建立win32程式,完整程式如上。
百度百科中EnumDisplaySettings函數介紹如下:
函數功能:該函數得到顯示裝置的一個圖形模式裝置,通過對該函數一系列的調用可以得到顯示裝置所有的圖形模式資訊。
函數原型:BOOL EnumDisplaySettings(LPCTSTR lpszDeviceName, DWORD iModeNum, LPDEVMODE lpDevMode);
參數:
lpszDeviceName:指向一個以null的結尾的字串,該字串指定了顯示裝置。此函數將獲得該顯示裝置的圖形模式資訊。該參數可以為NULL。NULL值表明調用線程正運行在電腦的當前顯示裝置上。如果lpszDeviceName為NULL,該字串的形式為\\.\displayx,其中x的值可以為1、2或3。對於Windows 95和Windows 98,lpszDeviceName必須為NULL。
iModeNum:表明要檢索的資訊類型,該值可以是一個圖形模式索引,也可以是下列一值:
ENUM_CURRENT_SETTINGS:檢索顯示裝置的當前設定。
ENUM_REGISTRY_SETTINGS:檢索當前儲存在註冊表中的顯示裝置的設定。
圖形模式索引值從零開始,要得到一個顯示裝置的所有圖形模式資訊,可以一系列地調用EnumDisplaySettings函數,並且iModeNum顯為一個非零值時,則函數返回的資訊是最近一次使用iModeNum置為零調用該函數時儲存的資訊。
lpDevMode:DEVMODE結構的指標,該結構儲存指定圖形模式的資訊,在調用EnumDisplaySettings之前,設定dmSize為sizeof(DEVMODE),並且以位元組為單位,設定dmDriveExtra元素為接收專用驅動資料可用的附加空間。
EnumDisplaySettings函數設定如下五個DEVMODE元素的值:dmBitsPerpel、dmPelsWidth、dmPelsHeight、dmDisplayFlags、dmDisplayFrequency。
傳回值:如果成功,返回非零值;如果失敗,返回零。
Windows NT:若想獲得更多錯誤資訊,請調用GetLastError函數。
注釋:如果iModeNum大於顯示裝置最後的圖形模式索引,那麼函數就會失敗,如同在iModeNum參數中描述的那樣,使用這種方法可以枚舉顯示裝置所有的圖形模式。
速查:Windows NT:3.51及以上版本;Windows:95及以上版本;Windows CE:不支援;標頭檔:winuser.h;庫檔案:user32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。