每天UP一点点 - 15.12.15(输出文字)

1.输出文字

1-1.设备内容(上下文)

1-1-1.取得设备内容句柄(方法一)

PAINTSTRUCT ps ;

HDC hdc ;

caseWM_PAINT:
        
  hdc = BeginPaint (hwnd, &ps) ;
        
         使用GDI函数
        
  EndPaint (hwnd, &ps) ;
        
  return 0 ;

1-1-2.绘图信息结构

typedef struct tagPAINTSTRUCT
        
{
        
    HDC hdc ; //设备内容句柄
        
    BOOL fErase ; //表示是否擦除背景
        
    RECT rcPaint ; //表示无效区域的范围
        
    BOOL fRestore ;
        
    BOOL fIncUpdate ;
        
    BYTE rgbReserved[32] ;
        
} PAINTSTRUCT ;

1-1-3.取得设备内容句柄(方法二)

<span style="font-weight: normal;">PAINTSTRUCT ps ;
HDC hdc ;

caseWM_PAINT:
        
  hdc = GetDC (hwnd) ;
        
      使用GDI函数
        
  ReleaseDC (hwnd, hdc) ;
        
  return 0 ;</span>

1-1-4.区别

BeginPaint()会使无效区域变为有效,而GetDC不会,所以使用GetDC后若不使用ValidateRect()使其有效,windows会不停的发送WM_Paint消息,使窗口闪烁或卡死

BOOL ValidateRect(

HWND hWnd,          // 窗口的句柄

CONST RECT *lpRect  // 指向RECT结构的指针

);

1-2.系统字体

1-2-1.字符结构

typedef struct tagTEXTMETRIC {

<span style="color:#ff0000;">  LONG tmHeight; //字符高度</span>

<span style="color:#ff0000;">  LONG tmAscent; //字符上部高度(基线以上)</span>

<span style="color:#ff0000;">  LONG tmDescent; //字符下部高度(基线以下)</span>

  LONG tmInternalLeading; //由tmHeight定义的字符高度的顶部空间数目

  LONG tmExternalLeading; //夹在两行之间的空间数目

<span style="color:#ff0000;">  LONG tmAveCharWidth; //平均字符宽度</span>

<span style="color:#ff0000;">  LONG tmMaxCharWidth; //最宽字符的宽度</span>

  LONG tmWeight; //字体的粗细轻重程度

  LONG tmOverhang; //加入某些拼接字体上的附加高度

  LONG tmDigitizedAspectX; //字体设计所针对的设备水平方向

  LONG tmDigitizedAspectY; //字体设计所针对的设备垂直方向

  BCHAR tmFirstChar; //为字体定义的第一个字符

  BCHAR tmLastChar; //为字体定义的最后一个字符

  BCHAR tmDefaultChar; //字体中所没有字符的替代字符

  BCHAR tmBreakChar; //用于拆字的字符

  BYTE tmItalic; //字体为斜体时非零

  BYTE tmUnderlined; //字体为下划线时非零

  BYTE tmStruckOut; //字体被删去时非零

  BYTE tmPitchAndFamily; //字体间距(低4位)和族(高4位)

  BYTE tmCharSet; //字体的字符集

} TEXTMETRIC;

1-2-2.获取字符结构

TEXTMETRIC tm ;
hdc = GetDC (hwnd) ;
        
GetTextMetrics (hdc, &tm) ;
        
ReleaseDC (hwnd, hdc) ;

1-2-3.输出字体

BOOL TextOut(

HDC hdc, // 设备描述表句柄

int nXStart, // 字符串的开始位置 x坐标

int nYStart, // 字符串的开始位置 y坐标

LPCTSTR lpString, // 字符串

int cbString // 字符串中字符的个数

)

int DrawText(

HDC hDC, // 设备描述表句柄

LPCTSTR lpString, // 将要绘制的字符串

int nCount, // 字符串的长度

LPRECT lpRect, // 指向矩形结构RECT的指针

UINT uFormat // 正文的绘制选项

);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值