第八节 对话框控件的变量绑定和开源控件的使用
2012-04-07 14:08
369 查看
第八节 对话框控件的变量绑定和开源控件的使用
在对话框上能添加各种控件,如何对这些控件进行操作呢,有2种基本的方法.
①->控件类型变量绑定的两种方法 - 数据交换机制:
(1)利用GetDlgItem函数取得对话框控件指针,具体操作
1->在主对话框类CMFCDlg类中 声明一个需要绑定的CButton类的变量 m_button, 在BOOL CMFCTestDlg::OnInitDialog()中,用pButton = (CButton *)GetDlgItem(IDC_BUTTON1);获取ID=IDC_BUTTON1的控件,
2->用获取的pButton指针进行操作,具体操作可以查看CButton类的成员函数
--------------------------------------------------------------------------------------------------------------------------------------
(2)利用VC向导的方式添加
1->在资源编辑器中画一个Edit Control,然后鼠标移上去右键添加变量CEdit m_Edit
2->观察主对话框 CMFCDlg类的cpp和h变化,会发现在h文件中添加了public:CEdit m_Edit;在cpp中有一个叫
void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAIN_EDIT, m_Edit);
}
这里的DDX_Control是进行数据交换的一个宏,作用控件与变量进行绑定,然后对变量进行操作就相当于对空间进行操作
3->对CEdit m_Edit进行操作 可以查看CEdit类的成员函数
--------------------------------------------------------------------------------------------------------------------------------------
②->字符串类型、数值类型 变量的绑定以及数据验证机制;
1->在资源编辑器的Edit control点击添加变量 选择非控件类型,添加CString m_strEdit,最大字符串长度限制选择5
2->操作完成后进入主对话框CMFCDlg类的cpp和h文件查看,如果在h文件没有发现CString m_strEdit则需要手动添加,在void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAIN_EDIT, m_Edit);
DDX_Text(pDX,IDC_MAIN_EDIT,m_strEdit); //如未出现则手动添加
}
DDX_Text是绑定非控件类型的控件变量宏
3->对m_strEdit进行MeesageBox(m_strEdit),发现提示框为空,这是因为还没有进行数据交换更新,需要调用
UpdateData(TRUE);//这句是指把Edit control数据提出来,而如果想把新的m_strEdit再次放入Edit control则用
UpdateData(FALSE);//这句是把m_strEdit 更新进去
4->退回第一步再次添加非控件变量 int m_intEdit,因为一个控件最多绑定2个变量
5->操作完成后进入主对话框CMFCDlg类的cpp和h文件查看,如果在h文件没有发现int m_strEdit则需要手动添加,在void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAIN_EDIT, m_Edit);
DDX_Text(pDX,IDC_MAIN_EDIT,m_intEdit); //如未出现则手动添加
}
6->对m_intEdit进行MessageBox操作,
m_intEdit = 123;
UpdateData(TRUE);
CString str;
str.Format(_T("m_IntEdit = %d"), m_IntEdit); //转格式为CString
MessageBox(str);
m_IntEdit = 456;
UpdateData(FALSE);
7->如果要对DDX_Text输入的数据进行限定
需要在void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
假如DDV_XXXX 进行数据校验 注意需要数据更新后才能正常校验 UpdateData(TRUE);
--------------------------------------------------------------------------------------------------------------------------------------
③各种开源控件类的使用;
1->可以先下载开源控件类,然后在工程加入cpp和h文件,并按照说明进行操作
④MFC与SDK API中同名函数问题。
1->如果要在MFC类中使用全局变量需要加::操作符
--------------------------------------------------------------------------------------------------------------------------------------
⑤控件自定义消息响应
1->为控件添加基于子类的类,并且与控件所在类进行绑定,绑定步骤与上面一样
2->在新建类完成消息响应
3->有向导则无需手动添加消息映射,消息声明
在对话框上能添加各种控件,如何对这些控件进行操作呢,有2种基本的方法.
①->控件类型变量绑定的两种方法 - 数据交换机制:
(1)利用GetDlgItem函数取得对话框控件指针,具体操作
1->在主对话框类CMFCDlg类中 声明一个需要绑定的CButton类的变量 m_button, 在BOOL CMFCTestDlg::OnInitDialog()中,用pButton = (CButton *)GetDlgItem(IDC_BUTTON1);获取ID=IDC_BUTTON1的控件,
2->用获取的pButton指针进行操作,具体操作可以查看CButton类的成员函数
--------------------------------------------------------------------------------------------------------------------------------------
(2)利用VC向导的方式添加
1->在资源编辑器中画一个Edit Control,然后鼠标移上去右键添加变量CEdit m_Edit
2->观察主对话框 CMFCDlg类的cpp和h变化,会发现在h文件中添加了public:CEdit m_Edit;在cpp中有一个叫
void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAIN_EDIT, m_Edit);
}
这里的DDX_Control是进行数据交换的一个宏,作用控件与变量进行绑定,然后对变量进行操作就相当于对空间进行操作
3->对CEdit m_Edit进行操作 可以查看CEdit类的成员函数
--------------------------------------------------------------------------------------------------------------------------------------
②->字符串类型、数值类型 变量的绑定以及数据验证机制;
1->在资源编辑器的Edit control点击添加变量 选择非控件类型,添加CString m_strEdit,最大字符串长度限制选择5
2->操作完成后进入主对话框CMFCDlg类的cpp和h文件查看,如果在h文件没有发现CString m_strEdit则需要手动添加,在void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAIN_EDIT, m_Edit);
DDX_Text(pDX,IDC_MAIN_EDIT,m_strEdit); //如未出现则手动添加
}
DDX_Text是绑定非控件类型的控件变量宏
3->对m_strEdit进行MeesageBox(m_strEdit),发现提示框为空,这是因为还没有进行数据交换更新,需要调用
UpdateData(TRUE);//这句是指把Edit control数据提出来,而如果想把新的m_strEdit再次放入Edit control则用
UpdateData(FALSE);//这句是把m_strEdit 更新进去
4->退回第一步再次添加非控件变量 int m_intEdit,因为一个控件最多绑定2个变量
5->操作完成后进入主对话框CMFCDlg类的cpp和h文件查看,如果在h文件没有发现int m_strEdit则需要手动添加,在void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAIN_EDIT, m_Edit);
DDX_Text(pDX,IDC_MAIN_EDIT,m_intEdit); //如未出现则手动添加
}
6->对m_intEdit进行MessageBox操作,
m_intEdit = 123;
UpdateData(TRUE);
CString str;
str.Format(_T("m_IntEdit = %d"), m_IntEdit); //转格式为CString
MessageBox(str);
m_IntEdit = 456;
UpdateData(FALSE);
7->如果要对DDX_Text输入的数据进行限定
需要在void CMFCtDlg::DoDataExchange(CDataExchange* pDX)
假如DDV_XXXX 进行数据校验 注意需要数据更新后才能正常校验 UpdateData(TRUE);
--------------------------------------------------------------------------------------------------------------------------------------
③各种开源控件类的使用;
1->可以先下载开源控件类,然后在工程加入cpp和h文件,并按照说明进行操作
④MFC与SDK API中同名函数问题。
1->如果要在MFC类中使用全局变量需要加::操作符
--------------------------------------------------------------------------------------------------------------------------------------
⑤控件自定义消息响应
1->为控件添加基于子类的类,并且与控件所在类进行绑定,绑定步骤与上面一样
2->在新建类完成消息响应
3->有向导则无需手动添加消息映射,消息声明
相关文章推荐
- 7.8对话框控件的变量绑定及开源控件类的使用
- [7]对话框控件的变量绑定
- 关于对话框控件与变量绑定,
- 变量对话框MFC 关于控件变量的使用
- mfc 对话框 toolBox 中的控件 edit control和slider control 或 spin control 使用并绑定
- 变量绑定对话框控件不同类型成员变量的绑定
- 对话框控件不同类型成员变量的绑定。
- 对话框中使用控件变量的时机
- 在别的对话框中使用控件变量
- 使用QGraphicView控件的对话框不能作为static变量或全局变量?
- 对话框控件的变量绑定
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.6 修改了几个小bug,使用演示。
- GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值
- ORACLE绑定变量的使用
- 在java中使用oracle绑定变量
- 如何解决FormView中实现DropDownList连动选择时出现 "Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用" 的错误
- 如何在对话框程序中使用动画控件
- 开源控件ViewPagerIndicator的使用
- 回调函数中使用MFC类的成员或对话框控件的简单方法
- 更改工程(项目)名称,对话框资源ID、类名,控件ID、变量名、类名