日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC文档/视图结构体系及SDI回顾(2)

發(fā)布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC文档/视图结构体系及SDI回顾(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.牢騷發(fā)在最前面

三件事情雜糅到了一起弄得我徹夜未眠。

香港大學(xué)的Offer不小心丟在了垃圾郵箱里,卻陰差陽錯的來了清華。平臺是一方面,當(dāng)時談好的港府獎學(xué)金也就此泡湯,這筆錢是我急需的。

驚聞噩耗,蘇暢老師逝世,年僅33歲,不知道是生命奉獻(xiàn)了科研還是科研磨滅掉了生命。

張禮,讀懂你,很難!

2.文檔視圖體系結(jié)構(gòu)中的命令傳送

文檔/視圖體系結(jié)構(gòu)中最引人注目的特性是應(yīng)用程序幾乎可以在任何地方處理命令的消息。“命令消息”其實(shí)是MFC中的術(shù)語,質(zhì)的就是WM_COMMAND消息,當(dāng)選擇了菜單項(xiàng)、鍵盤加速鍵被按下或工具欄被單擊時產(chǎn)生此消息。框架窗口實(shí)際上是大多數(shù)命令消息的接收者,但命令消息可以在視圖類、文檔類、甚至應(yīng)用程序中被處理,只要在該類的消息的接受中對想要處理的消息添加輸入即可。命令傳送使得我們可以將命令處理程序放在最合適的地方,避免把他們堆砌在框架窗口類中。對于菜單項(xiàng)、工具欄按鈕以及其他用戶界面對象的更新命令也遵循命令傳送機(jī)制,因此也可以把ON_UPDATE_COMMAN_Ui處理程序放在非框架窗口中。

命令傳送機(jī)制根植在MFC深層內(nèi)部。當(dāng)框架窗口接收到WM_COMMAND消息時,會調(diào)用所有CCmdTarget派生類特有的虛擬OnComMsg函數(shù)來開始傳送過程。

CFrameWnd中OnCmdMsg的實(shí)現(xiàn)如下:

BOOL <span style="font-size:18px;">CFrameWnd</span>::OnCmdMsg(...) {CView* pView = GetActiveView();if (pView != NULL && pView->OnCmdMsg(...))return TRUE;if (CWnd::OnCmdMsg(...))return TRUE;CWinApp* pApp = AfxGetApp();if (pApp != NULL && pApp->OnCmdMsg())return TRUE;return FALSE; }CFrameWnd::OnCmdMsg(...)首先調(diào)用視圖的pView->OnCmdMsg(...)函數(shù),將消息傳送給活動視圖。如果pView->OnCmdMsg(...)返回值為0,說明視圖沒有處理消息(也就是說視圖消息映射表中沒有包含這個特殊消息的輸入項(xiàng)),框架窗口就會親自調(diào)用CWnd::OnCmdMsg(...)來處理消息。如果這樣也不行,框架窗口就會讓應(yīng)用程序?qū)ο笕ヌ幚怼W罱K如果沒有對象可以處理這個消息,CFrameWnd::OnCmdMsg(...)就會返回FALSE,主結(jié)構(gòu)將消息傳送給::DefWindowProc進(jìn)行默認(rèn)處理。

這就是我們多次強(qiáng)調(diào)的框架窗口獲得的命令消息被傳送給活動視圖和應(yīng)用程序?qū)ο蟆?/span>

但是,我們不僅會去問,這和文檔對象有什么關(guān)系呢?這就涉及到了所有提交給SDI框架窗口的命令消息所經(jīng)歷的路徑,具體如下圖所示:

活動視圖首先處理消息,接著是與視圖關(guān)聯(lián)的文檔、文檔模板、框架窗口,最后是應(yīng)用程序?qū)ο蟆?/span>

3.預(yù)定義的命令I(lǐng)D和命令處理程序

在編寫文檔/視圖應(yīng)用程序時,通常不用為所有的菜單命令親自編寫處理程序。MFC提供了很多的默認(rèn)處理程序,此外主結(jié)構(gòu)還提供了多種菜單項(xiàng)命令I(lǐng)D,其中許多已經(jīng)預(yù)先添加到使用它們的來的消息映射表中了。

下表列出了最常用的預(yù)定義命令I(lǐng)D和他們相關(guān)的命令處理程序:


4.開始實(shí)戰(zhàn)吧!

通過回顧性的復(fù)習(xí)視圖/文檔結(jié)構(gòu),已經(jīng)完全具備開發(fā)相關(guān)的應(yīng)用程序了,加油!

總結(jié)

以上是生活随笔為你收集整理的MFC文档/视图结构体系及SDI回顾(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。