C++ DrawText

在採用DT_WORDBREAK方式DrawText之後取得緩衝區內的數據,最後一行居然是空的,加上 DT_NOCLIP就好了。

 

DrawText:

函數功能:該函數在指定的矩形裏寫入格式化文本,根據指定的方法對文本格式化(擴展的製表符,字符對齊、折行等)。 

        函數原型:int   DrawText(HDC,   hdc,   LPCTSTR   lpString,   int   nCount,   LPREST   lpRect,   UINT   uFormat); 

        參數: 

        hdc:設備環境句柄。 

        lpString:指向將被寫入的字符串的指針,如果參數nCount是C1,則字符串必須是以/0結束的。 

        如果uFormat包含DT_MODIFYSTRING,則函數可爲此字符串增加4個字符,存放字符串的緩衝區必須足夠大,能容納附加的字符。 

        nCount:指向字符串中的字符數。如果nCount爲C1,則lpString指向的字符串被認爲是以/0結束的,DrawText會自動計算字符數。 

        lpRect:指向結構RECT的指針,其中包含正文將被置於其中的矩形的信息(按邏輯座標)。 

        uFormat:指定格式化正文的方法。它可以下列值的任意組合,各值描述如下: 

        DT_BOTTOM:將正文調整到矩形底部。此值必須和DT_SINGLELINE組合。 

        DT_CALCRECT:決定矩形的寬和高。如果正文有多行,DrawText使用lpRect定義的矩形的寬度,並擴展矩形的底訓以容納正文的最後一行,如果正文只有一行,則DrawText改變矩形的右邊界,以容納下正文行的最後一個字符,上述任何一種情況,DrawText返回格式化正文的高度而不是寫正文。 

        DT_CENTER:使正文在矩形中水平居中。 

        DT_EDITCONTROL:複製多行編輯控制的正文顯示特性,特殊地,爲編輯控制的平均字符寬度是以同樣的方法計算的,此函數不顯示只是部分可見的最後一行。 

        DT_END_ELLIPSIS或DT_PATH_ELLIPSIS:可以指定DT_END_ELLIPSIS來替換在字符串末尾的字符,或指定DT_PATH_ELLIPSIS來替換字符串中間的字符。如果字符串裏含有反斜扛,DT_PATH_ELLIPSIS儘可能地保留最後一個反斜槓之後的正文。 

        DT_EXPANDTABS:擴展製表符,每個製表符的缺省字符數是8。 

        DT_EXTERNALLEADING:在行的高度裏包含字體的外部標頭,通常,外部標頭不被包含在正文行的高度裏。 

        DT_INTERNAL:用系統字體來計算正文度量。 

        DT_LEFT:正文左對齊。 

        DT_MODIFYSTRING:修改給定的字符串來匹配顯示的正文,此標誌必須和DT_END_ELLIPSIS或DT_PATH_ELLIPSIS同時使用。 

        DT_NOCLIP:無裁剪繪製當DT_NOCLIP使用時DrawText的使用會有所加快。 

        DT_NOPREFIX:關閉前綴字符的處理,通常DrawText解釋助記前綴字符,&爲給其後的字符加下劃線,解釋&&爲顯示單個&。指定DT_NOPREFIX,這種處理被關閉。 

        DT_RIGHT:正文右對齊。 

        DT_RTLREADING:當選擇進設備環境的字體是Hebrew或Arabicf時,爲雙向正文安排從右到左的閱讀順序都是從左到右的。 

        DT_SINGLELINE:顯示正文的同一行,回車和換行符都不能折行。 

        DT_TABSTOP:設置製表,參數uFormat的15 "C8位(低位字中的高位字節)指定每個製表符的字符數,每個製表符的缺省字符數是8。 

        DT_TOP:正文頂端對齊(僅對單行)。DT_VCENTER:正文水平居中(僅對單行)。 

        DT_WORDBREAK:斷開字。當一行中的字符將會延伸到由lpRect指定的矩形的邊框時,此行自動地在字之間斷開。一個回車一換行也能使行折斷。 

        DT_WORD_ELLIPSIS:截短不符合矩形的正文,並增加橢圓。 

        注意:DT_CALCRECT,   DT_EXTERNALLEADING,   DT_INTERNAL,   DT_NOCLIP,   DT_NOPREFIX值不能和DT_TABSTOP值一起使用。 

        返回值:如果函數調用成功,返回值是正文的高度;如果函數調用失敗,返回值是0。 

        Windows   NT:若想獲得更多錯誤信息,請調用GetLastError函數。 

        備註:函數DrawText用設備環境中的字體選擇、正文顏色和背景顏色來寫正文,除非DT_NOCLIP被使用,DrawText裁剪正文,所以它不會出現在指定矩形的外面,除DT_SINGLELINE格式化,其餘的格式都認爲正文有多行。 

        如果選擇的字體對指定的矩形而言太大,DrawText不會試圖去換成一種小字體。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章