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