获取系统分辨率
来源:互联网 发布:c语言2的n次方 编辑:程序博客网 时间:2024/05/21 22:50
看了一些从函数中得到系统分辨率的方法,但我发现如果你只想得到屏幕的长和宽的话,其实是很简单的,如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:='Screen Width:'+ inttostr(Screen.Width) ;
label2.Caption:='Screen height:'+ IntToStr(Screen.Height);
end;
这样就可以得到了!
以下是其它的方法:
ClientW:=GetSystemMetrics(SM_CXSCREEN);
ClientW:=GetResolution(True);
---------------------------------------------------------------------------------------------------------------------------------------------
=============《Windows 程序设计 第五版》读书笔记 || 第四章 输出文字 =============
可以用GetSystemMetrics函数可以获取系统分辨率,但这只是其功能之一,GetSystemMetrics函数只有一个参数,称之为「索引」,这个索引有75个标识符,通过设置不同的标识符就可以获取系统分辨率、窗体显示区域的宽度和高度、滚动条的宽度和高度。
为了使使GetSystemMetrics的功能,我们以获取系统分辨率为例,并将其中的两个值用TextOut输出到窗体中。
第一步:用GetSystemMetrics获取屏幕的宽度和高度
int x, y;
x = GetSystemMetrics(SM_CXSCREEN); //屏幕宽度
y = GetSystemMetrics(SM_CYSCREEN); //屏幕高度
第二步:用TextOut输出分辨率
因为x和y的值是int类型,所以无法用TextOut直接输出,需要借助wsprintf函数,在C中,可以用printf函数直接将字符串输出到屏幕上,但wsprintf是将字符串输出到一个char字符数组中,而且wsprintf会返回输出字符串的长度。
TCHAR szBuffer[10];
int x = 1024;
int y = 768;
int iLength;
iLength = wsprintf(szBuffer, TEXT("%5d"), x);
小提示:szBuffer数组的长度一定要大于x的长度,否则不能输出。
以上这段代码,是用wsprintf将x的值存入szBuffer中,然后在iLength中存放x的长度。这一步实际上解决了两个问题,将int类型的屏幕宽度转为了TCHAR类型,TextOut函数可以直接输出TCHAR类型字符串,而且获取了字符串的长度,那么我们就可以用TextOut函数在窗体中输出屏幕的宽度:
TextOut(hdc, 0, 0, szBuffer, iLength);
本文的重点是GetSystemMetrics函数,该函数的75个索引标识符我没一个一个的试,反正只要知道这个函数的作用就行了。在本文中wsprintf函数是解决int转string的问题,本来想直接在TextOut中使用IntToStr函数来输出int类型的值,但没弄清IntToStr函数在哪个头文件中,总用不上。IntToStr函数我以前用过,在C++中应该有这个函数的。
获取窗体显示区域大小
已我现在的了解,获取窗体显示区域大小有三种方法。
第一种方法:使用GetSystemMetrics函数
GetSystemMetrics(SM_CXFULLSCREEN); //获取最大化窗体的显示区域宽度
GetSystemMetrics(SM_CYFULLSCREEN); //获取最大化窗体的显示区域高度
第二种方法:使用GetClientRect函数
该函数的原型如下:
BOOL GetClientRect(
HWND hWnd, // handle to window
LPRECT lpRect // client coordinates
);
书上没介绍该函数的使用方法,看MSDN的示例代码,经过测试,其使用方法如下:
RECT rect;
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect(hwnd, &rect);
x = rect.right;
y = rect.bottom;
SetTextAlign(hdc, TA_RIGHT | TA_TOP);
TextOut(hdc, 100, 0, szBuffer, wsprintf(szBuffer,TEXT("%5d"), x));
TextOut(hdc, 100, cyChar,szBuffer, wsprintf(szBuffer, TEXT("%5d"), y));
EndPaint (hwnd, &ps) ;
第三种方法:LOWORD和HIWORD宏
case WM_SIZE:
x = LOWORD(lParam);
y = HIWORD(lParam);
- 获取系统分辨率
- 用GetSystemMetrics函数获取系统分辨率
- QTP中获取当前系统分辨率
- 用GetSystemMetrics函数获取系统分辨率
- 用GetSystemMetrics函数获取系统分辨率
- MFC 获取当前系统的分辨率
- 获取分辨率
- 获取分辨率
- 获取分辨率
- 获取分辨率
- 获取分辨率
- Windows获取系统分辨率4种方式总结
- linux实用技巧:获取当前系统显示分辨率"xrandr --current"
- symbian 获取屏幕 分辨率
- 获取显示器分辨率
- C#获取显示器分辨率
- 获取手机屏幕分辨率
- 获取手机屏幕分辨率
- Java script 正则表达式(8)
- 调用qsort()的排序函数
- microstation中的cell(单元)sharedcell(共享单元)
- UI自动化测试,模拟用户操作。
- Java文件路径
- 获取系统分辨率
- 使用Ajax对用户合法性做判断
- CFS进程调度
- Iframe传值
- 一些规范
- JFreeChart的柱状图实现
- SVN 常用命令
- git 回滚
- PSP游戏下载网址