CView類的使用

2021-07-03 15:24:24 字數 2349 閱讀 7584

首先我們來寫乙個例子:

1.建乙個win32簡單應用程式,不要認為這樣就不能寫出mfc程式,因為是不是mfc程式取決於調沒調mfc函式。

2. 刪除入口函式,只留下#include "stdafx.h"

3.將stdafx.h中的標頭檔案 更改為 。

4.project-->settings選單項中設定使用mfc庫

5.編寫**

#include "stdafx.h"

#include "resource.h"

//檢視類(建立方式與工具欄與工具欄步驟相似)

class cmyview:public cview

;begin_message_map(cmyview,cview)

on_command(id_test,ontest)

end_message_map()

void cmyview::ontest()

void cmyview::ondraw( cdc* pdc )

//框架視窗類

class cmainframe :public cframewnd

;begin_message_map(cmainframe,cframewnd)

on_wm_create()

end_message_map()

int cmainframe::oncreate( lpcreatestruct lpcreatestruct )

//建立檢視視窗

m_pwndview = new cmyview;//在堆中建立物件

m_pwndview->create(null,"myview",ws_visible|ws_child|ws_border,crect(0,0,100,100),

this,afx_idw_pane_first);//afx_idw_pane_first可使邊框和客戶區重疊

//將檢視設定為活動檢視

//方式1:呼叫函式

// setactiveview(m_pwndview);

//方式2:指標賦值

m_pviewactive = m_pwndview;

return 0;

}//應用程式類

;

注意:

例項化cmyview物件前必須重寫ondraw()函式,因為ondraw()是純虛函式

檢視視窗的建立是在cmainframe的 oncreate()函式中調create函式

思考&提公升:

1. 為什麼非要使用檢視類的指標來?

由於在cview::postncdestroy()

函式中,呼叫了

delete this;  

所以,檢視物件的建立放到堆中,即

new 

物件,

2. 建立檢視時,怎樣檢視鋪滿框架視窗的客戶區?

建立時檢視的id填afx_idw_pane_first

3.  為什麼要將檢視物件設定為框架視窗的活動檢視?

因為 處理選單等命令訊息的先後順序:

活動檢視

->

框架視窗

->

應用程式。我們將對此進行驗證:在訊息提示框那行加斷點,除錯執行,我們通過呼叫堆疊得到下圖呼叫資訊

選單訊息都屬於命令訊息,所以我們找cframewnd 的 oncmdmsg,雙擊進入cframewnd::oncmdmsg()中得到

bool cframewnd::oncmdmsg(uint nid, int ncode, void* pextra,

afx_cmdhandlerinfo* phandlerinfo)

可以看出:處理選單等命令訊息的先後順序:

活動檢視

->

框架視窗

->

應用程式 4.

onpaint

與ondraw

之間的關係?

onpaint調的是ondraw。因為

ondraw

函式比onpaint

更簡單,不用新增訊息對映所以檢視的資訊顯示,直接在

ondraw

函式中。

5.為什麼不用框架視窗的客戶區顯示資料,而非要用檢視視窗顯示?

框架視窗:就好像個容器,負責裝各種各樣的子視窗

檢視視窗:是一種子視窗,父類是框架視窗,負責顯示資料。這樣做是因為當應用程式比較複雜時,我們希望乙個類去做一件事

類和類的使用

class people name xiaoming 類屬性,類裡面的變數稱為屬性 age 18 私有屬性,別人知道後不會去動它,概念性問題 age 18 也是私有屬性,訪問會報錯 a people 例項化 print a.age 通過例項訪問類屬性,雖然是私有的,但是訪問還是可以列印,b peop...

類模板的使用 類模板使用總結

歸納以上的介紹,可以這樣宣告和使用類模板 先寫出乙個實際的類。將此類中準備改變的型別名 如int要改變為float或char 改用乙個自己指定的虛擬型別名 如上例中的t 在類宣告前面加入一行,格式為 templatetemplate class a 類體用類模板定義物件時用以下形式 類模板名 實際型...

類的使用,物件的使用

一 類的使用 class student school luffycity def eat self print yes defdrink self print drink 檢視print student.dict 增student.teacher gaohui print student.dict...