MFC学习笔记(6)

这几天 过年 到处跑 没时间学习--  笔记迟到了好多天

今天开始补...

 

 

 

为按钮响应消息
首先 创建一个基于CBUTTON的类 例如MyBtn
然后 将按钮关联到此类
通过MyBtn来添加消息响应

创建属性表单

首先添加属性页资源
然后为每个属性页资源添加类 要选择CPropertyPage类
再添加一个属性表单类 类型为CPropertySheet
把三个属性页对象作为变量添加到该类中
之后在属性表单类的构造函数中调用AddPage将属性页对象添加到属性表单
void AddPage(CPropertyPage *pPage);
之后添加一个菜单的项  为此项添加一个响应函数  其中用DoModal()创建模式表单

在DoModal前加上SetWizardMode()可以做成向导

以上方法 我在VS2008中 会出现所属资源无法使用的错误提示
而在VC6++下 完全没问题  这是为什么呢 暂时我还不清楚
但是在VC驿站的朋友帮助下  知道怎么搞定了
有一个比较麻烦的方法就是在.rc文件中 把跟属性页相关的如下部分代码 及其对应的#endif删除

#if defined(APSTUDIO_INVOKED) || defined(PAGE2)
#if defined(APSTUDIO_INVOKED)
IDD_PROP2$(PAGE2) DIALOGEX 0, 0, 235, 156
#else

这段代码是什么意思 我暂时不想浪费时间了 
我们谈下一话题

做向导的时候我们想改变属性页按钮的   需要在三个属性页类中分别重写OnSetActive函数   在其中添加((CPropSheet *)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);

*这个GetParent是为了得到属性表的指针

Radio Button 是通过GROUP属性来划分组的  通过在具有组属性的按钮上添加一个成员变量  根据该变量的值来判断组里有谁被选中  注意  被关联的变量与控件间的数据交换需要地用UpdateData函数
参数为TRUE时是从控件中取回指  参数为FALSE是将成员变量的值赋予控件
要在点击下一步的时候判断RadioButton是否被选中 需要在该属性页的类中重写OnWizardNext函数

对于要在属性页的list里添加了内容  可以在OnInitDialog函数中写  该函数是用来相应WM_INITDIALOG消息的  该消息是在对话框将要显示之前发送的  在VC6++中是通过添加消息映射函数建立该函数的   而在VS2008中 则是通过重写

MFC中对控件操作都是通过调用相关的类  比如list box控件  就要用CListBox类   然后可以通过得到控件指针的函数 GetDlgItem 来操作
如:
((CListBox *)GetDlgItem(IDC_LIST1))->AddString(L"枫江");
判断list box中的选项是否被选择的方法  也是关联一个成员变量  CString类型的   如果为空 则未选择

Combo Box的Sort属性选FALSE 就不会自动排序了
可以用CComboBox的一个成员函数SetCurSel来进行缺省的设置

*VS2008中 添加数组变量 方法举例
类型 int (&)[10]
名字 m

但是 添加进去之后最好还是改成 int m[10]的形式

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值