对话框中控件的几种访问方法
2015-04-16 18:53
218 查看
1、通过相关函数进行访问
CWnd::GetDlgItem 通常通过控件的Id来获取指向控件的指针,以便进一步对控件的操作
CWnd::GetWindowText获取一个窗体的caption或者控件上的文本
CWnd::SetWindowText Sets thewindow’s title to the specified text. If the window is a control, the textwithin the control is set
代码如下:
CWnd::GetDlgItemText 其功能相当于CWnd::GetDlgItem和CWnd::GetWindowText的总功能
CWnd::SetDlgItemText 其功能相当于CWnd::SetDlgItem和CWnd::SetWindowText的总功能
代码如下:
对静态文本框进行操作的代码如下:
Remarks:
因为静态文本框主要是用来显示文本的,一般不对其进行事操作,所以微软默认的将所有的静态文本框的Id统一设置成IDC_STATIC,如果非要对静态文本框进行操作,首先需要更改其id,其次需要将其styles属性中的notify(通告)勾上,勾上之后才能产生通告消息(消息非为标准消息,命令消息和通告消息)
对于逗号表达式,形如x1,x2,x3…….xn其执行的顺序是从左到右的顺序依次执行,整个逗号表达式的值是最后一个表达式xn的值。
CWnd::GetDlgItemInt 根据控件的Id来获取控件上的数值型文本
CWnd::SetDlgItemInt 将一个整型数设置到控件上
代码如下:
2、通过将一个变量与控件相关联对控件进行操作,该变量可以是一般类型的变量,也可以是控件类型的变量。具体方法是按快捷键Ctrl+W键唤出classwizard,选中membervariables选项卡,通过控件id来添加与控件相关联的变量,当我们将变量与控件相关联之后你会发现代码
其中的注释宏中的DX_Text()函数的作用就是将变量与指定控件相关联,像以的DDX_(Dialog data enxchange)和以DDV_(Dialog data valid)开头的函数有很多,他俩一个是对话框数据交换一个是对话框数据校验,作用都是将变量与各种类型的相关的控件关联,这里就不赘述了,详情请看MSDN,
你还会发现在对话框类中的构造函数中将变量进行初始化了(看注释宏之间的代码)
注意:要想使从控件上输入的数字赋值到相关联的变量上,必须调用CWnd::UpdateData函数,并且设置参数为TRUE,也可以不设置,因为其缺省值是TRUE,当对数值操作结束后还需要在调用一次,这一次需要将参数设置成 FALSE如下代码
3、通过SendMessage函数发送一个WM_GETTEXT和WM_SETTEXT消息来获取和设置对话框文本,其中::SendMessage函数可以是Win32API函数,也可以是CWnd::SendMessage
代码如下:
4、通过CWnd::SendDlgItemMessage函数发送一个WM_GETTEXT和WM_SETTEXT消息来获取和设置对话框文本,该函数相当于上述的CWnd::SendMessage和CWnd::GetDlgItem 功能的集合
代码如下:
CWnd::GetDlgItem 通常通过控件的Id来获取指向控件的指针,以便进一步对控件的操作
CWnd::GetWindowText获取一个窗体的caption或者控件上的文本
CWnd::SetWindowText Sets thewindow’s title to the specified text. If the window is a control, the textwithin the control is set
代码如下:
int num1,num2,num3; char ch1[10],ch2[10],ch3[10]; GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10); num1=atoi(ch1); num2=atoi(ch2); num3=num1+num2; itoa(num3,ch3,10); GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
CWnd::GetDlgItemText 其功能相当于CWnd::GetDlgItem和CWnd::GetWindowText的总功能
CWnd::SetDlgItemText 其功能相当于CWnd::SetDlgItem和CWnd::SetWindowText的总功能
代码如下:
int num1,num2,num3; char ch1[10],ch2[10],ch3[10]; GetDlgItemText(IDC_EDIT1,ch1,10); GetDlgItemText(IDC_EDIT2,ch2,10); num1=atoi(ch1); num2=atoi(ch2); num3=num1+num2; itoa(num3,ch3,10); SetDlgItemText(IDC_EDIT3,ch3);
对静态文本框进行操作的代码如下:
voidCTestDlg::OnNumber1() { // TODO: Add your control notificationhandler code here CString str; if(GetDlgItem(IDR_NUMBER1)->GetWindowText(str),"Number1:"==str) { GetDlgItem(IDR_NUMBER1)->SetWindowText("数值1:"); } else { GetDlgItem(IDR_NUMBER1)->SetWindowText("Number1:"); } }
Remarks:
因为静态文本框主要是用来显示文本的,一般不对其进行事操作,所以微软默认的将所有的静态文本框的Id统一设置成IDC_STATIC,如果非要对静态文本框进行操作,首先需要更改其id,其次需要将其styles属性中的notify(通告)勾上,勾上之后才能产生通告消息(消息非为标准消息,命令消息和通告消息)
对于逗号表达式,形如x1,x2,x3…….xn其执行的顺序是从左到右的顺序依次执行,整个逗号表达式的值是最后一个表达式xn的值。
CWnd::GetDlgItemInt 根据控件的Id来获取控件上的数值型文本
CWnd::SetDlgItemInt 将一个整型数设置到控件上
代码如下:
int num1,num2,num3; num1=GetDlgItemInt(IDC_EDIT1); num2=GetDlgItemInt(IDC_EDIT2); num3=num1+num2; SetDlgItemInt(IDC_EDIT3,num3);
2、通过将一个变量与控件相关联对控件进行操作,该变量可以是一般类型的变量,也可以是控件类型的变量。具体方法是按快捷键Ctrl+W键唤出classwizard,选中membervariables选项卡,通过控件id来添加与控件相关联的变量,当我们将变量与控件相关联之后你会发现代码
voidCTestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTestDlg) DDX_Text(pDX, IDC_EDIT1, m_num1); DDX_Text(pDX, IDC_EDIT2, m_num2); DDX_Text(pDX, IDC_EDIT3, m_num3); //}}AFX_DATA_MAP }
其中的注释宏中的DX_Text()函数的作用就是将变量与指定控件相关联,像以的DDX_(Dialog data enxchange)和以DDV_(Dialog data valid)开头的函数有很多,他俩一个是对话框数据交换一个是对话框数据校验,作用都是将变量与各种类型的相关的控件关联,这里就不赘述了,详情请看MSDN,
你还会发现在对话框类中的构造函数中将变量进行初始化了(看注释宏之间的代码)
CTestDlg::CTestDlg(CWnd*pParent /*=NULL*/) : CDialog(CTestDlg::IDD, pParent) { //{{AFX_DATA_INIT(CTestDlg) m_num1 = 0; m_num2 = 0; m_num3 = 0; //}}AFX_DATA_INIT m_bIsCreated=FALSE; }
注意:要想使从控件上输入的数字赋值到相关联的变量上,必须调用CWnd::UpdateData函数,并且设置参数为TRUE,也可以不设置,因为其缺省值是TRUE,当对数值操作结束后还需要在调用一次,这一次需要将参数设置成 FALSE如下代码
voidCTestDlg::OnBtnAdd() { // TODO: Add your control notificationhandler code here /* if (!m_bIsCreated)//该判断语句也可以是!m_btn.m_hWnd,使用m_btn对象中的成员变量判断句柄是否有值 { m_btn.Create("feiyan",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0, 0, 100, 50), this,123); //在对话框上动态添加一个按钮 m_bIsCreated = TRUE; //判断是否已经创建了按钮,是的话销毁,现点击可再重新创建 } else { m_btn.DestroyWindow(); //销毁窗口,因为按钮也是从CWnd继承来 m_bIsCreated = FALSE; } */ UpdateData(); m_num3=m_num1+m_num2; UpdateData(FALSE); }
3、通过SendMessage函数发送一个WM_GETTEXT和WM_SETTEXT消息来获取和设置对话框文本,其中::SendMessage函数可以是Win32API函数,也可以是CWnd::SendMessage
代码如下:
int num1,num2,num3; char ch1[10],ch2[10],ch3[10]; //::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1); //::SendMessage(m_edit1.m_hWnd,WM_GETTEXT,10,(LPARAM)ch1); //GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10,(LPARAM)ch1); m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1); m_edit2.SendMessage(WM_GETTEXT,10,(LPARAM)ch2); num1=atoi(ch1); num2=atoi(ch2); num3=num1+num2; itoa(num3,ch3,10); m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)ch3);
4、通过CWnd::SendDlgItemMessage函数发送一个WM_GETTEXT和WM_SETTEXT消息来获取和设置对话框文本,该函数相当于上述的CWnd::SendMessage和CWnd::GetDlgItem 功能的集合
代码如下:
int num1,num2,num3; char ch1[10],ch2[10],ch3[10]; SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1); SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2); num1=atoi(ch1); num2=atoi(ch2); num3=num1+num2; itoa(num3,ch3,10); SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3); //下面两行代码是用来设置复选内容的,详情查EM_SETSEL和EM_GETSEL SendDlgItemMessage(IDC_EDIT3,EM_SETSEL,0,-1); m_edit3.SetFocus();
相关文章推荐
- vc++ 对话框控件访问的7种方法
- MFC访问对话框控件的7种方法
- 控件方法MFC对话框编程(二):控件的访问
- 访问控件的几种方法
- MFC访问对话框控件的几种方式
- VC技术 (对话框访问控件的方法)
- C++对话框控件访问的7种方法
- MFC访问对话框控件的几种方式
- Windows程序设计 访问对话框控件的七种方法(1)
- Windows程序设计 对话框控件访问的七种方法(2)
- MFC里面的响应对话框里的Edit控件的几种方法
- MFC中 自定义类访问主对话框控件的方法
- Windows程序设计 对话框控件访问的七种方法(3)
- MFC 访问控件的几种方法
- Windows编程基础--第8节 MFC对话框控件访问的七种方法(上)
- ASP.NET弹出对话框几种基本方法
- VS2008(C#)子页嵌套母版页的控件访问方法(一)
- SpringMVC访问不到静态资源的几种解决方法!
- 介绍几种很棒的wince驱动调试方法——在wince应用程序中直接访问硬件(作者:gooogleman)
- 分享实现web用户控件调用.aspx页面里的方法(从而达到访问母页面中控件的目的)