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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值