1. 程式人生 > >MFC對話框控件訪問的七種方式

MFC對話框控件訪問的七種方式

class 編輯 等價 ble cpp push 通過 == cte

技術分享圖片

void CTestDlg::OnButtonAdd() 
{
	// TODO: Add your control notification handler code here
	//動態創建按鈕
/*	if ( FALSE == m_bIsCreate )  // 亦可以通過靜態變量 static BOOL bIsCreate = FALSE;
	{
		m_btn.Create("Lee", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,65), this, 111);
	//	m_btn.ShowWindow(SW_NORMAL);//若上句沒有WS_VISIBLE,就加上showWindow
		m_bIsCreate = TRUE;
	}
	else
	{
		m_btn.DestroyWindow();
		m_bIsCreate = FALSE;
	}
*/
/*	//最簡單的動態創建按鈕
	if (!m_btn.m_hWnd) //窗口句柄不為空
	{
		m_btn.Create("Lee", BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD, CRect(0,0,100,65), this, 111);
	}
	else
	{
		m_btn.DestroyWindow(); // 會自動將 m_hWnd = NULL
	}
*/
	//實現 點擊Add按鈕,將 編輯框1的數 + 編輯框2 的數  放到編輯框3中
/*	int num1, num2, num3;
	char ch1[10], ch2[10], ch3[10];
	GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); //將編輯框的文本存到ch1中,最大10個字符
	GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
	
	num1 = atoi(ch1); // 將字符串轉換為整型
	num2 = atoi(ch2);
	num3 = num1 + num2;
	itoa(num3, ch3, 10); // 將整數num3 轉換到ch3中,以十進制的方式
	
	GetDlgItem(IDC_EDIT3)->SetWindowText(ch3); // 將ch3字符數值,存到編輯框3中
*/
/*	//也可以
	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);
*/
/*	//還可以
	int num1, num2, num3;
	num1 = GetDlgItemInt(IDC_EDIT1); // 直接獲得編輯框中的數值
	num2 = GetDlgItemInt(IDC_EDIT2);

	num3 = num1 + num2;

	SetDlgItemInt(IDC_EDIT3, num3);
*/
/*	//最簡單的一種,用classwizard 關聯 控件與成員變量(以值)
	UpdateData();
	m_num3 = m_num2 + m_num1;
	UpdateData(FALSE);
*/
/*	//第五種方式  用classwizard 關聯 控件與成員變量(以控件)。與第一種相似
	int num1, num2, num3;
	char ch1[10], ch2[10], ch3[10];

	m_edit1.GetWindowText(ch1, 10);
	m_edit2.GetWindowText(ch2, 10);

	num1 = atoi(ch1); // 將字符串轉換為整型
	num2 = atoi(ch2);
	num3 = num1 + num2;
	itoa(num3, ch3, 10);

	m_edit3.SetWindowText(ch3);
*/
/*	//第六種方式,發送消息
	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, 10, (LPARAM)ch3);
*/
	//第七種方式
	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, 10, (LPARAM)ch3);
	SendDlgItemMessage(IDC_EDIT3, EM_SETSEL, 0, -1); //復選所有的文本
	//GetDlgItem(IDC_EDIT3)->SetFocus(); //將焦點聚到edit3. 或者 
	m_edit3.SetFocus();
}

  

MFC對話框控件訪問的七種方式