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

来源:互联网 发布:吉他谱制谱软件 编辑:程序博客网 时间:2024/06/15 18:07

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 // 正文的绘制选项);


0 0
原创粉丝点击