庖丁解MFC (二)應用與框架的剝離

2021-04-08 14:52:17 字數 1306 閱讀 9517

要想分離應用與框架,首先得明白它們之間的聯絡。用嚮導生產乙個多文件程式觀察,可以發現只有一處關聯:

cmainframe

*pmainframe 

=new

cmainframe;if(

!pmainframe

->

loadframe(idr_mainframe))

return

false;

m_pmainwnd 

=pmainframe;

//the main window has been initialized, so show and update it.

pmainframe

->

showwindow(m_ncmdshow);

pmainframe

->

updatewindow();

mfc應用與框架的剝離

應用需要的只是乙個主框架指標而已,可以定義乙個外掛程式介面:

inte***ce

imainframe : iunknown

; 為了外掛程式查詢以及管理,需要乙個類別,所有支援的外掛程式都屬於這個類別:

begin_category_map(cmanager)

implemented_category(catid_framecategory)

end_category_map()

下面就可以實現主框架外掛程式了,生產乙個atl專案,新增主框架類,新增乙個元件manager,實現外掛程式介面:(示例用中文主框架和英文主框架來演示效果)

stdmethodimp cmanager::getframe(

long

*pdoccls)

afxsetresourcehandle(hinst);

pmainframe

->

setwindowtext(_t(

"中文版本

"));

*pdoccls =(

long

)pmainframe;

return

s_ok;

} 這樣在主框架啟動的時候就可以遍歷catid_framecategory下面所有框架外掛程式,

選擇乙個外掛程式框架後:

有必要這樣做嘛??

這裡演示了乙個應用根據選擇不同的外掛程式進入不同語言的介面,當然不是為了解決多國語言版本問題而這樣做(多國語言版本可以通過資源檔案來解決)。

這樣做到底有沒有必要呢??再來看下嚮導生產的程式介面:

void

cframewnd::onenteridle(uint nwhy, cwnd

*pwho)

框架的概念與應用

框架概念1.首先,各位先看看右邊這張,將利用這張圖來做解釋,這樣子,講起來可能會清楚一些。我們可以看見,右邊的這個,一共分為 1 2 3 三個框架,每乙個框架,各有其顯示的內容分別是 a.htm b.htm c.htm 三個檔案。然而左下角的那個 index.htm 是做什麼用的呢?2.原來,左下角...

介紹MFC框架中涉及到的設計模式 二

單例模式 singleton pattern 單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方...

找到MVC框架中前端URL與後端同步的解決方案

基本思路 先用url標籤生成完整的url字元,前端動態引數的部分以適配符先填充,最後動態引數利用正則匹配進行替換。這種方式,可以在各種mvc框架中適用,妙。不廢話,上碼。url url.format string.format 同時匹配 內容方式 if string.prototype.format...