控件访问操作的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的区别吧!具体的这两个的区别我也弄不清楚!等以后理解清楚了,再单独的整理出来!