您的位置:首页 > 其它

LESSON8: 逃跑按钮, 多页表单, 向导; (悲剧的CSDN BLOG)

2010-07-04 01:24 302 查看
void CBtn::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
ShowWindow(SW_HIDE);
m_pBtn->ShowWindow(SW_SHOW);
CButton::OnMouseMove(nFlags, point);
}

BOOL CProp1::OnSetActive()
{
// TODO: Add your specialized code here and/or call the base class
((CPropSheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}

LRESULT CProp1::OnWizardNext()
{
// TODO: Add your specialized code here and/or call the base class
UpdateData(TRUE);
if(m_occupation==-1)
{
MessageBox("请选择你的职业");
return -1;
}
if(m_workAddr=="")
{
MessageBox("请选择你的工作地点");
return -1;
}
return CPropertyPage::OnWizardNext();
}

BOOL CProp1::OnInitDialog()
{
CPropertyPage::OnInitDialog();

// TODO: Add extra initialization here

( (CListBox*)GetDlgItem(IDC_LIST1) )->AddString("北京");
( (CListBox*)GetDlgItem(IDC_LIST1) )->AddString("天津");
( (CListBox*)GetDlgItem(IDC_LIST1) )->AddString("上海");
return TRUE;  // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}

CPropSheet::CPropSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
AddPage(&m_prop1);
AddPage(&m_prop2);
AddPage(&m_prop3);
}

CPropSheet::CPropSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
AddPage(&m_prop1);
AddPage(&m_prop2);
AddPage(&m_prop3);
}

void CChildView::OnPropsheet()
{
// TODO: Add your command handler code here
CPropSheet propSheet("属性表单");
propSheet.SetWizardMode();
if(propSheet.DoModal()==ID_WIZFINISH)
{
m_iOccupation=propSheet.m_prop1.m_occupation;
m_strWorkAddr=propSheet.m_prop1.m_workAddr;
m_bLike[0]=propSheet.m_prop2.m_football;
m_bLike[1]=propSheet.m_prop2.m_basketball;
m_bLike[2]=propSheet.m_prop2.m_valeyball;
m_bLike[3]=propSheet.m_prop2.m_swim;
Invalidate();
}
}

创建两个对话框上的按钮,给按钮关联按钮类,按钮类继承自CBtton类, 为了能够给按钮写消息响应函数!

通过ShowWindow()函数完成按钮的消失与显示.

属性表类对话框继承自CPropertyPage 类, 如果是制作一个向导,那么需要重写虚函数OnSetActive(),通过GetParent()获取CPropertySheet 类指针,在属性页面被激活显示前,调用SetWizardButtons()函数设置其按钮.

通过重写CPropertyPage 类的OnWizardNext() 函数,可以在进入下一页面之前判断用户选择,返回-1表示不进入下一页面.

在初始化对话框时,给列表框添加选项,通过向导可以使选择与一个CString关联起来.

复选框通过添加一系列BOOL变量进行关联,单选按钮通过设置group属性,并且关联一个int变量表示当前选择.

属性列表类继承自:CPropertySheet , 在构造函数内添加各个属性页,各个属性页都作为一个成员变量.

在View类内相应菜单消息,弹出属性列表.

在相应函数内:

这是向导型表单,生成局部表单变量,用模态弹出对话框,这样不会因为离开函数而销毁,通过表单的最终返回值,可以判断是否完成表单填写.

填写完成,那么将表单内各个页面的选择都获取,打印消息.

由于这里是向导,所以用了SetWizardMode();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息