MFC——基本控件數據綁定,新建對話框

1、新建對話框,創建類

      在資源視圖中創建一個對話框以後,右鍵選擇“類嚮導”,界面如圖所示,點擊添加類,設置類名並繼承CDialogEx類,完成。



2、ListBox

       在資源視圖中拖入listbox控件,在控件上右鍵選擇 “添加變量” ,爲其綁定一個變量,在添加變量之後,在該對話框類的頭文件中會多出一行,變量成功與控件關聯了

CListBox m_ListBox;
     爲listbox動態添加選項,在DoDataExchange函數中添加以下代碼:

DDX_Control(pDX, IDC_LIST1, m_ListBox);
	m_ListBox.AddString(L"方正");
	m_ListBox.AddString(L"方正2");
	m_ListBox.AddString(L"方正3");
	m_ListBox.AddString(L"方正4");
       之後爲listbox添加LBN_SELCHANGE事件,表示用戶點擊listbox切換了選項以後觸發,獲取listbox的數值

void Ctask4Dlg::OnLbnSelchangeList1()
{
	int i = m_ListBox.GetCurSel();
	if (i >= 0)
	{
		 CString text;
		 m_ListBox.GetText(i, text); // 寫錯了,不要&
		 //MessageBox(text);
		 SetDlgItemText(IDC_EDIT1,text);   //IDC_EDIT1是texteditor的標識id
	}
	else
	{
		 //AfxMessageBox("未選中。");
	}
}
         SetDlgItemText(IDC_EDIT1,text);  可以方便的向控件中寫入數據。


3、TextEditor

      可通過 SetDlgItemText(IDC_EDIT1,text); 來賦值,可以通過GetDlgItemText(IDC_EDIT1,text);來獲取數據,另外,換行符號位:“\r\n”


4、 Radio Button

      Radio Button一般是分組來用,需要分組比較容易,先弄一個Group控件,包起來,然後點擊第一個Radio Button,查看屬性中一個Group選項,設置爲true,如果需要分第二組,則將第二組的第一個Radio Button的Group選項設置爲true,這樣,中間的Radio Button控件自動會歸到組中的。下面是遍歷Radio Button獲取數值的程序:

UINT item2[] = {IDC_RADIO4,IDC_RADIO5,IDC_RADIO6};
	for(int i=0;i<3;i++){
		CString temp;
		CButton *pbtn2 = (CButton*)GetDlgItem(item2[i]);
		if(!pbtn2) continue;
		if(pbtn2->GetCheck()==1){
			GetDlgItemText(item2[i],temp);
			temp+="\r\n";
		}
		result += temp;  //這裏是串起來準備放到texteditor中
	}

5、在進入主界面前顯示登陸窗口

       首先創建對話款,新建類比如Login類,然後在項目實現類(一般是CxxxAPP類)的InitInstance方法中加入創建對話框的語句:

//加入一個登陸框
	Login m_loginDlg;
	if(m_loginDlg.DoModal() != IDOK)
	{
		return false;
	}
      在該對話框的資源視圖上,雙擊登陸按鈕,自動生成函數,就在該函數中編寫登陸的程序,若登陸不成功,窗口將不會跳轉

void Login::OnBnClickedOk()
{
	// TODO: 在此添加控件通知處理程序代碼
	//CDialogEx::OnOK();
	CString name;
	CString pwd;
	GetDlgItem(IDC_EDIT1)->GetWindowTextW(name);
	GetDlgItem(IDC_EDIT2)->GetWindowTextW(pwd);
	if(name.Compare(_T("admin")))
	{
		MessageBox(_T("用戶名錯誤,請重新輸入"),_T("提示"));
	}
	else if(pwd.Compare(_T("admin"))){
		MessageBox(_T("密碼錯誤,請重新輸入"),_T("提示"));
	}
	else
	{
		OnOK();
	}
}

6、單文檔實例窗口相關

      (1)對菜單增加事件處理:選中菜單項右鍵,選擇“ 增加事件處理程序”,如下圖所示,消息類型默認?? 類列表選擇當前窗口所對應的類,如CMainFrame

這裏我在函數中的具體實現是,打開另外一個對話框窗口,代碼如下,當然,Calculate這個類以及他對應的窗口必須已經建立好了

//顯示計算窗口
void CMainFrame::On32772()
{
	// TODO: 在此添加命令處理程序代碼
	Calculate calculate;
	if(calculate.DoModal() != IDOK)
	{
		return ;
	}
}

      (2)快捷鍵:可以在資源視圖中的“accelerator”中創建,對應好id就行了

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