《Windows编程循序渐进》——建立MFC应用程序

  • 如何建立MFC应用程序

打开VS2013:

单击下一步:

选中相应的选项:

点击完成:

  • 应用程序类

我们可以看到:

对于应用程序类,该项目的名称是FirstSoftware,对应的类就是CFirstSoftwareApp;对于对话框类(尽管一个应用程序不一定含有对话框,也可能含有多个对话框),对应的类时CFirstSoftwareDlg

我们在FirstSoftware.h中会发现:

这个类是由CWinApp派生出来的。进入InitInstance()中看下:

这一句使用父类的初始化方法对子类进行初始化。

这里是接收对话框是点击了“确定”还是“取消”。

我们添加一些东西到里边:

但是当真正运行起来之后,单击“确定”或者是“取消”都不会弹出这个MessageBox,Why?继续往下看。

  • 对话框类

下面再来看对话框类:

class CFirstSoftwareDlg : public CDialogEx
{
// 构造
public:
    CFirstSoftwareDlg(CWnd* pParent = NULL);    // 标准构造函数

// 对话框数据,对话框的ID
    enum { IDD = IDD_FIRSTSOFTWARE_DIALOG };

    protected:
    //动态数据交换
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持


// 实现
protected:
    HICON m_hIcon;

    // 生成的消息映射函数
    virtual BOOL OnInitDialog();
    afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
    afx_msg void OnPaint();//每当对话框重新出现在屏幕上,就需要一次重绘
    afx_msg HCURSOR OnQueryDragIcon();//绘制图标
    DECLARE_MESSAGE_MAP()
};

MFC的开发主要是针对消息处理机制

先Ctrl+Shift+E切换到资源窗口,点击对话框ID,我们双击对话框中的某一个按钮,就来到了:

你只需要在这里添加代码,告诉点击一个按钮之后需要做什么即可。

这时候再Ctrl+F5运行,单击某一个按钮运行,就可以弹出对话框了:

  • 添加消息响应

 Ctrl+Alt+X调出工具箱:

可以在工具箱里拖拽一个Button进来。

更改其名称和ID后,双击添加代码:

这种形式的MessageBox和上面的那种MessageBox有什么区别呢?运行一下:

我们发现,对于确定按钮,点几次就会弹出几个MessageBox,且它的标题和内容都是由自己设定的。

而当我们点击新添加的FirstButton时,发现它只能弹出一个MessageBox,且它的标题是自己设定的。

前者被称为非模态的,后者被称为模态的。后者的MessageBox隐含的传递了一个this指针,你也可以写成:

 

posted @ 2016-07-12 20:02  _No.47  阅读(395)  评论(0编辑  收藏  举报