WTL學習筆記 4 控制項加強

2021-09-06 04:16:13 字數 2954 閱讀 9746

1.chyperlink

擴充套件了static text控制項

url超連結

2.cchecklistviewctrlimpl

乙個以checkbox為元素的listview控制項

3.cwaitcursor && ccustomwaitcursor

建構函式中載入等待的圖示,析構函式中還原,省去了手動還原的步驟,ccustomwaitcursor繼承cwaitcursor,允許採用自定義的圖示

4.csortlistviewctrl

提供sortitems方法對列進行排序

5.關於ownerdraw和customdraw

ownerdraw將會重繪控制項整體ui呈現,customdraw只不過更改控制項其中的乙個屬性而已.

好比wpf重寫render方法就是ownerdraw,更改乙個屬性則是customdraw

6.cbitmapbutton

在乙個點陣圖中載入多個按鈕資源狀態,比normal,pushed,hover,disable

cimagelist iml;

iml.createfromimage ( idb_alyson_imglist, 81, 1, clr_none, image_bitmap,

lr_createdibsection );

m_wndbmpbtn.subclasswindow ( getdlgitem(idc_alyson_bmpbtn) );

m_wndbmpbtn.settooltiptext ( _t("alyson") );

m_wndbmpbtn.setimagelist ( iml );

m_wndbmpbtn.setimages ( 0, 1, 2, 3 );

7.rebar

rebar:可以說的*******的加強版,可以更改布局

使用方法

// create command bar window

hwnd hwndcmdbar = m_cmdbar.create(m_hwnd, rcdefault, null, atl_******_cmdbar_pane_style);

// attach menu

m_cmdbar.attachmenu(getmenu());

// load command bar images

m_cmdbar.loadimages(idr_mainframe);

// remove old menu

setmenu(null);

hwnd hwnd******* = create*************ctrl(m_hwnd, idr_mainframe, false, atl_******_*******_pane_style);

create******rebar(atl_******_rebar_noborder_style);

add******rebarband(hwndcmdbar);

add******rebarband(hwnd*******, null, true);

create******statusbar();

m_hwndclient = m_view.create(m_hwnd, rcdefault, null, ws_child | ws_visible | ws_clipsiblings | ws_clipchildren, ws_ex_clientedge);

uiadd*******(hwnd*******);

uisetcheck(id_view_*******, 1);

uisetcheck(id_view_status_bar, 1);

(1)使用rebar之前必須先呼叫create******rebar方法,然後再呼叫add******rebarband方法

hwnd hwnd******* = create*************ctrl(m_hwnd, idr_mainframe, false, atl_******_*******_pane_style);

create******rebar(atl_******_rebar_noborder_style);

add******rebarband(hwnd*******, null, true);

(2)對menu新增rebar功能,先將menu新增到ccommandbarctrl裡面,然後呼叫add******rebarband方法

// create command bar window

hwndhwndcmdbar= m_cmdbar.create(m_hwnd, rcdefault, null, atl_******_cmdbar_pane_style);

// attach menu

m_cmdbar.attachmenu(getmenu());

// load command bar images

m_cmdbar.loadimages(idr_mainframe);

// remove old menu

setmenu(null);

8.gdi雙緩衝機制

wtl提供了cdoublebufferimpl雙緩衝實現,及預設的cdoublebufferwindowimpl,原理是利用cmemorydc建立了乙個bitmap,繼承cdoublebufferimpl的類只需要重寫dopaint方法即可

cmemorydc的實現

class 

cmemorydc : public

cdc ~cmemorydc()

};

參考:

WTL 學習筆記 幾則技巧

wtl 學習筆記 幾則技巧 l 在wtl專案中插入atl控制項。有點不明白,wtl本身就是擴充套件atl,但wtl嚮導產生的工程,竟不能使用atl控制項。還得手工加一些東西來欺騙vs6,vs6才讓插入atl控制項。1.在工程增加乙個atl.idl檔案,並排除在編譯之外。library atl 2.在...

MyBatis加強學習筆記

通過定義resultmap來實現結果集自動封裝到指定物件並返回結果的一種對映方式 resultmap 節點 result 普通列,association 用於一對一關係對映,collection 用於一對多關係對映,也稱為懶載入,在查詢時先載入主資訊,在需要時才查詢從資訊。實現懶載入有以下三點需要注...

WTL學習筆記 5 系統面板管理

概念 每個控制項都有part和state的概念,這個同在wpf和silverlight的visual state的概念是相同的。只不過silverlight可以手寫xaml,而傳統win32只能函式獲採樣式 如checkbox的狀態,作業系統其實定義了多個狀態的,根據狀態不同進行切換而已 每個控制項...