在win中的窗口上进行文字显示:
有以下几个基本概念:
消息:
WM_PAINT:
在有无效区域时发送该消息,优先级比较低,有时看到一个显示的白的窗口就是因为该消息不能及时得到响应造成的。可以使用在窗口无效的函数后使用UpdateWindow (hwnd) ;函数使应用程序对其立即做出响应
WM_CREATE:
在创建窗口时响应的第一个消息。
WM_SIZE
在窗口大小改变时发出该消息,并且在lParam参数的低字组中包含显示区域的宽度,高字组中包含显示区域的高度。
cxClient = LOWORD (lParam) ;
cyClient = HIWORD (lParam) ;
WM_VSCROLL
WM_HSCROLL
wParam消息参数被分为一个低字组和一个高字组。wParam的低字组是一个数值,它指出了鼠标对滚动条进行的操作。这个数值被看作一个「通知码」。通知码的值由以SB(代表「scroll bar(滚动条)」)开头的标识符定义。以下是在WINUSER.H中定义的通知码:
#define SB_LINEUP 0 #define SB_LINELEFT 0 #define SB_LINEDOWN 1 #define SB_LINERIGHT 1 #define SB_PAGEUP 2 #define SB_PAGELEFT 2 #define SB_PAGEDOWN 3 #define SB_PAGERIGHT 3 #define SB_THUMBPOSITION 4 #define SB_THUMBTRACK 5 #define SB_TOP 6 #define SB_LEFT 6 #define SB_BOTTOM 7 #define SB_RIGHT 7 #define SB_ENDSCROLL 8
结构体:
绘图信息结构
前面提到过,Windows为每个窗口保存一个「绘图信息结构」,这就是PAINTSTRUCT,定义如下:
typedef struct tagPAINTSTRUCT { HDC hdc ; BOOL fErase ; RECT rcPaint ; BOOL fRestore ; BOOL fIncUpdate ; BYTE rgbReserved[32] ; } PAINTSTRUCT ;
typedef struct tagTEXTMETRIC { LONG tmHeight ; LONG tmAscent ; LONG tmDescent ; LONG tmInternalLeading ; LONG tmExternalLeading ; LONG tmAveCharWidth ; LONG tmMaxCharWidth ; 其它结构字段 } TEXTMETRIC, * PTEXTMETRIC ;
typedef struct tagSCROLLINFO { UINT cbSize ;// set to sizeof (SCROLLINFO) UINT fMask ; // values to set or get int nMin ; // minimum range value int nMax ; // maximum range value UINT nPage ; // page size int nPos ; // current position int nTrackPos ;// current tracking position } SCROLLINFO, * PSCROLLINFO ;
函数:
TextOut (hdc, x, y, psText, iLength) ;
InvalidateRect使显示区域内的矩形无效
GetUpdateRect,可以在任何时候取得这些坐标
ValidateRect函数使显示区域内的任意矩形区域变为有效
获得设备句柄,在响应WM_PAINT中响应
hdc = BeginPaint (hwnd, &ps) ;
EndPaint (hwnd, &ps) ;
可以使之前的无效区域变为有效。
hdc = GetDC (hwnd) ;
使用GDI函数
ReleaseDC (hwnd, hdc) ;
GetTextMetrics (hdc, &tm) ;
wsprintf (szBuffer, TEXT ("The sum of %i and %i is %i"),
iA, iB, iA + iB)) ;
GetSystemMetrics
SetTextAlign (hdc, TA_RIGHT | TA_TOP) ;
SetScrollRange、SetScrollPos、GetScrollRange和GetScrollPos
SetScrollInfo (hwnd, iBar, &si, bRedraw) ;
GetScrollInfo (hwnd, iBar, &si) ;