【发布时间】:2011-08-16 16:54:27
【问题描述】:
我在我的 MFC 应用程序中动态创建了一些 ActiveX 控件。我想处理他们的事件,比如click、dblclick。但我不知道我应该捕获什么样的消息将代码放在哪里才能捕获它们。 如果我在设计 GUI 时将这些控件放在对话框窗口上,则可以添加事件处理程序。 MFC自动添加的代码如下:
BEGIN_EVENTSINK_MAP(CButtonMsgDlg, CDialog)
ON_EVENT(CButtonMsgDlg, IDC_CWBOOLEAN1, DISPID_DBLCLICK, CButtonMsgDlg::DblClickCwboolean1, VTS_NONE)
END_EVENTSINK_MAP()
void CButtonMsgDlg::DblClickCwboolean1()
{
// TODO: Add your message handler code here
}
【问题讨论】:
-
// TODO: Add your message handler code here对我来说似乎是一个很好的指示。您可以对动态创建的控件执行相同的操作,只需手动添加 ON_EVENT/ON_COMMAND/etc 以及您将在控件创建中使用的 id。如果需要,您还可以使用一系列 id。 -
有数百个控件需要动态创建。这些控件的 ID 是在运行时分配的。所以在编译之前手动添加它们似乎是不可能的。有没有其他方法可以解决这个问题?