zoukankan      html  css  js  c++  java
  • MFC/QT 学习笔记(三)——MFC模板创建

    新建项目->MFC模板->MFC应用程序->应用程序类型:单个文档;项目样式:MFC 标准->下一步...OK

    此时点击运行,可直接弹出窗口。

    调整 视图->类视图:

      ·CAboutDlg,帮助选卡->关于对话框

      ·CMainFrame,框架类,相框,PreCreateWindow可修改窗口外观,光标,图标;Create注册,调用OnCreate产生窗口;

      ·CMFCTestApp,InitInstance入口

      ·CMFCTestDoc,数据的存储和加载

      ·CMFCTestView,数据的显示和修改,相片

    右键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为全局函数,解决父类不相关问题。

  • 相关阅读:
    [毕业设计]多文档自动摘要.面向灾害事件
    windows,无法启动承载网络,解决办法
    【现代程序设计】【期末作业】【homework-09】
    ColorNote.疑难解答
    【现代程序设计】【homework-08】
    【现代程序设计】【homework-07】
    【现代程序设计】【homework-05】
    【现代程序设计】【homework-04】
    homework-10
    homework-06&homework-09
  • 原文地址:https://www.cnblogs.com/CowryGao/p/12341884.html
Copyright © 2011-2022 走看看