https://www.cnblogs.com/CowryGao/p/12341884.htmlhtml
新建項目->MFC模板->MFC應用程序->應用程序類型:單個文檔;項目樣式:MFC 標準->下一步...OK框架
此時點擊運行,可直接彈出窗口。函數
調整 視圖->類視圖:this
·CAboutDlg,幫助選卡->關於對話框spa
·CMainFrame,框架類,相框,PreCreateWindow可修改窗口外觀,光標,圖標;Create註冊,調用OnCreate產生窗口;code
·CMFCTestApp,InitInstance入口orm
·CMFCTestDoc,數據的存儲和加載htm
·CMFCTestView,數據的顯示和修改,相片blog
右鍵CMFTestView->屬性->消息->WM_LBUTTONDOWN->OnLButtonDown;(自動建立,取消步驟相同,但取消只是邏輯刪除,即註釋掉了,並未真正刪除)文檔
//文件名:CMainFrame.h:
class CMainFrame : public CFrameWnd
// 生成的消息映射函數 protected: afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); DECLARE_MESSAGE_MAP()//消息映射宏
//文件名:CMainFrame.cpp
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)//分界宏 ON_WM_CREATE() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP()
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此處經過修改
// CREATESTRUCT cs 來修改窗口類或樣式
return TRUE;
}
//文件名:CMFCTestApp.cpp
BOOL CMFCTestApp::InitInstance(){
... ...
// 惟一的一個窗口已初始化,所以顯示它並對其進行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE;
}
//文件名:CMFCTestView.h
class CMFCTestView : public CView
// 生成的消息映射函數 protected: DECLARE_MESSAGE_MAP() public: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnPaint();
//文件名:CMFCTestView.cpp
// CMFCTestView 繪圖 void CMFCTestView::OnDraw(CDC* pDC) { CMFCTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此處爲本機數據添加繪製代碼 pDC->TextOutW(100, 100, TEXT("爲了部落")); }
// CMFCTestView 消息處理程序
void CMFCTestView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息處理程序代碼和/或調用默認值 CString str; str.Format(TEXT("x=%d,y=%d"), point.x, point.y); MessageBox(str); CView::OnLButtonDown(nFlags, point); }
//若是使用了OnDraw,就不要再使用OnPaint了;OnPaint會覆蓋OnDraw;
void CMFCTestView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此處添加消息處理程序代碼 // 不爲繪圖消息調用 CView::OnPaint() dc.TextOutW(100, 100, TEXT("爲了聯盟")); }
ps:
後綴Ex爲擴展函數;
前綴Afx爲全局函數,解決父類不相關問題。