文档介绍:实例2 制作问卷调查
:
问卷调查是日常生活中经常遇到的调查方式。本实例针对“上网”提出了3个问题,每个问题都有4个选项,第1、2个都是单选,第3个是多选。
本例用到了组框、静态文本、单选按钮、复选框等控件。需要通过CheckRadioButton函数来设置同组单选按钮的通过GetDlgItemText 或GetWindowText获取选中控件的窗口文本。
对话框设计:
:
(1)在原有的Password对话框实例的基础上新增一个对话框资源(ID为IDD_DIALOG_RESERACH,caption改为:上网文卷调查),然后按上图设计。并设置各个控件的属性。
(2)创建该调查文卷对话框类CRearchDlg。
(3)完善代码。
①用MFC ClassWizard 在CRearchDlg类中添加IDOK(确定)按钮的BN_CLICKED消息映射,并添加下列代码,使得按“确定”按钮获取用户所做的选择内容。
void CRearchDlg::OnOK()
{
// TODO: Add extra validation here
CString str, strCtrl; // 定义两个字符串变量,CString是操作字符串的MFC类
// 获取第一个问题的用户选择
str = "你的年龄:";
UINT nID = GetCheckedRadioButton( IDC_RADIO1, IDC_RADIO4);
GetDlgItemText(nID, strCtrl); // 获取指定控件的标题文本
str = str + strCtrl;
// 获取第二个问题的用户选择
str = str + "\n你使用的接入方式:";
nID = GetCheckedRadioButton( IDC_RADIO5, IDC_RADIO7);
GetDlgItemText(nID, strCtrl); // 获取指定控件的标题文本
str = str + strCtrl;
// 获取第三个问题的用户选择
str = str + "\n你上网主要是:\n";
UINT nCheckIDs[4] = {IDC_CHECK1, IDC_CHECK2, IDC_CHECK3, IDC_CHECK4};
CButton* pBtn;
for (int i=0; i<4; i++)
{
pBtn = (CButton*)GetDlgItem(nCheckIDs[i]);
if ( pBtn->GetCheck() )
{
pBtn->GetWindowText( strCtrl );
str = str + strCtrl;
str = str + " ";
}
}
MessageBox( str );
CDialog::OnOK();
}
②实现初始化功能,即在程序运行后,会自动选择初始值,如:你的年龄默认为“18_27”,你使用的接入方式为“ADSL”,你上网主要是“收发邮件”。
BOOL CRearchDlg::OnInitDialog()
{
CDialog::OnInitDialog();