GetDialogBaseUnits

函数功能:

       该函数返回系统的对话基本单位,该基本单位为系统字体字符的平均宽度和高度。对于使用系统字体的对话框,可以用这些值在对话框模板之间转换,比如在对话框模板和像素之间。对于不使用系统字体的对话框,从对话框模板单位到像素的转换要根据对话框使用的字体而定。对于对话框的其中一种类型用MaPDialogRect函数很容易地来执行转换,MaPDialogRect考虑字体且正确的把一个长方形模板单位转换为此像素。


API 函数原型:

注释:_In_ 说明该参数是输入的。
  1. LONG GetDialogBaseUnits(
  2.   VOID
  3. );
复制代码


参数解析:

参数 含义


返回值:

1.返回值为一个32位的含有对话基本单位的值。返回值的低位字含有水平对话框基本单位,且高位字含有垂直对话框基本单位。

2.获取字体的横/纵座标:返回值是一个8位16进制数,高4位存放字体的高度,低4位存放字体的宽度,可以通过以下语句了获取字体的高和宽
       int charH = HIWORD(GetDialogBaseUnits());
       int charW = LOWORD(GetDialogBaseUnits());

备注:

       GetDialogBaseUnits函数返回的水平基本单位同系统字体中字符以像素为单位的平均宽度相等;垂直基本单位同系统字体中字符的以像素为单位的平均高度相等; 对于一个没有使用系统字体的对话框基本单位相等于对话框字体字符以像素为单位的平均宽度和平均高度。可以用GetTextMetrics和GetTextExtentPoint32函数为一个选择的字体来计算这些值。但是,如果计算结果与那些通过系统执行的值不同,那么可以用MapDialogRect函数避免可能发生的错误。每一个水平基本单位同四个水平对话框模板单位相等;每一个垂直基本单位同八个垂直对话框模板单位相等。所以用下列公式来把对话框模板单位转换为像素:
       PiselX=(temptateunitX★baseunitX)/4
       PiseIY=(templateunitY★baseunitY)/8

       同样地.用下列公式来把像素转换为对话框模板单位:
       templateunitX=(pixelX★4)/baseunitX;
       templateunitY=(plxelY★8)/baseunitY;

       Windows CE:Windows CE不支持此函数的任何一个扩展的错误值。

       速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows:1.0及以上版本;头文件:Winuser.h;库文件:user32.lib

发布了17 篇原创文章 · 获赞 19 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章