mfc中控件访问操作的7种形式

  控件访问操作的7种形式!遇到的陌生的函数,都可以在msdn官网上查!

●GetDlgItem()->Get(Set)WindowText()

  int num1,num2,num3;
  	char str1[10],str2[10],str3[10];
  	GetDlgItem(IDC_EDIT1)->GetWindowText((LPTSTR)str1,10);
  	num1=atoi(str1);
  	GetDlgItem(IDC_EDIT2)->GetWindowText(str2,10);
  	num2=atoi(str2);
  	num3=num1+num2;
  	itoa(num3,str3,10);
      GetDlgItem(IDC_EDIT3)->SetWindowText(str3);

●GetDlgItemText()/SetDlgItemText()

   int num1,num2,num3;
  	char str1[10],str2[10],str3[10];
  	GetDlgItemText(IDC_EDIT1,str1,10);
  	num1=atoi(str1);
  	GetDlgItemText(IDC_EDIT2,str2,10);
  	num2=atoi(str2);
  	num3=num1+num2;
  	itoa(num3,str3,10);
  	SetDlgItemText(IDC_EDIT3,str3);

●GetDlgItemInt()/SetDlgItemInt()

      int num1,num2,num3;
  	num1=GetDlgItemInt(IDC_EDIT1);
  	num2=GetDlgItemInt(IDC_EDIT2);
  	num3=num1+num2;
  	SetDlgItemInt(IDC_EDIT3,num3);

●将控件和整型变量相关联

 操作:

 

 可以看到消息宏:

  //{{AFX_DATA_INIT(CControlDlg)
  	m_num1 = 0;
  	m_num2 = 0;
  	m_num3 = 0;
  	//}}AFX_DATA_INIT

DoDataExchange函数中的变化:希望能在msdn中来查看这个函数的说明

  void CControlDlg::DoDataExchange(CDataExchange* pDX)
  {
  	CDialog::DoDataExchange(pDX);
  	//{{AFX_DATA_MAP(CControlDlg)
  	DDX_Text(pDX, IDC_EDIT1, m_num1);
  	DDX_Text(pDX, IDC_EDIT2, m_num2);
  	DDX_Text(pDX, IDC_EDIT3, m_num3);
  	//}}AFX_DATA_MAP
  }
相应控件的方法中添加代码:

      UpdateData();
  	m_num3=m_num1+m_num2;
  	UpdateData(FALSE);

●将控件和控件变量相关联,和变量的关联是类似的!

  int num1,num2,num3;
  	char str1[10],str2[10],str3[10];
  	m_btn1.GetWindowText(str1,10);
  	m_btn2.GetWindowText(str2,10);
  	num1=atoi(str1);
  	num2=atoi(str2);
  	num3=num1+num2;
  	itoa(num3,<str3,10);
       m_btn3.SetWindowText(str3);

●SendMessage()

      ::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)str1);//::表示调用系统类
  	num1=atoi(str1);
      ::SendMessage(GetDlgItem(IDC_EDIT2)->m_hWnd,WM_GETTEXT,10,(LPARAM)str2);
  	num2=atoi(str2);
  	num3=num1+num2;
  	itoa(num3,str3,10);
  	::SendMessage(GetDlgItem(IDC_EDIT3)->m_hWnd,WM_SETTEXT,10,(LPARAM)str3);
      另外三种用法如下,这几个用法大致相似
   //::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);

●SendDlgItemMessage()

    SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)str1);
    num1=atoi(str1);
	SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)str2);
	num2=atoi(str2);
	num3=num1+num2;
	itoa(num3,str3,10);
	SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,10,(LPARAM)str3);

这里的10,和(LPARAM)str3是不能交换位置的!这或许是LPARAM 和WPARAM的区别吧!具体的这两个的区别我也弄不清楚!等以后理解清楚了,再单独的整理出来!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值