C DrawText 函式應用

2021-10-09 03:39:02 字數 3008 閱讀 5821

返回值該函式在指定的矩形裡寫入格式化文字,根據指定的方法對文字格式化(擴充套件的製表符,字元對齊、折行等)。

intdrawtext(hdc hdc, lpctstr lpstring, int ncount, lprect lprect, uint uformat);

hdc:裝置環境控制代碼。

lpstring:指向將被寫入的字串的指標,如果引數ncount是-1,則字串必須是以\0結束的。如果uformat包含dt_modifystring,則函式可為此字串增加4個字元,存放字串的緩衝區必須足夠大,能容納附加的字元。

ncount:指向字串中的字元數。如果ncount為-1,則lpstring指向的字串被認為是以\0結束的,drawtext會自動計算字元數。

lprect:指向結構rect的指標,其中包含正文將被置於其中的矩形的資訊(按邏輯座標)。

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

引數描述

dt_bottom

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

dt_calcrect

決定矩形的寬和高。

如果正文有多行,drawtext使用lprect定義的矩形的寬度,並擴充套件矩形的底訓以容納正文的最後一行。

如果正文只有一行,則drawtext改變矩形的右邊界,以容納下正文行的最後乙個字元。

上述任何一種情況,drawtext返回格式化正文的高度而不是寫正文。

dt_center

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

dt_vcenter

使正文在矩形中垂直居中。

(dreamsmart注:此引數必須和dt_single連用,否則gdi無法計算目的矩形)

dt_editcontrol

複製多行編輯控制的正文顯示特性。

特殊地,為編輯控制的平均字元寬度是以同樣的方法計算的,此函式不顯示只是部分可見的最後一行。

dt_end_ellipsis或dt_path_ellipsis

可以指定dt_end_ellipsis來替換在字串末尾的字元,或指定dt_path_ellipsis來替換字串中間的字元。

如果字串裡含有反斜扛(\),dt_path_ellipsis盡可能地保留最後乙個反斜槓之後的正文。

字串不會被修改,除非指定了dt_modifystring標誌。

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_calcrect, dt_externalleading, dt_internal, dt_noclip, dt_noprefix值不能和dt_tabstop值一起使用

dt_top

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

dt_wordbreak

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

dt_word_ellipsis

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

dt_prefixonly

僅僅在(&)字首字元的位置下繪製乙個下劃線。不繪製字串中的任何其他字元。

輸入的字串: 「a&bc&&d」

正常: 「abc&d」

dt_prefixonly:" _ "

void cviewdlg::

onpaint()

cdc *pdc =

&mdc;

x =10;

y =20;

str.

format(_t

("這是個測試"))

; crect rect

(x, y,

60, y +10)

; pdc-

>

settextcolor

(rgb

(255,0

,0))

; pdc-

>

drawtext

(str,

&rect, dt_left)

;//釋放記憶體

mdc.

deletedc()

;}

如果函式呼叫成功,返回值是正文的高度(邏輯單位)。

如果指定了dt_vcenter或dt_bottom,返回值是lprect->top到繪製的正文的底部的偏移值。   如果函式呼叫失敗,返回值是0   

windows nt:若想獲得更多錯誤資訊,請呼叫getlasterror函式。

參考鏈結: drawtext.

函式應用AS Atan2函式應用

package public function init public function djhs e 方法 每日一道理 乙個安靜的夜晚,我獨自一人,有些空虛,有些淒涼。坐在星空下,抬頭仰望美麗天空,感覺真實卻由虛幻,閃閃爍爍,似乎看來還有些跳動。美的一切總在瞬間,如同 海市蜃樓 般,也只是剎那間的...

va start va end 函式應用

1 當無法列出傳遞函式的所有實參的型別和數目時,可用省略號指定參數列 void foo void foo parm list,2 函式引數的傳遞原理 函式引數是以資料結構 棧的形式訪問,從右至左入棧.eg include void fun int a,int main output 1 2 3 4 ...

Mysql 函式應用

摘自 daisylh 部落格 1.用if.then.elseif.delimiter drop function if exists demodb sf1 create function sf1 pid varchar 10 returns varchar 100 begin declare str...