vc++学习笔记08---创建属性表单和向导
来源:互联网 发布:c语言初学者书籍推荐 编辑:程序博客网 时间:2024/05/18 12:31
MFC里面的对控件的操作都是通过对响应的类的操作;
创建属性表单时:
1首先创建实例对象对话框,然后创建该对话框的类,以备于在CPropertySheet中使用;
2创建属性表对象,利用CPropertySheet实例对象,然后在该类中添加实例对象类的成员变量
public:CProp3 m_prop3;CProp2 m_prop2;CProp1 m_prop1;
3,利用AddPage()函数初始化实例对象;
CPropSheet::CPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage):CPropertySheet(nIDCaption, pParentWnd, iSelectPage){AddPage(&m_prop1);AddPage(&m_prop2);AddPage(&m_prop3);}
4在窗口响应按钮里面,,利用doModal()模态化;
创建向导
在 Domadol之前调用setWizardMode()就可以创建一个向导;
void CPropView::OnProperty() {CPropSheet PropSheet("属性表单程序");PropSheet.SetWizardMode();//建立向导;建立向导必须设置属性页的按钮(下一步,完成...)
利用此函数,但是SetwizardButton()该函数必须在OnSetActive()中被调用;可以通过添加虚函数解决
BOOL CProp1::OnSetActive() {CPropSheet*p=(CPropSheet*)GetParent();p->SetWizardButtons(PSWIZB_NEXT);return CPropertyPage::OnSetActive();}
然后响应“下一步”消息的函数,捕捉WM_WIZARDNEXT消息
LRESULT CProp1::OnWizardNext() {UpdateData(TRUE);//更新选择的消息,ture,写入,false 写出if (-1==m_occupation) //m_occupation是单选控件的成员变量,表明其是否被选中,注意该控件的Group要选中,否则classwizard无反应{MessageBox("选择职业");return -1;}if (_T("")==m_workAddr)//w——workAddr是combox的成员变量{MessageBox("请选择工作地点");return -1;}return CPropertyPage::OnWizardNext();}
初始化编译控件的响应
BOOL CProp1::OnInitDialog() {CPropertyPage::OnInitDialog();((CListBox*)GetDlgItem(IDC_ListBox1))->AddString("北京");//对ListBox添加项,利用Addstring函数((CListBox*)GetDlgItem(IDC_ListBox1))->AddString("天津");((CListBox*)GetDlgItem(IDC_ListBox1))->AddString("山东");return TRUE; }
属性页2的响应:添加控件的成员变量,以区别是否被选中;
CProp2::CProp2() : CPropertyPage(CProp2::IDD){//{{AFX_DATA_INIT(CProp2)m_FootBall = FALSE;m_BasketBall = FALSE;m_ValletBall = FALSE;m_Swimming = FALSE;//}}AFX_DATA_INIT}
响应函数
LRESULT CProp2::OnWizardNext() {UpdateData(TRUE);if (m_BasketBall|m_FootBall|m_Swimming|m_ValletBall){return CPropertyPage::OnWizardNext();}else{MessageBox("请选择爱好!");return -1;}}
属性页3
对combolist的控件添加信息,捕捉WM_INITDIALOG消息
BOOL CProp3::OnInitDialog() {CPropertyPage::OnInitDialog();((CComboBox*)GetDlgItem(IDC_COMBO3))->AddString("1000-2000");((CComboBox*)GetDlgItem(IDC_COMBO3))->AddString("2000-3000");((CComboBox*)GetDlgItem(IDC_COMBO3))->AddString("3000-5000");((CComboBox*)GetDlgItem(IDC_COMBO3))->AddString("5000-8000");((CComboBox*)GetDlgItem(IDC_COMBO3))->AddString("10000以上");((CComboBox*)GetDlgItem(IDC_COMBO3))->SetCurSel(0);return TRUE; }响应“完成”的函数
BOOL CProp3::OnWizardFinish() {int index; //定义一个索引,保存控件combolist选择的条目index=((CComboBox*)GetDlgItem(IDC_COMBO3))->GetCurSel();//利用GetCurSel(0保存索引;((CComboBox*)GetDlgItem(IDC_COMBO3))->GetLBText(index,m_strSalary);//利用GetLBText()获得当前索引条目的内容return CPropertyPage::OnWizardFinish();}
==================================================================================================================================
将客户选择好的信息保存
void CPropView::OnProperty() {CPropSheet PropSheet("属性表单程序");PropSheet.SetWizardMode();if (ID_WIZFINISH==PropSheet.DoModal()){m_iOccupition=PropSheet.m_prop1.m_occupation;m_strAddr=PropSheet.m_prop1.m_workAddr;m_strSalary=PropSheet.m_prop3.m_strSalary;m_strLike[0]= PropSheet.m_prop2.m_FootBall;m_strLike[1]=PropSheet.m_prop2.m_BasketBall;m_strLike[2]=PropSheet.m_prop2.m_ValletBall;m_strLike[3]=PropSheet.m_prop2.m_Swimming;Invalidate();//引起当前重画}}将客户选择的信息输出到界面上:
void CPropView::OnDraw(CDC* pDC){CPropDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CFont font;font.CreatePointFont(300,"华文行楷");//创建字体CFont *poldFont;poldFont=pDC->SelectObject(&font);CString strtmp;//缓存变量strtmp="你的职业: ";switch (m_iOccupition){case 0:strtmp+="程序员";break;case 1:strtmp+="系统工程师";break;case 2:strtmp+="ITLeader";break;default:break;}pDC->TextOut(0,0,strtmp);strtmp="你的工作地点: ";strtmp+=m_strAddr;TEXTMETRIC tm;//获得字体高度,以用于显示pDC->GetTextMetrics(&tm);pDC->TextOut(0,tm.tmHeight,strtmp);strtmp="你的兴趣爱好: ";if (m_strLike[0]){strtmp+="足球";}if (m_strLike[1]){strtmp+="篮球";}if (m_strLike[2]){strtmp+="排球";}if (m_strLike[3]){strtmp+="游泳";}pDC->TextOut(0,tm.tmHeight*2,strtmp);strtmp="你的薪资水平: ";strtmp+=m_strSalary;pDC->TextOut(0,tm.tmHeight*3,strtmp);pDC->SelectObject(poldFont);}
- vc++学习笔记08---创建属性表单和向导
- vc创建属性表单向导
- VC中属性表单和向导的创建
- 属性表单和向导的创建
- 孙鑫vc++ 8 对话框(2) 属性表单和向导的创建
- 属性页表单和向导页
- 属性表单与向导
- VC++中属性页(向导)的实现 (学习孙鑫老师视频笔记)
- MFC中属性表单和向导对话框的使用
- MFC学习笔记之属性页和属性表单
- vc学习历程(9)--向导的创建
- 使用Gallery创建向导表单
- MFC属性页和向导对话框的创建
- 创建属性页(CpropertyPage)对话框和向导对话框!
- 一步步学习微软InfoPath2010和SP2010--第五章节--添加逻辑和规则到表单(6)--使用规则创建多视图样式向导表单
- MFC学习笔记之:属性页和表单的使用
- MFC学习笔记之:属性页和表单的使用
- HTML5 学习笔记4-表单新增的元素和属性
- 看看妹子们在七夕收到最烂的礼物都是啥
- Cookie跨域操作
- 【最长路】圣诞树
- CSS 让div内的span在一行显示
- html hr线的样式
- vc++学习笔记08---创建属性表单和向导
- 对称子字符串的最大长度
- 利用Httponly提升web应用程序安全性
- svn在linux下的使用(svn命令行)
- 【枚举优化\散列表】root
- python-常用小程序-网页爬虫
- ObjectInputStream与ObjectOutputStream的顺序问题
- String类
- java中instanceof用法