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