下面我们看一个例子,对话框上的子窗口如图设置,各子窗口的ID和关联的变量如下表:

这时候ClassWizard会自动生成变量定义和相关代码,在对话框的构造函数中可以对变量的初始值进行设置,此外在BOOL CDialog::OnInitDialog()中会调用UpdateData(FALSE),即会将变量中的数据放入窗口中 。相关代码如下:
//头文件中的变量定义,ClassWizard自动产生
// Dialog Data
//{{AFX_DATA(CMy55_s1Dlg)
enum { IDD = IDD_MY55_S1_DIALOG };
CListBox m_lbTest;
int m_iSel;
CString m_szEdit;
CString m_szCombo;
BOOL m_fCheck;
//}}AFX_DATA
//构造函数中赋初值
CMy55_s1Dlg::CMy55_s1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CMy55_s1Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMy55_s1Dlg)
m_iSel = -1;
m_szEdit = _T("");
m_szCombo = _T("");
m_fCheck = FALSE;
//}}AFX_DATA_INIT
.....
}
//ClassWizard产生的关联和检查代码
void CMy55_s1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMy55_s1Dlg)
DDX_Control(pDX, IDC_LIST_TEST, m_lbTest);
DDX_Radio(pDX, IDC_RADIO_TEST_1, m_iSel);
DDX_Text(pDX, IDC_EDIT_TEST, m_szEdit);
DDV_MaxChars(pDX, m_szEdit, 5);
DDX_CBString(pDX, IDC_COMBO_TEST, m_szCombo);
DDX_Check(pDX, IDC_CHECK_TEST, m_fCheck);
//}}AFX_DATA_MAP
}
//在OnInitDialog中利用已经关联过的变量m_lbTest
BOOL CMy55_s1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
// TODO: Add extra initialization here
//设置列表框中数据
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 \ncheck is %d\nedit input is %s\ncomboBox input is %s\n",
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-35251-44.html
一是当时我们实力不够
没真正打过不知道自己有多少毛病