1、課程內容:
2. 視窗類,視窗物件與視窗關係
視窗類中定義乙個型別為
hwnd
成員變數
,用來儲存與之相關的視窗控制代碼值
,可以用乙個視窗類的例項即視窗物件來對應乙個建立的視窗
(是一種資源
),視窗物件與視窗之間的關係是:
c++視窗類物件與視窗並不是一回事
,它們之間唯一的關係是
c++視窗類物件內部定義了乙個視窗控制代碼變數
,儲存了與這個
c++視窗類物件相關的那個視窗的控制代碼
.視窗銷毀時
,與之對應的
c++視窗類物件銷毀與否
,要看其生命週期是否結束,但
c++視窗類物件銷毀時
,與之相關的視窗將銷毀
,因為它們之間的紐帶
(m_hwnd)
已經斷了
,因此這時要**視窗資源.
視窗銷毀時呼叫
destroywindow函式,
視窗類物件銷毀即將
m_hwnd
變數設定為
null.
3.mfc流程介紹:winmain->建立視窗類->註冊視窗類->建立視窗->顯示視窗->訊息迴圈
以專案為例,我的專案名稱為mfc02;在vs的安裝目錄下可以查詢mfc核心函式的定義,如我的mfc目錄為
d:\program files\visualsdudio\vc\atlmfc\src\mfc\ b、
c、註冊視窗類:
對於單文件來說,要涉及文件管理,在這個initinstance方法中完成視窗類的註冊:
afxenddeferregisterclass 判斷是否註冊過視窗類,mfc已經定義好了視窗類,所以只需要註冊就可以啦;
afxregisterclass 註冊視窗類;
d、建立視窗:cmainframe是cframewnd的子類,呼叫基類的precreatewindow函式完成視窗類的註冊(一般情況),單文件應用程式除外(見c說明)
cframewnd的create函式建立視窗,它會呼叫cwnd的createex函式;
e、顯示和更新視窗:
cmainframe的指標可以呼叫showwindow和updatewindow函式;
f、訊息迴圈:cwinthread::run
pthread->run實現訊息迴圈;
g、訊息處理函式:訊息對映機制;
2.mfc大致流程:
winmain()
afxwinmain();//呼叫下面的函式
afxwinmain()
pthread->initinstance(); //初始化工作和註冊視窗類,視窗顯示和更新,因為
pthread->run(); //訊息迴圈
csingledoctemplate* pdoctemplate;
pdoctemplate = new csingledoctemplate(
idr_mainframe,
runtime_class(cmfc02doc),
runtime_class(cmainframe), // main sdi frame window
runtime_class(cmfc02view));
adddoctemplate(pdoctemplate);
完成了將這三個類關聯起來的工作。
3.如何在單文件檔案中顯示乙個cbutton的物件?
在cmainframe::oncreate()中定義乙個cbutton的物件btn;
然後呼叫btn.create("維新",ws_disabled |ws_child | ws_visible | bs_auto3state, crect(0,0,300,100),/*getparent(),*/this,123);
注意點:
(1).此處btn不能是區域性變數,否則它的生命週期太短,將不能顯示。
(2).在cbutton類的create函式的第二個引數中加入ws_visible 引數才行。否則必須呼叫showwindow也可以在view的oncreate訊息響應函式中加入
(3).cbutton類的定義標頭檔案在afxwin.h中,而stdafx.h包含了afxwin.h,所以可以直接使用。因為mfc中的每乙個類中都有#include "stdafx.h"的宣告。
MFC框架程式剖析 3
我們來看下我們建立的視窗 視視窗對應的是ctestview類,而主框架視窗對應的就是cmainframe類,而cmainframe和ctestview都有共同乙個基類cwnd,它封裝了與視窗相關的操作。此外,還有個ctestdoc類,不過它並不是乙個視窗類,而是乙個文件類。最後,caboutdlg類...
MFC框架程式剖析
1 mfc microsoftfoundation class,微軟基礎類庫 是微軟為了簡化程式設計師的開發工作所開發的一套c 類的集合,是一套物件導向的函式庫,以類的方式提供給使用者使用 二 基於mfc的程式框架剖析 1 mfc程式的classview標籤頁 圖 2 繼承關係 1 cmainfra...
MFC框架程式剖析
mfc程式的執行過程 4 進入訊息迴圈。雖然也設定了預設的視窗過程函式,但是mfc應用程式實際上是採用訊息對映機制來處理各種訊息的。當收到wm quit訊息時,退出訊息迴圈,程式結束。面已經知道,在乙個windows程式中,winmain函式作為程式的入口函式,乙個程式的是 設計視窗 給視窗設定相應...