乙個字型按鈕類 WTL

2021-06-16 05:05:03 字數 1709 閱讀 3562

本文打算介紹兩個內容:乙個是wtl中非常好用的cdialogresize模板類,能讓你拖動對話方塊改變大小(包括控制項能自動適應對話方塊的改變);另乙個是button按鈕的子類化,產生乙個有立體感的字型(本站上的乙個例子是用mfc做的cmytextbutton類,我把它移植到wtl中,封裝成cfontbutton類,在這裡先感謝提供此**的作者),不過只能顯示英文本型。通過這些例子,你可以看出wtl並沒有什麼神秘的地方。

一. cdialogresize類的使用

1.對話方塊繼承的基類列中新增public cdialogresize

本例中新增

public cdialogresize

2.新增巨集

begin_dlgresize_map(cdialogresize<>)

dlgresize_control(id, flags)

end_dlgresize_map()

指定那個控制項需要這種支援,其中id是控制項id,flags的值如下所示:

dlsz_size_x = 0x00000001,

dlsz_size_y = 0x00000002,

dlsz_move_x = 0x00000004,

dlsz_move_y = 0x00000008,

dlsz_repaint = 0x00000010.

3.在oninitdialog()中新增dlgresize_init(),ok

在atlframe.h中你可以找到dlgresize_init()的定義,以前也有人用mfc寫過類似的**,有興趣的話比較一下。

最後別忘了在stdafx.h中新增相應的標頭檔案,具體見原始檔。

二.cfontbutton類的實現

1.cownerdraw和ccustomdraw

這兩個模板類都支援自畫功能,他們兩個的區別是ccustomdraw處理nm_customdraw,一般支援header,

list view, rebar, *******, tooltip, trackbar 和 tree view 控制項的重繪;cownerdraw處理wm_drawitem, wm_measureitem, wm_compareitem和 wm_deleteitem這四個訊息,通常支援button, combo box, list box, list view control, 和 menu items

的自繪。

2. ccustomdraw 的訊息對映

template class cownerdraw

;有兩種方法處理wm_drawitem,你可以在控制項的父視窗處理此訊息,如下所示:

class c***dlg : public cownerdraw, ...

;另一種方法是讓控制項自己處理此訊息,如下所示,本例中採用的就是此種方法

class cfontbuttonimpl : public cownerdraw, ...

;3. ccontrolwintraits

typedef  cwintraits  ccontrolwintraits;

想必大家一看就明白是什麼意思。

4. cfontbutton類的使用

在wtl工程中加入檔案fontbutton.h,然後新增變數

cfontbuttonctrl m_fontbutton;

在oninitdialog( )中新增

m_fontbutton.subclasswindow(getdlgitem(idc_button_font1));

乙個字面常量

c 有兩種常數 文字,符號。常量字面值常量文字數字插入 他們是常數,因為你不能改變他們的價值觀。1int x 5 5是乙個字面常量 常量可以字尾,確定其型別。整數常量可以有乙個u或u字尾,意味著他們是無符號的。整數常量也可以有乙個l或者l字尾,這意味著他們是長整數。然而,這些字尾通常是可選的,因為編...

乙個字元驅動

實現乙個基本框架 define notice fmt,args.printk kern notice scull fmt,args define error fmt,args.printk kern err scull fmt,args static init int scull init void...

乙個字句切割 strtok s

突然想到的一件事這是,之前是用stringstream來對那些東西切割的,只是空格分隔的,之後發現不能切割其他符號的字句 也可能是我水平有限 然後我發現strtok s可以自定義分割符,於是我記錄一下這個操作。include include include using namespace std c...