本文打算介紹兩個內容:乙個是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...