深入剖析WTL WTL框架視窗分析(6)

2021-03-31 08:56:58 字數 1541 閱讀 5188

wtl對框架視窗的封裝

atl僅僅是封裝了視窗函式和提供了訊息對映。實際應用中,需要各種種類的視窗,比如,每個介面執行緒所對應的框架視窗。wtl正是在atl基礎上,為我們提供了框架視窗和其他各種視窗。

所有的應用程式型別中,每個介面執行緒都有乙個框架視窗(frame)和乙個視(view)。它們的概念和mfc中的一樣。

圖示是wtl的視窗類的繼承圖。

wtl框架視窗為我們提供了:

乙個應用程式的標題,視窗框架,選單,工具欄。

視的管理,包括視的大小的改變,以便與框架視窗同步。

提供對選單,工具欄等的處理**。

在狀態列顯示幫助資訊等等。

wtl視通常就是應用程式的客戶區。它通常用於呈現內容給客戶。

wtl提供的方法是在介面執行緒的邏輯中建立框架視窗,而視的建立由框架視窗負責。後面會介紹,框架視窗在處理wm_create訊息時建立視。

如果要建立乙個框架視窗,需要:

從cframewindowimpl類派生你的框架視窗。

加入declare_frame_wnd_class,指定選單和工具欄的資源id。

加入訊息對映,同時把它與基類的訊息對映聯絡起來。同時,加入訊息處理函式。

class cmainframe : public cframewindowimpl, 

public cupdateui,

public cmessagefilter, public cidlehandler

;

declare_frame_wnd_class()巨集是為框架視窗指定乙個資源id,可以通過這個id和應用程式的資源聯絡起來,比如框架的圖示,字串表,選單和工具欄等等。

wtl視

通常應用程式的顯示區域分成兩個部分。一是包含視窗標題,選單,工具欄和狀態列的主框架視窗。另一部分就是被稱為視的部分。這部分是客戶區,用於呈現內容給客戶。

視可以是包含hwnd的任何東西。通過在框架視窗處理wm_create時,將該hwnd控制代碼賦植給主視窗的m_hwndclien成員來設定主視窗的視。

class ctestview : public cwindowimpl;

這個視是乙個從cwindowimpl派生的視窗。

在主視窗的建立函式中,將該視的hwnd設定給主視窗的m_hwndclient成員。

lresult cmainframe::oncreate(uint /*umsg*/, wparam /*wparam*/, lparam /*lparam*/, 

bool& /*bhandled*/)

上述**為主視窗建立了視。

到此為止,我們已經從

win32模型

開始,到了解

windows介面程式封裝

以及wtl訊息迴圈機制

,詳細分析了wtl。通過我們的分析,您是否對wtl有乙個深入的理解,並能得心應手的開發出高質量的windows應用程式?別急,隨後,我們還將一起**開發wtl應用程式的技巧。

深入剖析WTL WTL框架視窗分析1

wtl的基礎是atl。wtl的框架視窗是atl視窗類的繼承。因此,先介紹一下atl對windows視窗的封裝。由第一部分介紹的windows應用程式可以知道建立視窗和視窗工作的邏輯是 1 註冊乙個視窗類 2 建立該類視窗 3 顯示和啟用該視窗 4 視窗的訊息處理邏輯在視窗函式中。該函式在註冊視窗類時...

深入剖析WTL WTL框架視窗分析 (2)

atl的訊息處理巨集 訊息對映的目的是實現processwindowmessage processwindowmessage 函式是視窗函式的關鍵邏輯。一共有三種訊息處理巨集,分別對應三類視窗訊息 普通視窗訊息 如wm create 命令訊息 wm commans 和通知訊息 wm notify 訊...

深入剖析WTL WTL框架視窗分析 (2)

訊息對映的目的是實現processwindowmessage processwindowmessage 函式是視窗函式的關鍵邏輯。一共有三種訊息處理巨集,分別對應三類視窗訊息 普通視窗訊息 如wm create 命令訊息 wm commans 和通知訊息 wm notify 訊息處理巨集的目的是將訊...