コントロールにアクセスする2つ、7つの方法-オンラインレッスンノート

コントロールにアクセスする2つ、7つの方法-オンラインレッスンノート

ここに写真の説明を挿入

方法1:

GetDlgItem(控件id)->GetWindowText(接收的变量,最大长度)

GetDlgItem(控件id)->SetWindowText(传的数据)

void Cmfc02demoDlg::OnBnClickedButton1()
{
	TCHAR ch1[12], ch2[12], ch3[12];//用来保存输入的字符串
	int num1, num2, num3;
	//拿到编辑框GetDlgItem(控件id)-> 获取里面的内容GetWindowTextW(接收的变量,最大长度)
	GetDlgItem(IDC_EDIT1)->GetWindowTextW(ch1,12);
	GetDlgItem(IDC_EDIT2)->GetWindowTextW(ch2, 12);
	num1 = _ttoi(ch1);
	num2= _ttoi( ch2 );
	num3 = num1 + num2;
	//将num3作为十进制数转换为字符类型赋值给ch3
	_itot_s(num3,ch3, 10);
	//修改里面的内容SetWindowTextW(传的数据)
	GetDlgItem(IDC_EDIT3)->SetWindowTextW(ch3);
}

方法2:

GetDlgItemText(控件id,接受数据的变量,最大长度)

SetDlgItemText(控件id,传数据的变量)

void Cmfc02demoDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	TCHAR ch1[12], ch2[12], ch3[12];//用来保存输入的字符串
	int num1, num2, num3;
	//GetDlgItemText(控件id,接受数据的变量,最大长度)
	GetDlgItemText(IDC_EDIT1,ch1,12);
	GetDlgItemText(IDC_EDIT2, ch2,12);
	num3 = _ttoi(ch1) + _ttoi(ch2);
	_itot_s(num3, ch3, 10);
    //SetDlgItemText(控件id,传数据的变量)
	SetDlgItemText(IDC_EDIT3, ch3);
}

方法3:

GetDlgItemInt(ID)idで取得したコントロールのデータを整数で返します

SetDlgItemInt(ID,数值)idで指定されたコントロールに整数データを渡します

void Cmfc02demoDlg::OnBnClickedButton3()
{
	int num1, num2;
	num1=GetDlgItemInt(IDC_EDIT1);
	num2 = GetDlgItemInt(IDC_EDIT2);
	SetDlgItemInt(IDC_EDIT3, num1 + num2);
}

関連して使用される4つの関数:

データ関連付けのためのDoDataExchange()

DDX_xxxx()が関連付けられています

検証用のDDV_xxxx()

UpdateData()は、関連するデータを更新します

UpdateData(TRUE) :将控件里的数据关联到变量里

UpdateData(FALSE):将变量的值同步到控件里

方法4:

把控件和整形变量相关联

変数m_num1、m_num2、およびm_num3をそれぞれ3つの編集ボックスに追加し、ボタンにイベントを追加して、cppファイルで直接値を取得します。

値を取得する前に、UpdateData(True);を呼び出して、コントロールの値を変数に同期する必要があります。計算後、UpdateData(FALSE);を使用して、変数の値をコントロールに同期する必要があります。

イベントの内容は以下のとおりです。

void Cmfc02demoDlg::OnBnClickedButton4()
{
	UpdateData(TRUE); 
	m_num3 = m_num1 +m_num2;
	UpdateData(FALSE);
}

方法5:

把控件和控件变量相关联

GetWindowText(接收数据的变量,数据长度最大)

SetWindowText(待传的数据)

まず、編集ボックスにそれぞれコントロールを追加します。コントロール変数名は次のとおりです。m_edit1、m_edit2、m_edit3;

次に、コントロールを介してGetWindowText()メソッドを呼び出してコントロールのコンテンツを取得し、処理を実行します

最後に、コントロールを介してSetWindowText()メソッドを呼び出し、コントロールのコンテンツを変更します

void Cmfc02demoDlg::OnBnClickedButton5()
{
	// TODO: 在此添加控件通知处理程序代码
	int num1, num2, num3;
	TCHAR ch1[12], ch2[12], ch3[12];
	m_edit1.GetWindowText(ch1,12);
	m_edit2.GetWindowText(ch2, 12);
	num3 = _ttoi(ch2) + _ttoi(ch1);
	_itot_s(num3, ch3, 10);
	m_edit3.SetWindowText(ch3);
}

第6法則:

::SendMessage(控件的窗口句柄,消息,数据长度,数据)

LPARAM:メッセージの追加パラメータータイプとしてのデータ

void Cmfc02demoDlg::OnBnClickedButton6()
{ 
	int num1,num2;
	TCHAR ch1[12], ch2[12], ch3[12];
	::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 12, (LPARAM)ch1);
	::SendMessage(GetDlgItem(IDC_EDIT2)->m_hWnd, WM_GETTEXT, 12, (LPARAM)ch2);
	_itot_s((_ttoi(ch1) + _ttoi(ch2)), ch3,10);
	::SendMessage(GetDlgItem(IDC_EDIT3)->m_hWnd, WM_SETTEXT,12, (LPARAM)ch3);
}

方法7:

::SendDlgItemMessage(当前窗口句柄,控件id,消息id,数据长度,数据)

データ長、データはメッセージの追加情報として渡されます

void Cmfc02demoDlg::OnBnClickedButton7()
{
	int num1, num2;
	TCHAR ch1[12], ch2[12], ch3[12];
	::SendDlgItemMessage(m_hWnd, IDC_EDIT1, WM_GETTEXT, 12, (LPARAM)ch1);
	::SendDlgItemMessage(m_hWnd, IDC_EDIT2, WM_GETTEXT, 12, (LPARAM)ch2);
	_itot_s((_ttoi(ch1) + _ttoi(ch2)), ch3, 10);
	::SendDlgItemMessage(m_hWnd, IDC_EDIT3, WM_SETTEXT, 12, (LPARAM)ch3);
}

SendDlgItemMessage(控件id、消息id,数据长度,数据)

void Cmfc02demoDlg::OnBnClickedButton7()
{
	int num1, num2;
	TCHAR ch1[12], ch2[12], ch3[12];
	SendDlgItemMessage( IDC_EDIT1, WM_GETTEXT, 12, (LPARAM)ch1);
	SendDlgItemMessage( IDC_EDIT2, WM_GETTEXT, 12, (LPARAM)ch2);
	_itot_s((_ttoi(ch1) + _ttoi(ch2)), ch3, 10);
	SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 12, (LPARAM)ch3);
}

おすすめ

転載: blog.csdn.net/weixin_49035356/article/details/109530266