gpt4 book ai didi

c++ - 如何使 MFC 中的按钮根据单击前一个按钮执行不同的操作?

转载 作者:行者123 更新时间:2023-11-30 04:01:20 26 4
gpt4 key购买 nike

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

程序启动时所有按钮只有 2 个变灰。我想要做的是将灰色按钮链接到不同的功能,具体取决于我单击的两个非灰色按钮中的哪一个。现在,按钮通过两步过程链接到功能。我很确定我想单独留下第一步并修改第二步,但是这两个步骤都是为了防止我错了。

第一步:

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,那么 Version 将转到 OnVersion2 等等)。似乎如果我可以只为 OnConnect1 和 OnConnect2 函数内的其他按钮声明 ON_BN_CLICKED 就好了,但我不太确定该怎么做。我也可能把注意力集中在完全错误的地方,所以非常感谢任何帮助。

编辑:忘了说我知道我可以将一个变量设置为 0 或 1 或其他任何值,并让每个函数由 if 语句拆分。但我想知道我是否可以没有它,似乎完全拥有两个独立的功能会更干净。我已经在用变量设置它,但如果可能的话我想改变它。

最佳答案

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

关于c++ - 如何使 MFC 中的按钮根据单击前一个按钮执行不同的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25827020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com