Win32學習筆記 文字與文字操作

2021-04-09 09:49:47 字數 2076 閱讀 1809

文字與文字操作

1.hdc hdc;

hdc=beginpaint(hwnd,lppaintstruct);

2.定義字型控制代碼變數:hfont hf

3.獲得系統字型控制代碼:hf= getstockobject ( nfontstyle)//獲取系統的字型

建立自定義字型

hfont=createfont

(int nheight, //字型高度,取0則採用系統預設值,使用邏輯單位

int nwidth, //字型寬度,取0則由系統根據高寬比取最佳值,使用邏輯單位

int nescapement, //每行文字相對於頁底的角度,以十分之一度為單位

int norienation, //每個文字相對於頁底的角度,以十分之一度為單位

dword nweight, //字型粗細度,取值範圍為0~1000,例如400為正常字型,700為黑體

dword dwltalic, //如果要求字型傾斜,則取非零

dword dwunderline, //如果要求下劃線,則取非零

dword dwstrikeout, //如果要求中劃線,則取非零

dword dwcharset, //字型所屬字符集(很重要)

dword dwoutputprecision, //輸出精度,一般取預設值out_default_precis

dword dwclipprecision, //剪裁精度,一般取預設值clip_default_precis

dword dwquality, //輸出質量,一般取預設值default_quality

dword dwpitchandfamily, //字型的間距及字型的系列,一般取預設值default_pitch

dword lpszfacename //字型名(很重要)

) 4.將字型選入裝置環境:selectobject(hdc,hf)

5.設定字型顏色:settextcolor(hdc,crcolor)

設定背景顏色:setbkcolor(hdc,crcolor)

6.文字的輸出過程:

1)獲取字型資訊  gettextmetrics (hdc,&tm) //tm為textmetric結構,系統將當前字型資訊拷貝到tm中

2)格式化文字

(1)確定後續文字座標bool gettextextentpoint32(hdc hdc,lpctstr lpszstring, int nlength,lpsize lpsize)

(2)確定換行時文字座標 cy=tm.tmheight+tm.tmexternalleading;

3)用函式輸出文字:bool textout(hdc hdc, int x, int y,lpctstr lpstring,int ncount)

7.deleteobject(hdc,hfont);

8.endpaint(hwnd,lppaintstruct);

附:1. getstockobject (nfontstyle)中nfontstyle(七種系統字型):

ansi_fixed_font  ansi標準的固定寬度的字型

ansi_var_font  ansi標準的可變寬度的字型

default_gui_font 當前gui的預設字型

oem_fixed_font  由標準裝置製造商(oem)提供

device_default_font 當前圖形裝置的字型

system_fixed_font windows的標準固定寬度的字型

system_font  windows提供的可變快度的字型(常作預設字型,windows使用它作為介面字型)

2.系統定義的textmetrics的結構如下:

typedef struct tagtextmetric

textmetric

3.size資料結構的定義如下:

typedef struct tagsize

size;

4.引數dwcharset 可取的系統字符集有:

ansi_charset、oem_charset、symbol_charset、default_charset、shiftjis_charset和gb2312_charset等。 

Win32學習筆記 WM PAINT

1.wm paint 的產生 wm paint 由於視窗的互相覆蓋等,產生需要繪製的區域,那麼就會產生wm paint訊息。一般情況下通過api宣告需要繪製的區域,來產生wm paint 例如,可以使用invalidaterect宣告一個需要重新繪製的區域。2.wm paint的注意點 2.1 如果...

Win32程式設計學習筆記

之前也學了點window程式設計,但零零碎碎的,知識體系不完整。現在開始,邊複習邊學新知識。下面都是在vs2010上寫的程式。下面的程式是在視窗中打出字串,並當滑鼠左擊時畫一個圓。其中有一點要注意的,就是 beginpaint和getdc區別 beginpaint 和endpaint 可以刪除訊息佇...

Win32學習筆記 滑鼠操作

1.游標型別 1 系統游標型別 windows.h idc arrow 箭頭游標 idc cross 十字游標 idc ibeam i字游標 idc icon 空圖示 idc sizeall 指向四個方向的帶有箭頭的游標 idc sizenesw 帶有指向東北方向和西南方向的箭頭的游標 idc si...

Win32學習筆記 檔案操作

dword getlogicaldrives void 該函式的返回值是一個無符號的32位整數,每一位代表一個驅動器,bit 0代表驅動器a,bit 1代表驅動器b,bit 2代表驅動器c,依次類推。如果該位為1,表示該驅動器存在,否則不存在。dword getlogicaldrivestrings...

Win32彙編學習筆記(一)

一 基礎 資訊以位元組為單位儲存,即byte。1個byte有8個bit,從高到低是7 6 5 4 3 2 1 0。第7最高,叫msb,most significant bit。第0最低,叫lsb,least xx。32位cpu一次操作可以處理32bit個二進位制位。因此需要比位元組更大的單位。比如 ...