vc-study-8

来源:互联网 发布:通用网络加速 编辑:程序博客网 时间:2024/06/06 11:36

对话框编程(2)
========================
基于对话框的应用程序

做一个逃跑按钮
新增一个CButton 的新类
分别增加一个关联的成员变量

CWeiXinBtn*

交换一下两个对象的地址
Oninitdialog()
{
//地址的互相交换
m_btn1.m_pBtn=&m_btn2;
m_btn2.m_pBtn=&m_btn1;
}

OnMouseMove()
{
ShowWindow(SW_HIDE);
m_pBtn->ShowWindow(SW_SHOW);
}
//再稍稍该进一下
//SetWindowPos 也可以使用
=======================
属性表单 和 向导的创建
单文档
=======
创建属性表单
插入三个属性页
三个基本属性页的设置

生成三个类   CPropertyPage
//clw文件 信息的管理 先删除,再重新加载
DoModal()
Create()
=======
CPropSheet //CPropertySheet 增加一个新的类
//AddPage()
分别加入成员变量
CProp1 m_prop1;
CProp2 m_prop2;
CProp3 m_prop3;
增加头文件

两个都要加
构造函数中()
{
AddPage(&m_prop1);
AddPage(&m_prop2);
AddPage(&m_prop3);
}

菜单中增加一个菜单项
用于显示
view()
{
CpropSheet propsheet("属性表单的显示");
propsheet.domodal();

//增加头文件
}
字体设置一下
=====================
向导的创建
view()
{
CpropSheet propsheet("属性表单的显示");
propsheet.SetWizardmode();
propsheet.domodal();
//增加头文件
}
向导的完善:
SetWizardButtons()

//Prop1
OnSetActive()
{
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT);
}

//prop2
OnSetActive()
{
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK);
}

//prop3
OnSetActive()
{
((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_FINISH | PSWIZB_BACK);

=======
继续完善
//将单选按钮Group组的按钮选中
关联成员变量
m_occupation
//////////
OnWizardNext()
{
UpdateData();
//TRUE 取回值
//FALSE 将成员变量的值赋予变量
if(m_occupation==-1)
{
Messagebox("请选择你的职业");
return -1;
}
}
InitDialog()
{
((CListBox*)GetdlgItem(IDC_LIST1))->AddString("北京");
((CListBox*)GetdlgItem(IDC_LIST1))->AddString("天津");
((CListBox*)GetdlgItem(IDC_LIST1))->AddString("上海");
}

关联成员变量
CString
m_workStr;
OnWizardNext()
{
UpdateData();
//TRUE 取回值
//FALSE 将成员变量的值赋予变量
if(m_occupation==-1)
{
Messagebox("请选择你的职业");
return -1;
}

if(m_workStr=="");
MessageBox("请选择你的工作地点");
return -1;
}
/////对第二个页面的选择
关联四个成员变量
m_football
m_bskketball
……
都关联成BOOL类型
OnWizardnext()
{
UpdateData();
if(m_football || m_basketball || m_piangpang || m_swim )
{
retun CPropertypage::Onwizardnext();
//这是直接利用MFC的函数
}
else
{
MessageBox("请选择你的兴趣爱好");
return -1;
}
}
//第三个页面的处理
CComboBox
SetCurSel()

OninitDlg()
{
((CComboBox*)GetDlgitem(IDC_COMBO2))->AddString("1000元一下");
((CComboBox*)GetDlgitem(IDC_COMBO2))->AddString("1000-2000");
((CComboBox*)GetDlgitem(IDC_COMBO2))->AddString("2000-3000");
((CComboBox*)GetDlgitem(IDC_COMBO2))->AddString("3000元以上");

((CComboBox*)GetDlgitem(IDC_COMBO2))->SetCurSel(0);
//将属性排序的功能删除 sort 取消
}
=============================
将选择输出到窗口上:
CProp3 中
CString m_strSalary

OnWizardFinish()
{
int index;
index=((CComboBox*)GetDlgitem(IDC_COMBO2))->
GetCurSel();
((CComboBox*)GetDlgitem(IDC_COMBO2))->GetLBText(index,m_strSalary);
}
==============================
====================
成员变量
int m_iOccupation;
CString m_strWorkAddr;
BOOL m_bLike[4];
CString m_strSalary;

初始化:
{
m_iOccupation=-1;
m_strWorkAddr="";
memset(m_bLike,0,sizeof(m_bLike));
m_strSalary="";
}


view()
{
CpropSheet propsheet("属性表单的显示");
propsheet.SetWizardmode();
if(ID_WIZFINISH==propsheet.DoModal())
{
m_iOccupation=propSheet.m_prop1.m_occupation;
m_strWorkAddr=propSheet.m_prop1.m_workAddr;
m_bLike[0]=propSheet.m_prop2.m_football;
m_bLike[0]=propSheet.m_prop2.m_bsaketball;
m_bLike[0]=propSheet.m_prop2.m_pingpang;
m_bLike[0]=propSheet.m_prop2.m_swim;
m_strSalary=propSheet.m_prop3.m_strSalary;
Invalidate();
}
}

OnDraw()
{
CFont font;
font.CreatePointFont(300,"华文行楷");
CFont *pOldFont;
pOldFont=pDC->SelectObject(&font);
CString strTemp;
strTemp="你的职业:";

switch(m_iOccupation)
{
case 0:
strTemp+="程序员";
break;

case 1:
strTemp+="系统工程师";
break;

case 2:
strTemp+="项目经理";
break;

default:
break;
}
pDC->TextOut(0,0,strTemp);

//========================
strTemp="你的工作地点:";
strTemp+=m_strWorkAddr;

TEXTMETRIC tm;
pDC->GetTextmetrics(&tm);
pDC->TextOut(0,tm.tmHeight,strTemp);
//========================
strTemp="你的兴趣爱好:"
if(m_bLike[0])
{
strTemp+="足球 ";
}
if(m_bLike[1])
{
strTemp+="蓝球 ";
}
if(m_bLike[2])
{
strTemp+="拍球 ";
}
if(m_bLike[3])
{
strTemp+="CC ";
}

pDC->TextOut(0,tm.tmHeight*2,strTemp);

//======================
strTemp="你的薪资水平:";
strTemp+=m_strSalary;
pDC->TextOut(0,tm.tmhieght*3,strTemp);

pDC->SelectObject(pOldFont);
}
//over