須要源碼聯繫郵件:kangxlchn@163.comhtml
環境:vs2017 windows
通通NEXT函數
新建完成後打開MFCPrj.cpp文件工具
打開類試圖spa
每建立一個MFC項目,默認包含3個類,「關於」對話框、主對話框類、初始化項目的App類3d
雙擊.rc文件能夠打開資源視圖code
而後雙擊IDD_MFCPRJ_DIALOG就能夠打開可視化編輯的窗口htm
打開工具箱就能夠往裏拖各類控件了。。。blog
-------------截至這裏,基本全部的窗口都打開了,如今開始講一些代碼-----------
項目生成後,都會有一個屬於App類的theApp對象,對本應用程序實例化。
// CMFCTest1App 構造 CMFCTest1App::CMFCTest1App() { // 支持從新啓動管理器 m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; // TODO: 在此處添加構造代碼, // 將全部重要的初始化放置在 InitInstance 中 } // 惟一的一個 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消息,程序相應後結束。在類嚮導(右擊工程/ctrl+shift+x)中能夠添加消息處理函數。
void CMFCPrjDlg::OnClose() { // TODO: 在此添加消息處理程序代碼和/或調用默認值 if (MessageBox(_T("肯定退出嗎"), _T("提示"), MB_YESNO | MB_ICONWARNING) == IDNO) { return; } CDialog::OnClose(); }
應用程序經過定義,初始化,由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);
雙擊按鈕就進入代碼:添加處理事件
void CMFCPrjDlg::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 CMFCPrjDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知處理程序代碼 SendMessage(WM_CLOSE, 0, 0); }