奉贤做网站制作,广告公司主要是做什么的,岑溪网站开发,皮具网站源码我们知道#xff0c;在MFC中#xff0c;要生成一个模态对话框程序#xff0c;只要按着VS的提示#xff0c;拖拖拽拽就能生成一个这样的程序#xff0c;效率非常高。这里#xff0c;我们反其道而行之#xff0c;自己写一个这样的程序#xff0c;这个程序与自动生成的程序… 我们知道在MFC中要生成一个模态对话框程序只要按着VS的提示拖拖拽拽就能生成一个这样的程序效率非常高。这里我们反其道而行之自己写一个这样的程序这个程序与自动生成的程序大同小异目的是通过自己写程序的过程提高阅读理解MFC自动生成程序的能力。 具体步骤及相关代码如下 0.创建一个win32空项目并加载对话框等资源。 添加对话框等资源步骤 a.右键资源文件-添加-资源-Dialog-新建右键对话框-属性 可看到对话框默认ID是 IDD_DIALOG1 b.视图-工具箱 拖入一个编辑框Edit Control右键编辑框-属性 可看到编辑框默认ID是 IDC_EDIT1 c.工具箱 拖入一个按钮Button右键按钮-属性 将描述文字改为“控件-变量”同时可看到按钮的默认ID是IDC_BUTTON1 d.按照上一步相同的方法再拖入一个按钮描述文字为“变量-控件”默认ID是IDC_BUTTON2。 上面各个ID是该资源的唯一代码后边要用到。为简单计把“确认”、“取消”两个按钮删除。 1.设定环境 项目-属性-配置属性-高级 选用多字符集 选用静态MFC库 项目-属性-配置属性-链接器-系统 选用窗口 2.解决方案资源管理器-右键源文件-添加一个cpp源文件命名mdlDlg.cpp。后面的所有代码都写到这个文件中。 在mdlDlg.cpp中先包含头文件 afxwin.h和 resource.hresource.h是由于我们添加对话框等资源生成的。代码
#includeafxwin.h
#includeresource.h 3.公开继承CDialog类声明子类CMyDlg自定义对话框类 a.类内声明消息处理宏并在类外实现 b.构造函数显示调用父类构造函数并将对话框资源ID作为父类构造参数传入 c.需要的数据成员变量在此声明这里声明了两个对象 CString m_strEdit; //数据类型对象即“变量” CEdit m_ctrlEdit; //控件类型对象 即“控件” d.声明父类虚函数DoDataExchange并在类外重写实现函数参数CDataExchange* pDX是一个结构体。 e.类内声明消息处理函数 两个按钮被点击的消息处理程序 并在类外实现 相关的一个函数UpdateData(BOOL bool); 参数TRUE控件传到变量参数 FALSE相反。这个函数内部调用DoDataExchange。 这部分的代码及注释如下
class CMyDlg :public CDialog {
public:DECLARE_MESSAGE_MAP() //类内声明消息处理宏enum { IDD IDD_DIALOG1 };
public:CMyDlg() :CDialog(IDD) {};//
public:CString m_strEdit;//数据类型对象CEdit m_ctrlEdit;//控件类型对象 virtual void DoDataExchange(CDataExchange* pDX);//父类成员虚函数DoDataExchange重写
public:afx_msg void OnBtn1(); //按钮1被点击处理程序afx_msg void OnBtn2(); //按钮2被点击处理程序
};
void CMyDlg::OnBtn1() {UpdateData(TRUE);//调用DoDataExchange函数将编辑框控件//中的内容传到变量m_strEdit中AfxMessageBox(m_strEdit);
}
void CMyDlg::OnBtn2() {m_strEdit 变量初始值;UpdateData(FALSE);//调用DoDataExchange函数将变量中的内容//显示到编辑框中
}void CMyDlg::DoDataExchange(CDataExchange* pDX) {//程序一旦启动即会调用本函数DDX_Text(pDX, IDC_EDIT1, m_strEdit);//自动生成式类向导课自动加载函数DDX_Control(pDX, IDC_EDIT1, m_ctrlEdit);
}BEGIN_MESSAGE_MAP(CMyDlg, CDialog) //实现消息处理宏ON_BN_CLICKED(IDC_BUTTON1, OnBtn1) ON_BN_CLICKED(IDC_BUTTON2, OnBtn2)
END_MESSAGE_MAP() 4.公开继承CWinApp方式声明CMyWinApp自定义运行类 类内声明InitInstance虚函数类外实现 1.声明自定义对话框类对象 2.将对话框对象地址赋值给m_pMainWnd 3.调用对话框类的成员函数DoModal(),无参用来显示一个模态对话框。模态对话框必须回答否则程序不能继续非模态对话框处理不处理程序都可继续。 4.return FALSE 5.声明自建运行类对象。以上部分代码及注释如下
class CMyWinApp :public CWinApp {
public:virtual BOOL InitInstance();
};
BOOL CMyWinApp::InitInstance() { //重写初始化函数CMyDlg dlg;m_pMainWnd dlg;dlg.DoModal(); //显示对话框return FALSE;
}
CMyWinApp theApp; //声明全局运行类对象main函数在其中