ITPub博客

首页 > 大数据 > Hadoop > VS2010/MFC之按钮编程实例

VS2010/MFC之按钮编程实例

Hadoop 作者:李俞达 时间:2014-02-13 14:04:00 0 删除 编辑

使用MFC实现如下图的 网站选择并显示的功能

工具/原料

  • Win7 x64

  • Visual Studio 2010

编辑界面

  1. 1

    创建一个基于对话框的MFC工程,名称设为“Example23”。在自动生成的主对话框IDD_EXAMPLE23_DIALOG的模板中,删除“TODO: Place dialog controls here.”静态文本框,添加两个Group Box,属性Caption分别改为“网站类型”、“网站”。

  2. 2

    在Group Box“网站类型”中加入三个Radio Button,Caption分别设为“门户”、“论坛”和“博客”,ID分别设为IDC_PORTAL_RADIO、IDC_FORUM_RADIO和IDC_BLOG_RADIO。

    在Group Box“网站”中加入六个Check Box,Caption分别设为“科比”、“新浪”、“天涯论坛”、“韩寒博客”、“网易”和“凤凰网论坛”,ID分别设为IDC_CHECK1、IDC_CHECK2、IDC_CHECK3、IDC_CHECK4、IDC_CHECK5和IDC_CHECK6。

  3. 3

    为每个复选框添加CButton类型的变量m_check1、m_check2、m_check3、m_check4、m_check5和m_check6。

  4. 4

    在两个Group Box下面,添加一个静态文本框和一个编辑框。静态文本框的Caption设为“选择的网站:”。编辑框的ID设为IDC_WEBSITE_SEL_EDIT,属性Read Only改为True,使此编辑框为只读状态,不允许用户编辑。

    END

添加代码

  1. 1

    在“门户”按钮里面添加如下代码

    // 如果选择了“门户”单选按钮,则激活复选框“新浪”和“网易”,其他复选框禁用并非选中

    InitAllCheckBoxStatus();

    m_check2.EnableWindow(TRUE);

    m_check5.EnableWindow(TRUE);

  2. 2

    在“论坛”按钮里面添加如下代码

    // 如果选择了“论坛”单选按钮,则激活复选框“天涯论坛”和“凤凰网论坛”,其他复选框禁用并非选中

    InitAllCheckBoxStatus();

    m_check3.EnableWindow(TRUE);

    m_check6.EnableWindow(TRUE);

  3. 3

    在“博客”按钮里面添加如下代码

    // 如果选择了“博客”单选按钮,则激活复选框“鸡啄米”和“韩寒博客”,其他复选框禁用并非选中

    InitAllCheckBoxStatus();

    m_check1.EnableWindow(TRUE);

    m_check4.EnableWindow(TRUE);

  4. 4

    初始化所有复选框的状态,即全部禁用,全部非选中

    在cpp文件最后面添加下面的函数

    void CExample23Dlg::InitAllCheckBoxStatus()

    {

    // 全部禁用

    m_check1.EnableWindow(FALSE);

    m_check2.EnableWindow(FALSE);

    m_check3.EnableWindow(FALSE);

    m_check4.EnableWindow(FALSE);

    m_check5.EnableWindow(FALSE);

    m_check6.EnableWindow(FALSE);

    // 全部非选中

    m_check1.SetCheck(0);

    m_check2.SetCheck(0);

    m_check3.SetCheck(0);

    m_check4.SetCheck(0);

    m_check5.SetCheck(0);

    m_check6.SetCheck(0);

    }

  5. 5

    声明上面的函数,在h文件里面添加下面的变量

    public:

    void InitAllCheckBoxStatus();

    END

代码改进

  1. 1

    程序运行后,我们希望网站类型默认选择为“门户”,则修改对话框初始化函数如下

    CDialogEx::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.

    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);

    if (pSysMenu != NULL)

    {

    BOOL bNameValid;

    CString strAboutMenu;

    bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

    ASSERT(bNameValid);

    if (!strAboutMenu.IsEmpty())

    {

    pSysMenu->AppendMenu(MF_SEPARATOR);

    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

    }

    }

    // Set the icon for this dialog. The framework does this automatically

    // when the application's main window is not a dialog

    SetIcon(m_hIcon, TRUE); // Set big icon

    SetIcon(m_hIcon, FALSE); // Set small icon

    // TODO: Add extra initialization here

    // 默认选中“门户”单选按钮

    CheckDlgButton(IDC_PORTAL_RADIO, 1);

    OnBnClickedPortalRadio();

    return TRUE; // return TRUE unless you set the focus to a control

  2. 2

    点击“确定”后,将选择的网站名字显示到编辑框中,那么需要修改“确定”按钮

    CString strWebsiteSel; // 选择的网站

    // 若选中“鸡啄米”则将其加入结果字符串

    if (1 == m_check1.GetCheck())

    {

    strWebsiteSel += _T("鸡啄米 ");

    }

    // 若选中“新浪”则将其加入结果字符串

    if (1 == m_check2.GetCheck())

    {

    strWebsiteSel += _T("新浪 ");

    }

    // 若选中“天涯论坛”则将其加入结果字符串

    if (1 == m_check3.GetCheck())

    {

    strWebsiteSel += _T("天涯论坛 ");

    }

    // 若选中“韩寒博客”则将其加入结果字符串

    if (1 == m_check4.GetCheck())

    {

    strWebsiteSel += _T("韩寒博客 ");

    }

    // 若选中“网易”则将其加入结果字符串

    if (1 == m_check5.GetCheck())

    {

    strWebsiteSel += _T("网易 ");

    }

    // 若选中“凤凰网论坛”则将其加入结果字符串

    if (1 == m_check6.GetCheck())

    {

    strWebsiteSel += _T("凤凰网论坛 ");

    }

    // 将结果字符串显示于“选择的网站”后的编辑框中

    SetDlgItemText(IDC_WEBSITE_SEL_EDIT, strWebsiteSel);

    // 为了避免点“确定”后对话框退出,将OnOk注掉

    //CDialogEx::OnOK();

  3. 3

    最后运行

    END

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21532582/viewspace-1111806/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-05-01