龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

Visual C++/MFC入门教程(五)(7)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
//在OnInitDialog中利用已经关联过的变量m_lbTest BOOL CMy55_s1Dlg::OnInitDialog() { CDialog::OnInitDialog(); ... // TODO: Add extra initialization here file://设置列表框中数据 m_lbTes
//在OnInitDialog中利用已经关联过的变量m_lbTest
BOOL CMy55_s1Dlg::OnInitDialog()
{
 CDialog::OnInitDialog();
...
 // TODO: Add extra initialization here
 file://设置列表框中数据
 m_lbTest.AddString("String 1");
 m_lbTest.AddString("String 2");
 m_lbTest.AddString("String 3");
 m_lbTest.AddString("String 4");
 return TRUE;  // return TRUE  unless you set the focus to a control
}
//对两个按钮消息处理
//通过UpdateData(TRUE)得到窗口中数据
void CMy55_s1Dlg::OnGet()
{
 if(UpdateData(TRUE))
 {
  //数据合法性检查通过,可以使用变量中存放的数据
  CString szOut;
  szOut.Format("radio =%d check is %d edit input is %s comboBox input is %s ",      m_iSel,m_fCheck,m_szEdit,m_szCombo);  AfxMessageBox(szOut);
 }
  //else 未通过检查
}
//通过UpdateData(FALSE)将数据放入窗口
void CMy55_s1Dlg::OnPut()
{
 m_szEdit="onPut test";
 m_szCombo="onPut test";
 UpdateData(FALSE);
}
在上面的例子中我们看到利用DDX/DDV和UpdateData(BOOL)调用我们可以很方便的存取数据,而且也可以同时进行合法性检查。

5.6 使用属性对话框

属性对话框不同于普通对话框的是它能同时提供多个选项页,而每页都可以由资源编辑器以编辑对话框的方式进行编辑,这样给界面开发带来了方便。同时使用上也遵守普通对话框的规则,所以学习起来很方便。属性对话框由两部分构成:多个属性页(CPropertyPage)和属性对话框(CPropertySheet)。

首先需要编辑属性页,在资源编辑器中选择插入,并且选择属性对话框后就可以插入一个属性页,如图,或者选择插入一个对话框,然后将其属性中的Style设置为Child,Border设置为Thin也可以,如图。然后根据这个对话框资源生成一个新类,在选择基类时选择CPropertyPage,ClassWizard会自动生成相关的代码。

而对于CPropertySheet也需要生成新类,并且将所有需要加入的属性页对象都作为成员变量。属性对话框也分为有模式和无模式两种,有模式属性对话框使用DoModal()创建,无模式属性对话框使用Create()创建。下面的代码演示了如何创建属性对话框并添加属性页:

//修改CPropertySheet派生类的构造函数为如下形式
CSheet::CSheet()
 :CPropertySheet("test sheet", NULL, 0)
{
 m_page1.Construct(IDD_PAGE_1);
 m_page2.Construct(IDD_PAGE_2);
 AddPage(&m_page1);
 AddPage(&m_page2);
}

精彩图集

赞助商链接