有什么網(wǎng)站可以做微信支付寶支付寶一鍵制作單頁網(wǎng)站
目錄
一.SDK編程
二.為什么要學MFC?
三.MFC能做什么?
四.MFC開發(fā)環(huán)境搭建
五.MFC項目創(chuàng)建
六.消息映射機制
一.SDK編程
Application Programming Interface 應用程序編程接口。
Software Development Kit 軟件開發(fā)工具包,一般會包括API接口文檔,示例文檔,幫助文檔,使用手冊,相關工具等。
SDK程序基本骨架:
int WinMain(){// 設計窗口外觀及交互響應,注冊,申請專利RegisterClass(...)// 生產(chǎn)窗口CreateWindow(...)// 展示窗口ShowWindow(...)// 粉刷窗口UpdateWindow(...)// 進入消息循環(huán)while (GetMessage(...)) {// 消息轉(zhuǎn)換TranslateMessage(...);// 消息分發(fā)DispatchMessage(...);}
}
這是使用SDK創(chuàng)建一個窗口的過程,可以看出來,十分復雜。
重要概念:
窗口就是屏幕上的一片區(qū)域,接收用戶的輸入,顯示程序的輸出??梢园瑯祟}欄,菜單欄,工具欄,控件等。
句柄(handle) (資源的編號,二級指針,門把手),窗口句柄,文件句柄,數(shù)據(jù)庫連接句柄。
C++窗口類對象與窗口并不是一回事,它們之間惟一的關系是C++窗口類對象內(nèi)部定義了一個窗口句柄變量,保存了與這個C++窗口類對象相關的那個窗口的句柄。窗口銷毀時,與之對應的C++窗口類對象銷毀與否,要看其生命周期是否結束。但C++窗口類對象銷毀時,與之相關的窗口也將銷毀
二.為什么要學MFC?
在寫SDK程序時,需要程序員自己處理各種消息,實現(xiàn)窗口創(chuàng)建,注冊,繪制,銷毀,程序耗費很多精力在這些地方上,為了提升效率,有大佬把 SDK 進行封裝,這就是MFC的誕生,使?Windows桌面應用程序開發(fā)效率大大提升。
MFC就是封裝了各種系統(tǒng)調(diào)用,方便程序開發(fā)。SDK相當于手工作坊時代,MFC相當于流水線。因為MFC是封裝了 Windows操作系統(tǒng)的API,所以寫出來的程序也只支持在 Windows 上運行。
三.MFC能做什么?
四.MFC開發(fā)環(huán)境搭建
VS2019下安裝MFC
組件列表
五.MFC項目創(chuàng)建
創(chuàng)建MFC應用
選擇程序類型
MFC文檔類型
-
基于對話框的 MFC 項目: 基于對話框的 MFC 項目是一種常見的 MFC 應用程序類型,它的主要界面是一個對話框窗口。對話框窗口通常包含了控件(如按鈕、編輯框、列表框等)和菜單等元素,用于與用戶交互。該類型的 MFC 項目適合處理簡單的界面和交互邏輯。
-
基于單個文檔的 MFC 項目: 基于單個文檔的 MFC 項目是一種支持處理單個文檔的應用程序類型,它包含了一個文檔視圖框架和一個文檔類。該類型的 MFC 項目適合處理只有一個文檔的應用場景,如文本編輯器等。
-
基于多個文檔的 MFC 項目: 基于多個文檔的 MFC 項目是一種支持處理多個文檔的應用程序類型,它包含了一個文檔視圖框架和多個文檔類。該類型的 MFC 項目適合處理多個文檔之間相互關聯(lián)的應用場景,如電子表格、繪圖工具等。
基于對話框的 MFC 項目適合處理簡單的界面和交互邏輯;基于單個文檔的 MFC 項目適合處理只有一個文檔的應用場景;而基于多個文檔的 MFC 項目適合處理多個文檔之間相互關聯(lián)的復雜應用場景。
根據(jù)需要選擇即可
根據(jù)需要選擇即可
六.消息映射機制
MFC(Microsoft Foundation Class)消息映射機制是一種方便的事件處理方式,它將 Windows 操作系統(tǒng)中的消息與 MFC 應用程序中的事件進行關聯(lián)。通過使用消息映射機制,開發(fā)人員可以很方便地處理用戶界面上的各種事件。
在 MFC 中,每個控件都可以接收 Windows 消息,例如鼠標點擊、鍵盤輸入等。當控件接收到消息時,MFC 就會將消息轉(zhuǎn)換為一個事件,并將其傳遞給響應的事件處理函數(shù)。這個過程就是消息映射。
消息映射的實現(xiàn)需要借助一個類似于表格的結構,稱為消息映射表。每個消息映射表條目包含了一個消息 ID 和一個事件處理函數(shù)。當控件接收到消息時,MFC 就會查找消息映射表,并調(diào)用相應的事件處理函數(shù)來響應該消息。
BEGIN_MESSAGE_MAP(CMFCTest1Dlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_TEST_BTN, &CMFCTest1Dlg::OnBnClickedTestBtn)
//1 消息映射表
END_MESSAGE_MAP()//2 自動生成消息響應函數(shù)
void CMFCTest1Dlg::OnBnClickedTestBtn()
{MessageBox(_T("Test"));
}// 3 消息響應函數(shù)的聲明
afx_msg void OnBnClickedTestBtn();
CMFCTest1Dlg是一個對話框;IDC_TEST_BTN是以一個控件按鈕的消息ID;OnBnClickedTestBtn 是處理按鈕點擊事件的成員函數(shù);
當點擊對話框的按鈕,就會觸發(fā)控件按鈕的消息ID,控件接收到消息,就會查找消息映射表,調(diào)用對應函數(shù)進行處理。