MFC:运行时扩展

问题描述 投票:0回答:1

我工作中有一个使用 MFC 的 GUI 项目。

小部件(控件)在编译时消息映射表中进行消息处理。

我想在运行时有条件地向表单添加控件,但我一直不知道如何在运行时将消息处理程序附加到消息映射。

如何在运行时向 MFC 消息映射添加消息处理程序?

我应该使用其他流程吗?

有关消息映射的信息,请参阅 MFC 消息映射文档

环境:
Windows 7 或 Windows 10(该应用程序适用于两种操作系统)
Visual Studio 2017

c++ visual-studio mfc visual-studio-2017 message-map
1个回答
2
投票

如果您知道为添加的控件提供的“ID”值的范围(您应该这样做),那么您可以在消息映射中使用

ON_CONTROL_RANGE
条目,而不是
ON_CONTROL
(通常是用于特定的单一控件)。例如,对于单击某个控件(其 ID 范围为
IDC_FIRST
IDC_LAST
)的按钮,您可以添加以下消息映射条目:

    ON_CONTROL_RANGE(BN_CLICKED, IDC_FIRST, IDC_LAST, OnButtonClick)

消息处理程序

OnButtonClick
的格式与单个控件的格式非常相似,但具有
UINT
参数,该参数是发送消息的控件的 ID:

void MyDialog::OnButtonClick(UINT nID)
{
    int button_number = static_cast<int>(nID - IDC_FIRST);
    // .. do something
    return;
}

请随时要求进一步澄清和/或解释。

© www.soinside.com 2019 - 2024. All rights reserved.