第5節(1 / 3)

//移動插入符號

說明:

1)創建插入符要在窗口創建完成之後,CreateSolidCaret函數創建的插入符被初始化為隱藏,所以需要調用ShowCaret()將其顯示。

2)使用CreateCaret函數創建位圖插入符的時候,不能使用局部的位圖對象關聯位圖資源。(與資源相關聯的C 對象,當它析構的時候會同時把與它相關聯的資源銷毀。)

2,獲取當前字體信息的度量:CDC::GetTextMetrics

BOOL GetTextMetrics( LPTEXTMETRIC lpMetrics ) const;

說明:

typedef struct tagTEXTMETRIC { /* tm */

int tmHeight;//字體高度。Specifies the height (ascent descent) of characters.

int tmAscent;//基線以上的字體高度

int tmDescent;//基線以下的字體高度

int tmInternalLeading;

int tmExternalLeading;

int tmAveCharWidth;//字符平均寬度

int tmMaxCharWidth;

int tmWeight;

BYTE tmItalic;

BYTE tmUnderlined;

BYTE tmStruckOut;

BYTE tmFirstChar;

BYTE tmLastChar;

BYTE tmDefaultChar;

BYTE tmBreakChar;

BYTE tmPitchAndFamily;

BYTE tmCharSet;

int tmOverhang;

int tmDigitizedAspectX;

int tmDigitizedAspectY;

} TEXTMETRIC;

//創建設備描述表

CClientDC dc(this);

//定義文本信息結構體變量

TEXTMETRIC tm;

//獲得設備描述表中的文本信息

dc.GetTextMetrics(&tm);

//根據字體大小,創建合適的插入符

CreateSolidCaret(tm.tmAveCharWidth / 8, tm.tmHeight);

ShowCaret();

3,OnDraw函數:

virtual void OnDraw( CDC* pDC )

當窗口(從無到有或尺寸大小改變等)要求重繪的時候,會發送WM_PAIN消息,調用OnDraw函數進行重繪。在客戶區的繪圖如果想保持不變也可以在這個函數中進行編寫,每次重給的時候會再次執行代碼,生成繪圖.

4,獲取某字符串的高度和寬度(區別字符串的長度,長度表示字符個數):