MFC——基本控件数据绑定,新建对话框

来源:互联网 发布:万网购买域名 aws解析 编辑:程序博客网 时间:2024/05/21 17:22

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

0 0
原创粉丝点击