VS2013 MFC基於對話框編程


前言
一直利用Qt庫做Ui設計,但針對於一些MFC項目,掌握一些必要的MFC開發技巧還是很有必要的。這篇博客里就將自己所學的一些MFC淺顯知識記錄一下,方便今后的學習。博客里只記錄關鍵步驟。

一、新建MFC項目
選擇:基於對話框
MFC的使用:
在共享DLL中使用MFC (程序運行需要dll)
在靜態庫中使用MFC (程序較大,運行時不需要dll)

設置MFC程序主框架樣式和標題

高級功能
若是用不上“ActiveX控件”可以去掉勾選,若要涉及到網絡編程就把“windows嵌套字”選上


完成


二、MFC程序執行流程
每創建一個MFC項目,默認包含3個類,“關於”對話框、主對話框類、初始化項目的App類。
項目生成后,都會有一個屬於App類的theApp對象,對本應用程序實例化。

// CMFCTest1App 構造

CMFCTest1App::CMFCTest1App()
{
// 支持重新啟動管理器
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

// TODO: 在此處添加構造代碼,
// 將所有重要的初始化放置在 InitInstance 中
}
View Code

// 唯一的一個 CMFCTest1App 對象

CMFCTest1App theApp;
應用程序創建完成,程序開始運行,進入消息循環,windows程序的事件都是消息驅動的,每產生一個消息就觸發一個響應事件,消息和事件通過聲明消息映射DECLARE_MESSAGE_MAP()聯系在一起。
默認包含三個消息:
BEGIN_MESSAGE_MAP(CMFCTest1Dlg, CDialogEx)
ON_WM_SYSCOMMAND() //響應控制指令
ON_WM_PAINT() //響應繪圖消息,用於刷新窗口
ON_WM_QUERYDRAGICON() //當用戶拖動最小化窗口時取得光標
END_MESSAGE_MAP()

當應用程序關閉時,會發送WM_CLOSE消息,程序相應后結束。在類向導中可以添加消息處理函數。

void CMFCTest1Dlg::OnClose()
{
// TODO: 在此添加消息處理程序代碼和/或調用默認值

if (MessageBox(_T("確定退出嗎"),_T("提示"),MB_YESNO|MB_ICONWARNING)==IDNO)
{
return;
}

CDialogEx::OnClose();
}
View Code

 


5.應用程序通過定義,初始化,由winmain開始,注冊、創建、顯示窗口,消息響應,程序終止,結束運行周期

三、對話框類
afx_msg宏
afx_msg宏沒有任何語法上的實際意義。afx_msg宏表示聲明的是一個消息響應函數。
DoDataExchange函數
用於存放各類控件的變量信息
OnInitDialog函數
用於初始化對話框
OnSysCommand系統指令響應函數,默認處理窗口最小化和最大化指令等
OnPaint繪圖消息響應函數
調出類向導
項目->類向導,快捷鍵Ctrl+shilft+X

四、添加按鈕
將默認對話框中的靜態文本和原有按鈕刪除,添加新的按鈕1和按鈕2,在屬性頁中可以查看並設置。一般只需要修改兩個屬性,“Caption”和“ID”,前者是按鈕的文本,后者是其唯一標識。


為按鈕添加事件處理函數

實現按鈕的功能
添加按鈕的控件型變量,變量命名一般以“m_”開頭,后面部分為按鈕功能簡要說明。


在初始化函數OnInitDialog中修改Exit對話框不可用

// TODO: 在此添加額外的初始化代碼
m_Exit.EnableWindow(FALSE);
View Code

添加處理事件

void CMFCTest1Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知處理程序代碼

CString str;
m_Enable.GetWindowTextW(str);
if (str=="使能")
{
m_Exit.EnableWindow(TRUE);
m_Enable.SetWindowTextW(_T("使不能"));
}
else
{
m_Exit.EnableWindow(FALSE);
m_Enable.SetWindowTextW(_T("使能"));
}
}


void CMFCTest1Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知處理程序代碼
SendMessage(WM_CLOSE, 0, 0);
}
View Code

 

---------------------
版權聲明:本文為CSDN博主「呂小豬不壞」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wokaowokaowokao12345/article/details/53173966


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM