日期:2014-05-19  浏览次数:20953 次

获取Windows XP的屏幕分辨率范围,急!
我想获取Windows   XP中的 "显示属性 "-> "设置 "-> "屏幕分辨率 "下面的调节滑块两端对应的分辨率,该怎么获取?请各位大虾帮忙.
不要用EnumDisplaySettings获得,因为默认XP的最小分辨率是800*600,而EnumDisplaySettings获得的最小能到640*480,两着不一致.


------解决方案--------------------
用api函数GetSystemMetrics,下面是一个win32sample

/*-----------------------------------------------------
SCRNSIZE.C -- Displays screen size in a message box
(c) Charles Petzold, 1998
-----------------------------------------------------*/

#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...)
{
TCHAR szBuffer [1024] ;
va_list pArgList ;

// The va_start macro (defined in STDARG.H) is usually equivalent to:
// pArgList = (char *) &szFormat + sizeof (szFormat) ;

va_start (pArgList, szFormat) ;

// The last argument to wvsprintf points to the arguments

_vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR),
szFormat, pArgList) ;

// The va_end macro just zeroes out pArgList for no good reason

va_end (pArgList) ;

return MessageBox (NULL, szBuffer, szCaption, 0) ;
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
int cxScreen, cyScreen ;

cxScreen = GetSystemMetrics (SM_CXSCREEN) ;
cyScreen = GetSystemMetrics (SM_CYSCREEN) ;
MessageBoxPrintf (TEXT ( "ScrnSize "),
TEXT ( "The screen is %i pixels wide by %i pixels high. "),
cxScreen, cyScreen) ;
return 0 ;
}



------解决方案--------------------
DirectX中封装了 不过用起来还是自己写得好
------解决方案--------------------
都是取的一样的,继续为你关注!



------解决方案--------------------
因为会取得刷新率和色彩数,楼主可以找找规律把没用的信息过滤掉
------解决方案--------------------
to:xuyijie2005()
查过注册表了,我用的768关键字,没有找到