16,472
社区成员
发帖
与我相关
我的任务
分享
int nScreenWidth, nScreenHeight;
HDC hdcScreen = GetDC(NULL); //获取屏幕的HDC
nScreenWidth = GetDeviceCaps(hdcScreen, HORZRES); \\获取当前屏幕的宽度(像素)
nScreenHeight = GetDeviceCaps(hdcScreen, VERTRES); \\获取当前屏幕的高度(像素)
//DPI(每英寸含多少像素)
int X = GetDeviceCaps(hdcScreen, LOGPIXELSX);//获取当前的DPI
int Y = GetDeviceCaps(hdcScreen, LOGPIXELSY);//获取当前的DPI
double InchX = (double)nScreenWidth / X;
double InchY = (double)nScreenHeight / Y;
const double MILLIMETRE_TO_INCH = 0.03937;
double MilliMetreX = InchX/MILLIMETRE_TO_INCH;//屏幕实际尺寸(毫米)
double MilliMetreY = InchY/MILLIMETRE_TO_INCH;
int nScreenWidth, nScreenHeight;
HDC hdcScreen = GetDC(NULL); //获取屏幕的HDC
nScreenWidth = GetDeviceCaps(hdcScreen, HORZRES); \\获取当前屏幕的宽度(像素)
nScreenHeight = GetDeviceCaps(hdcScreen, VERTRES); \\获取当前屏幕的高度(像素)
//DPI(每英寸含多少像素)
int X = GetDeviceCaps(hdcScreen, LOGPIXELSX);//获取当前的DPI
int Y = GetDeviceCaps(hdcScreen, LOGPIXELSY);//获取当前的DPI
double InchX = (double)nScreenWidth / X;
double InchY = (double)nScreenHeight / Y;
const double MILLIMETRE_TO_INCH = 0.03937;
double MilliMetreX = InchX/MILLIMETRE_TO_INCH;//屏幕实际尺寸(毫米)
double MilliMetreY = InchY/MILLIMETRE_TO_INCH;
[/quote]
你确认一下这并不是屏幕实际尺寸,没有API能获取屏幕的物理尺寸[/quote]
可以获取EDID来获取显示器的尺寸。
一种方式是通过注册表。
另一种方式是通过驱动获取(API:VideoPortDDCMonitorHelper)
所以是有API可以获取显示器尺寸的。
下面这个帖子里面有相应的注册表路径,可以稍加改造获取尺寸,前提是先了解下注册表下EDID值怎么存储的。
获取显示器名称
int nScreenWidth, nScreenHeight;
HDC hdcScreen = GetDC(NULL); //获取屏幕的HDC
nScreenWidth = GetDeviceCaps(hdcScreen, HORZRES); \\获取当前屏幕的宽度(像素)
nScreenHeight = GetDeviceCaps(hdcScreen, VERTRES); \\获取当前屏幕的高度(像素)
//DPI(每英寸含多少像素)
int X = GetDeviceCaps(hdcScreen, LOGPIXELSX);//获取当前的DPI
int Y = GetDeviceCaps(hdcScreen, LOGPIXELSY);//获取当前的DPI
double InchX = (double)nScreenWidth / X;
double InchY = (double)nScreenHeight / Y;
const double MILLIMETRE_TO_INCH = 0.03937;
double MilliMetreX = InchX/MILLIMETRE_TO_INCH;//屏幕实际尺寸(毫米)
double MilliMetreY = InchY/MILLIMETRE_TO_INCH;
[/quote]
你确认一下这并不是屏幕实际尺寸,没有API能获取屏幕的物理尺寸