在控件里设置值
1.新疆三个编辑框,将其ID设置为IDC_EDIT1,IDC_EDIT2,IDC_EDIT3
2.如果我们想要编辑框有默认文字,如何修改呢?我们就需要对这个控件进行操作
3.右键CbingoDialog,在属性页选择重写,选择OnInitDialog函数,所以在CbingoDialog.cpp就有了这么一个函数
4.第一种改变控件的方式,在OnInitDialog里写
CString strtext;
CWnd* pedit1 = GetDlgItem(IDC_EDIT1);
/获得句柄
if (pedit1!=NULL){pedit1->SetWindowTextW(_T("100"));}
pedit1->GetWindowTextW(strtext);
第二种改变控件的方式
SetDlgItemTextW(IDC_EDIT2, __T("200"));GetDlgItemText(IDC_EDIT2, strtext);
第三种改变编辑框默认文本的方式
SetDlgItemInt(IDC_EDIT3, 300);BOOL bistrang = FALSE;UINT ret=GetDlgItemInt(IDC_EDIT3,&bistrang);
ret的值为300
添加变量改变值
还有一种方法可以改变控件里的值
1.打开IDD_DIALOG1,右键编辑框1--->添加变量--->类型选择值,变量名为m_value1,变量类型为int,点击下一步,最大最小值,随便填,按照这个步骤依次生成编辑框的value2,value3
2.可以看到在CbingoDialog.h中已经声明了一个m_value1,在CbingoDialog.cpp中,这么一个函数中,自动生成如下代码将变量名和ID绑定
void CbingoDialog::DoDataExchange(CDataExchange* pDX)
{DialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, value1);DDV_MinMaxInt(pDX, value1, -99999, 99999);
}
3.我们在确定按钮中写入如下代码
void CbingoDialog::OnBnClickedOk()
{UpdateData(TRUE);m_value3 = value1 + m_value2;UpdateData(FALSE);
}
UpdateData(FALSE)
是一个数据交换函数,用于将数据变量的值更新到控件中,控件的值就是文本编辑框显示的值,UpdateData(TRUE)表示将控件的值更新到变量中,这里就是在编辑框输入1,2,最后得出相加结果3,然后显示出来
添加控件改变值
1.打开IDD_DIALOG1,右键编辑框1--->添加变量--->类型选择控件,名为m_edit1,依次生成三个控件
2.在确定按钮中写入如下代码
CString str1, str2, str3;m_edit1.GetWindowTextW (str1);m_edit2.GetWindowTextW (str2);int t = _wtoi(str1) + _wtoi(str2);TCHAR buffer[32]=_T(" ");str3 = _itow(t, buffer, 10);m_edit3.SetWindowTextW(str3);
itow()
函数用于将整数转换成宽字符格式的字符串,buffer是保存转换结果的缓冲区,为什么不直接str3=str2+1呢,因为表达式必须为可修改的左值
通过消息改变值
int num1, num2, num3;wchar_t ch1[10], ch2[10], ch3[10];m_edit1.SendMessage(WM_GETTEXT, 10, (LPARAM)ch1);m_edit2.SendMessage(WM_GETTEXT, 10, (LPARAM)ch2);num3 = _wtoi(ch1) + _wtoi(ch2);_itow_s(num3, ch3, 10);m_edit3.SendMessage(WM_SETTEXT, 10, (LPARAM)ch3);
第三句代码意思是,当 SendMessage()
发送 WM_GETTEXT
消息到编辑框控件时,编辑框控件会将它的文本复制到 LPARAM
指向的缓冲区中,直到文本长度达到 10或者文本末尾遇到空字符为止