我正在定义一个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,但存在同样的问题。如何只点击一次才能点击活动? 在此先感谢
答案 0 :(得分:1)
仅使用DoModal()一次。
而不是使用 if
,您可以在 switch case
switch(alg.DoModal())
{
case IDC_PRINTER1: break;
case IDC_PRINTER2: break;
...
}