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就行了