VC++之控件之创建向导对话框 2010 年 05 月 26 日 星期三 下午 10:37 一、创建新工程
二、添加属性对话框 1、添加并编辑属性对话框 a、编辑第一页
b、编辑第二页
c、编辑第三页
2、添加新类
三、添加菜单项并编辑之
四、添加函数、变量 1、为新添加菜单项添加消息响应函数
2、为类 CWizard1 添加函数
3、为类 CWizard2 添加函数
4、为类 CWizard3 添加函数
5、添加变量 a、为 Wizard1 添加变量 public: CString m_name; Wizard1(); ~Wizard1(); // Dialog Data //{{AFX_DATA(Wizard1) enum { IDD = IDD_WIZARD1 }; int m_sex; //}}AFX_DATA b、为 Wizard2 添加变量
c、为 Wizard3 添加变量
五、添加代码(红色部分) 1、为“创建向导对话框 View.cpp”添加代码 a、于文件前部分添加包含文件 #include"Wizard1.h" #include"Wizard2.h" #include"Wizard3.h" b、添加函数代码 void CCWirardsView::OnStudent() { // TODO: Add your command handler code here Wizard1 m_wizrd1; Wizard2 m_wizrd2; Wizard3 m_wizrd3; CPropertySheet pt1("向导对话框范例"); pt1.AddPage(&;m_wizrd1); pt1.AddPage(&;m_wizrd2); pt1.AddPage(&;m_wizrd3); pt1.SetWizardMode(); //在 DoModal 之前调用 pt1.DoModal(); } 2、为“Wizard1.cpp”文件添加代码 BOOL Wizard1::OnSetActive() { // TODO: Add your specialized code here and/or call the base class ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT); return CPropertyPage::OnSetActive(); } LRESULT Wizard1::OnWizardNext() { // TODO: Add your specialized code here and/or call the base class
UpdateData(TRUE); if((-1==m_sex)|| (_T("")==m_name)) { MessageBox("请填写相应的内容!"); return -1; } else return CPropertyPage::OnWizardNext(); } 3、为“Wizard2.cpp”文件添加代码 BOOL Wizard2::OnInitDialog() { CPropertyPage::OnInitDialog(); // TODO: Add extra initialization here CPropertyPage::OnInitDialog(); m_Class.AddString("人事"); m_Class.AddString("生产"); m_Class.AddString("质检"); m_Occupation.AddString("一分厂"); m_Occupation.AddString("二分厂"); m_Occupation.AddString("三分厂"); m_Occupation.AddString("四分厂"); m_Occupation.AddString("五分厂"); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } BOOL Wizard2::OnSetActive() { // TODO: Add your specialized code here and/or call the base class ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_N EXT); return CPropertyPage::OnSetActive(); } LRESULT Wizard2::OnWizardNext() { // TODO: Add your specialized code here and/or call the base class if(CB_ERR==m_Class.GetCurSel()||CB_ERR==m_Occupation.GetCurSel()) {
MessageBox("请填写相应的内容!"); return -1; } else return CPropertyPage::OnWizardNext(); } 4、为“Wizard3.cpp”文件添加代码 BOOL Wizard3::OnSetActive() { // TODO: Add your specialized code here and/or call the base class ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|P
SWIZB_F INISH); return CPropertyPage::OnSetActive(); } BOOL Wizard3::OnWizardFinish() { // TODO: Add your specialized code here and/or call the base class UpdateData(TRUE); if(m_Game||m_Reading||m_Sport||m_Programming) { MessageBox("内容填写完成!"); return CPropertyPage::OnWizardFinish(); } else { MessageBox("请填写相应的内容!"); return 0; } // return CPropertyPage::OnWizardFinish(); } 六、编译 七、运行
八、编程思路
九、函数说明 1、 2、