如何在MFC中创建一个按钮,根据点击前一个按钮做一些不同的事情?

时间:2014-09-13 19:46:22

标签: c++ visual-studio-2012 button user-interface mfc

所以我在Visual Studio 2012中有一个带有MFC GUI的C ++程序。我没有构建此代码的基础,我正在修改包含GUI的预先存在的代码。

程序以所有按钮开始,但灰色显示为2。我想要做的是将灰色按钮链接到不同的功能,具体取决于我点击的两个非灰色按钮中的哪一个。现在,按钮通过两个步骤链接到功能。我很确定我想单独离开第一步并修改第二步,但这是以防我错了。

第1步:

void CTCPClientDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Control(pDX, IDC_VERSION, m_Version);
    DDX_Control(pDX, IDC_OPTIMIZE, m_Optimize);
    DDX_Control(pDX, IDC_NORMALIZED_SPECTRUM, m_Normalize);
    DDX_Control(pDX, IDC_AQUIRE, m_Acquire);
    DDX_Control(pDX, IDC_DISCONNECT, m_Disconnect);
    DDX_Control(pDX, IDC_ASD_CONNECT, m_Connect1);
    DDX_Control(pDX, IDC_OCEAN_CONNECT, m_Connect2);
}

第2步:

BEGIN_MESSAGE_MAP(CTCPClientDlg, CDialog)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_VERSION, OnVersion)
    ON_BN_CLICKED(IDC_OPTIMIZE, OnOptimize)
    ON_BN_CLICKED(IDC_NORMALIZED_SPECTRUM, OnNormalize)
    ON_BN_CLICKED(IDC_AQUIRE, OnAcquire)
    ON_BN_CLICKED(IDC_DISCONNECT, OnDisconnect)
    ON_BN_CLICKED(IDC_CONNECT_1, OnConnect1)
    ON_BN_CLICKED(IDC_CONNECT_2, OnConnect2)
END_MESSAGE_MAP()

这些是在代码开头附近的另一个。 Connect1和Connect2是两个开始可点击的按钮,然后我希望其他按钮在我点击后链接到不同的功能(所以如果我点击Connect2然后版本将转到OnVersion2等)。好像我可以为OnConnect1和OnConnect2函数中的其他按钮声明ON_BN_CLICKED,我会很好,但我不确定如何做到这一点。我也可能专注于完全错误的地方,所以任何帮助都会非常感激。

编辑:忘记提及我知道我可以只有一个变量设置为0或1或者其他什么,并且每个函数都被if语句拆分。但我想知道如果没有它,我觉得完全拥有两个独立的功能似乎更清晰。我已经在使用变量进行设置,但是如果可能的话我想改变它。

1 个答案:

答案 0 :(得分:2)

ON_BN_CLICKED是在编译时定义的表的一部分,列出了按钮ID和函数。这不能在运行时更改。只需在OnConnect1消息处理程序中使用布尔变量在代码中执行此操作。