VS2008, MFC 編程 對話框 筆記1

1. 靜態文本框要響應鼠標單擊  就要設置其屬性中的Notify 爲True,同時改變其ID,以使得其ID 與其他靜態文本ID不同.

 

2. 實現 點擊 靜態文本改變 其內容的代碼

void CtestDlg::OnStnClickedNumber1()
{
	// TODO: 在此添加控件通知處理程序代碼
	CString str;
	if( GetDlgItem(IDC_NUMBER1)->GetWindowTextW(str),str ==L"Number1")//GetDlgItem獲取控件指針,GetWindowTextW獲取控件文本,
	{
		GetDlgItem(IDC_NUMBER1)->SetWindowTextW(L"數值1:");
	}
	else
	{
		GetDlgItem(IDC_NUMBER1)->SetWindowTextW(L"Number1");
	}
}

3. 給Edit Control 關聯成員變量 實現算數運算,關聯控件變量,右鍵控件Edit Control 選擇 添加變量,給相關控件關聯變量,設置參考下圖

3.1 同時我們也給Edit Control 控件 添加 控制變量CEdit 成員,,右鍵控件Edit Control 選擇 添加變量,用此方法把相關控件都添加CEdit成員:

 

3.2 在一個button控件添加 事件響應函數 參看代碼和註釋:選擇自己的方式與控件聯繫

void CtestDlg::OnBnClickedBtnAdd()
{
	// TODO: 在此添加控件通知處理程序代碼
	/*實現 點擊一個按鈕 動態增加/刪除 按鈕的功能
	if(FALSE == m_bIsCreate)
	{
	    m_btn.Create(L"Tst_Button",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,CRect(0,0,100,100),this,123);
		m_bIsCreate = TRUE;
	}
	else
	{
		m_btn.DestroyWindow();
		m_bIsCreate = FALSE;
	}
	*/
	/*實現1 當按下一個按鈕 把兩個Edit Control數字內容相加 放到兩外一個Edit Control 中
	int num1,num2,num3;
	WCHAR    str1[10],str2[10],str3[10];
	GetDlgItem(IDC_EDIT1)->GetWindowTextW(str1,10);//獲取Control Edit1中的字符串
	GetDlgItem(IDC_EDIT2)->GetWindowTextW(str2,10);//獲取COntrol Edit2中的字符串

	num1 = _ttoi(str1);
	num2 = _ttoi(str2);
	num3 = num1 + num2;
	CString str;
	str.Format(L"%d",num3);
//	itoa(num3,str3,10);//10表示10進制類型轉換

	GetDlgItem(IDC_EDIT3)->SetWindowTextW(str);
	*/

    /* 實現2 當按下一個按鈕 把兩個Edit Control數字內容相加 放到兩外一個Edit Control 中
	int num1,num2,num3;
	WCHAR    str1[10],str2[10],str3[10];
	GetDlgItemText(IDC_EDIT1,str1,10);//獲取Control Edit1中的字符串
	GetDlgItemText(IDC_EDIT2,str2,10);//獲取COntrol Edit2中的字符串

	num1 = _ttoi(str1);
	num2 = _ttoi(str2);
	num3 = num1 + num2;
	CString str;
	str.Format(L"%d",num3);
//	itoa(num3,str3,10);//10表示10進制類型轉換

	SetDlgItemText(IDC_EDIT3,str);
	*/

	/* 實現3 當按下一個按鈕 把兩個Edit Control數字內容相加 放到兩外一個Edit Control 中
	int num1,num2,num3;
	num1 = GetDlgItemInt(IDC_EDIT1);
	num2 = GetDlgItemInt(IDC_EDIT2);
	num3 = num1+num2;
	SetDlgItemInt(IDC_EDIT3,num3,1);//1 代表是有符號的值
	*/

    /*實現4 --最常用 關聯成員變量 : 當按下一個按鈕 把兩個Edit Control數字內容相加 放到兩外一個Edit Control 中
	UpdateData();//缺省爲真 不用傳參 //DoDataExchange會被調用 獲取並關聯數據到控件。
	m_num3 = m_num1 + m_num2;//關聯數據 後 系統會自動判斷 輸入數據的合法性,如果輸入非數字 非彈出 錯誤,同理數值範圍也可以設置。
    UpdateData(FALSE); //DoDataExchange會被調用 獲取並關聯數據到控件。
	*/
   /*實現5 - 用關聯控件 實現 當按下一個按鈕 把兩個Edit Control數字內容相加 放到兩外一個Edit Control 中	
	int num1,num2,num3;
	WCHAR    str1[10],str2[10],str3[10];
	m_edit1.GetWindowTextW(str1,10);
	m_edit2.GetWindowTextW(str2,10);
    num1 = _ttoi(str1);
	num2 = _ttoi(str2);
	num3 = num1 + num2;
	CString str;
	str.Format(L"%d",num3);
	m_edit3.SetWindowTextW(str);
	*/
	/* 實現6 - 使用Windows消息傳遞 實現 當按下一個按鈕 把兩個Edit Control數字內容相加 放到兩外一個Edit Control 中	
	int num1,num2,num3;
	WCHAR    str1[10],str2[10],str3[10];

	//四種形式發送消息
	//::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)str1);//使用Dialog類指針獲取句柄
	//::SendMessage(m_edit1.m_hWnd,WM_GETTEXT,10,(LPARAM)str1);//通過關聯的控件CEdit 來獲取句柄
	//GetDlgItem(IDC_EDIT1)->SendDlgItemMessageW(WM_GETTEXT,10,(LPARAM)str1);//直接用Item 發送消息
	m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)str1);//直接使用關聯控件發送消息
	m_edit2.SendMessage(WM_GETTEXT,10,(LPARAM)str2);
	
    num1 = _ttoi(str1);
	num2 = _ttoi(str2);
	num3 = num1 + num2;

	wsprintfW(str3,L"%d",num3);
	m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)str3);//WPARAM無必須爲0;
	*/

   //實現7 - 使用Dialog Item消息傳遞 實現 當按下一個按鈕 把兩個Edit Control數字內容相加 放到兩外一個Edit Control 中	
	int num1,num2,num3;
	WCHAR    str1[10],str2[10],str3[10];

	SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)str1);//因爲是Dlg item,而本事就處於Dlg類中所以直接使用SendDlgItemMessage即可
	SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)str2);

    num1 = _ttoi(str1);
	num2 = _ttoi(str2);
	num3 = num1 + num2;

	wsprintfW(str3,L"%d",num3);
	SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,10,(LPARAM)str3);
	SendDlgItemMessage(IDC_EDIT3,EM_SETSEL,1,3);//複選款 從1 開始3結束 數字被選擇。
	//SendDlgItemMessage(IDC_EDIT3,EM_SETSEL,0,-1);//複選款 從0 開始-1結束 表示全部複選選擇。
	m_edit3.SetFocus();//把焦點回到EDIT3 才能看到複選。

}

注意:可以查看MSDN文件 瞭解相關類及成員

MSDN文件鏈接:

鏈接:https://pan.baidu.com/s/1UPpu61qQMQGk4kLjYl5WbQ 
提取碼:a620

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章