建立一个只包含对话框的MFC程序
首先在VC中(我使用的是VC2008)建立一个Win32应用程序,并且选择空项目。建立完成后,选择项目属性->配置属性->常规->MFC的使用
选择在共享DLL中使用MFC。现在这个空项目中没有任何的文件。
1.添加对话框资源。
添加对话框类:CComAppDlg。附带生成ComAppDlg.h和ComAppDlg.cpp。
2.建立.h文件(我这里是ComApp.h)
#pragma once #include "resource.h" // 主符号 class CComApp : public CWinApp { public: virtual BOOL InitInstance(); };
3.建立cpp文件(这里是ComApp.cpp)
#include <afxwin.h> #include "ComApp.h" #include "ComAppDlg.h" CComApp theApp; //the one and only CComApp object BOOL CComApp::InitInstance() { CComAppDlg comDlg; INT_PTR nResponse = comDlg.DoModal(); if(nResponse == IDOK) { } else if(nResponse == IDCANCEL) { } // 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序, // 而不是启动应用程序的消息泵。 return false; }
运行程序,显示对话框。
成员函数CComApp::InitInstance:是一个虚函数。也就是基类CWinApp中也有这个函数。当WinMain函数找到应用程序对象theApp时,就调用它的虚拟成员函数InitInstance。这个函数就调用所需要的构造和显示应用程序的主窗口。派生的应用程序类(CMyApp)中必须覆盖InitInstance函数,应为基类(CWinApp)中的函数不知道我们要什么样的主窗口。
4.给对话框添加ICON。
先添加自己的icon,然后在对话框类里CComAppDlg添加成员变量m_hIcon,在类的构造函数里加载导入的icon:m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
加载后重写OnInitDialog()函数:
BOOL CComAppDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE }