Windows CreateFont:創立本人的字型

來源:互聯網
上載者:User

標籤:windows   漂亮   底線   

後面無論是運用文本輸入函數照樣 static 控制項,字型多是默許的,比擬漂亮,我們完整可以本人創立愈加炫酷的字型。
創立字型運用 CreateFont 函數,它的原型是:

HFONT CreateFont( int cHeight, //字型的邏輯高度 int cWidth, //字型的邏輯寬度 int cEscapement, //指定移位向量絕對X軸的偏轉角度 int cOrientation, //指定字元基準絕對X軸的偏轉角度 int cWeight, //設定字型粗細水平 DWORD bItalic, //能否啟用斜體 DWORD bUnderline, //能否啟用底線 DWORD bStrikeOut, //能否啟用刪除線 DWORD iCharSet, //指定字元集 DWORD iOutPrecision, //輸入精度 DWORD iClipPrecision, //剪裁精度 DWORD iQuality, //輸入品質 DWORD iPitchAndFamily, //字型族 LPCSTR pszFaceName //字型名 );

下面的14個參數完整記住簡直弗成能,下面是複雜的闡明,其他的“照貓畫虎”即可。
1) 參數 cWidth 和 cHeight 平日取負值,且高度為寬度的2倍,如 -18 和 -9,即可指定 13.5 |(H+W)/2| 磅的字型。
2) 關於字型粗細水平 cWeight,可以運用 FW_ 掃尾的宏界說;普通取 FW_NORMAL (400),此參數需求值的範圍為 [0,1000]。
3) 關於參數 bItalic、bUnderline、bStrikeOut,直接運用 TRUE 或 FALSE 傳值即可。
4) 關於字元集 iCharSet,普通可以直接運用 DEFAULT_CHARSET 讓零碎主動處置。

留意:字型也是一種 GDI 對象,運用完後也要在 WM_DESTROY 音訊中刪除。

創立完字型後並不克不及立刻運用,還需求手動觸發 WM_SETFONT 音訊,讓Windows 將以後字型設定為我們創立的字型。
發送音訊運用 SendMessage 函數,它可以讓我們在需要時自動向視窗發送各類音訊,原型為:

LRESULT SendMessage( HWND hWnd, //發送音訊的目的視窗控制代碼 UINT msg, //將要發送的音訊 WPARAM wParam, //附加音訊1 LPARAM lParam //附加音訊2 );

這些參數和 WndProc 函數十分相似。沒錯,SendMessage 發送的音訊就是由視窗進程來處置的。
設定字型的音訊是 WM_SETFONT,只需向附加參數 wParam 傳入 CreateFont 前往的控制代碼即可(需求轉換到 WPARAM 類型)。請看下面的例子:

//視窗進程 LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; static HFONT hFont; //聲明一個邏輯字型控制代碼為靜態變數 static HWND labExample; //在初期,我們將其聲明為靜態變數 switch (message){ case WM_CREATE: //創立邏輯字型 hFont = CreateFont( -15/*高度*/, -7.5/*寬度*/, 0/*不必管*/, 0/*不必管*/, 400 /*普通這個值設為400*/, FALSE/*不帶斜體*/, FALSE/*不帶底線*/, FALSE/*不帶刪除線*/, DEFAULT_CHARSET, //這裡我們運用默許字元集,還有其他以 _CHARSET 開頭的常量可用 OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, //這行參數不必管 DEFAULT_QUALITY, //默許輸入品質 FF_DONTCARE, //不指定字型族*/ L"微軟雅黑" //字型名 ); //創立靜態文字框控制項 labExample = CreateWindow( L"static", //靜態文字框的類名 L"你好,歡迎離開C言語中文網" , //控制項的文本 WS_CHILD /*子視窗*/ | WS_VISIBLE /*創立時顯示*/ | WS_BORDER /*帶邊框*/, 60 /*X座標*/, 60/*Y座標*/, 150/*寬度*/, 100/*高度*/, hWnd/*父視窗控制代碼*/, (HMENU)1, //為控制項指定一個獨一標識符 hInst, //以後執行個體控制代碼 NULL); //設定控制項字型 SendMessage( labExample, //欲設定字型的控制項控制代碼 WM_SETFONT, //音訊名(音訊類型) (WPARAM)hFont, //字型控制代碼 NULL //傳空值即可 ); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO:  在此添加恣意畫圖代碼... EndPaint(hWnd, &ps); break; case WM_DESTROY: //請做好善後任務 DeleteObject(hFont);//刪除創立的字型 PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }

運轉後果:
650) this.width=650;" src="http://c.biancheng.net/cpp/uploads/allimg/150729/1-150H9141K5W1.png" style="border:0px;color:rgb(51,51,51);font-family:‘微軟雅黑‘, ‘Microsoft Yahei‘, Arial, Helvetica, sans-serif;font-size:14px;line-height:21px;white-space:normal;width:320px;height:253px;" />
如上設定字型的辦法簡直實用於一切的 Win32 規範控制項。


本文出自 “11999764” 部落格,請務必保留此出處http://12009764.blog.51cto.com/11999764/1843796

Windows CreateFont:創立本人的字型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.