教程八(属性页表单和逃跑按钮)

1、创建逃跑按钮步骤:
step1:首先创建两个按钮
step2:由于我们要捕获一个鼠标移动的消息,而这个消息是由按钮消息来进行响应的。说的通俗点就是:在按钮类中由一个鼠标移       动的消息响应函数,当鼠标在按钮上时,只要一移动鼠标,就响应该函数。understand?
      所以我们创建一个CButton类(假如叫CLspBtn),在里面响应一个鼠标移动消息
step3:怎么样达到逃跑功能?我们的策略是:创建两个一模一样的按钮,当鼠标移动到一个按钮时,另一个按钮消失,反之亦然
但是怎么实现这个功能呢?在CLspBtn类中定义一个CButton指针。而在对话框类中分别给两个按钮定义两个CLspBtn的对象
在对话框初始化的时候,也就是OnInitDialog中,在交换两个对象的地址,因为每个对象中有一个CLspBtn指针(在CLspBtn中定义一个该指针)。
step4:在鼠标移动消息响应函数中写显示和隐藏就OK了,利用ShowWindow(SW_HIDE)和m_pBtn->ShowWindow(SW_SHOW)

2、属性表单(由属性页组成)和向导的创建
step1:创建属性表单,增加属性页(资源--》添加资源--》IDD_PROPPAGE_LARGE属性页)附加:IDD_PROPPAGE_LARGE一个大属性页, 用于属性对话框 IDD_PROPPAGE_MEDIUM一个中等大小的属性页,用于属性对话框 IDD_PROPPAGE_SMALL一个小的属性页,用于属性对话框。
针对三个属性页对话框,生成三个类。基类为CPropertyPage,该类继承于Cdialog类,所以也是一个对话框类,为了使用从CPropertyPage派生的类,要创建一个CPropertySheet对象。并为每一个属性页创建对象在属性表单property sheet中,具体在MSDN中搜CPropertyPage查看详细信息。
具体实施为:在属性表单中定义三个属性页的对象,并用AddPage增加到属性表单中(可以在构造中增加)。

操作CPropertySheet对象和操作CDialog对象是一致的,都可用DoModal显示。例如:CPropertySheet sheet("标题");sheet.DoModal();


step2:在三个属性也中增加一些东西,单选按钮、复选按钮、列表框、组合框等等。
step3:创建向导:在sheet.DoModal()之前,调用sheet.SetWizardMode();即可。
step4:设置上一步下一步按钮:在CPropertySheet::SetWizardButtons(参数MSDN中有)函数可以用来设置向导的上一步下一步完成按钮,调用CPropertySheet::SetWizardButtons在属性页的CPropertyPage::OnSetActive()函数中,由于其是一个虚函数,复写即可。
NOTE:此处,属性表单相当于属性页的父窗口,在属性页类中只要调用GetParent()就可得到属性也的指针。
step5:对于属性表单的下一步的响应,通过添加虚函数OnWizardNext()中响应。
NOTE:对于OnWiardNext返回0,自动跳转到下一个页面,返回-1,则留在当前页面,从控件中取回值需要UpdateData();
step6:对列表框的操作:列表框的类ClistBox,由函数AddString,增加一个字符串到一个列表框中。返回一个索引,获取列表框控件的指针,((ClistBox *)GetDlgItem(IDC_LIST1))。
step7:对复选框的操作:对四个控件关联四个Value变量。从控件取值别忘了UpdateData()
step8:对组合框的操作:类CComBoBox中由一个AddString函数。在属性页类中捕获WM_InitDialog消息。响应初始化函数。在函数中用GetDlgItem得到控件的指针,在用AddString增加字符串。
定义一个CString类型的变量,接收用户选择的字符串。利用GetCurSel得到索引,在利用GetLBText得到字符串。
NOTE:
窗口和对象之间的关系:窗口销毁,对象不一定销毁,注意一下。
inValidate();是窗口无效,引起窗口重绘,调用Ondraw函数,来完成信息的输出。
得到一行字体的高度:TEXTMETRIC tm;
    pDC->GetTextMetrics(&tm);
    pDC->TextOut(0,tm.tmHeight,str);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值