必须单击两次按钮才能触发c ++

时间:2016-11-03 10:32:53

标签: c++ mfc

我正在定义一个PrintBox对话框,在我的资源文件.rc中包含两个按钮PRINTER1和PRINTER2,如下所示:

IDD_PRINTBOX DIALOGEX 0,0,211,55
STYLE_DS_SETFONT | DS_MODALFRAME | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Choose Printer"
FONT 8, "MS Sans Serif",0,0,0x0
BEGIN
PUSHBUTTON "PRINTER1",IDC_PRINTER1,7,7,50,14
PUSHBUTTON "PRINTER2",IDC_PRINTER2,152,7,49,14
END

在按钮的类中,我有.h文件和.cpp文件 .h文件

#ifndef PRINTCHOOSEDLG_H
#define PRINTCHOOSEDLG_H
#include <string>
#pragma once



class CPrintChooseDlg : public CDialog
{


public:

CPrintChooseDlg(CWnd* pParent = NULL);
enum { IDD = IDD_PRINTBOX };


protected:
    virtual void DoDataExchange(CDataExchange* pDX);
    protected:
    afx_msg void OnPrinter1();
    afx_msg void OnPrinter2();

    DECLARE_MESSAGE_MAP()
};


 #endif

.cpp文件

#include "stdafx.h"
#include "Tungsten.h"
#include "PrintChooseDlg.h"


CPrintChooseDlg::CPrintChooseDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CPrintChooseDlg::IDD, pParent)
{

}


void CPrintChooseDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);

}


BEGIN_MESSAGE_MAP(CPrintChooseDlg, CDialog)
    ON_BN_CLICKED(IDC_PRINTER1,OnPrinter1)
    ON_BN_CLICKED(IDC_PRINTER2,OnPrinter2)
END_MESSAGE_MAP()



// PrintChoose message handlers

void CPrintChooseDlg::OnPrinter1()
{

    CDialog::OnOk();
}
void CPrintChooseDlg::OnPrinter2()
{

    CDialog::OnOk();
}

*问题是必须单击按钮两次才能触发事件。

*我尝试的是更改PUSHBUTTON的定义并在..h文件中以不同方式定义标题。我也将DIALOGEX更改为DIALOG,但存在同样的问题。如何只点击一次才能点击活动? 在此先感谢

1 个答案:

答案 0 :(得分:1)

仅使用DoModal()一次。

而不是使用 if ,您可以在 switch case

中执行此操作
switch(alg.DoModal())
{
    case IDC_PRINTER1: break;
    case IDC_PRINTER2: break;
    ...
}