我有一个 CView 类和一个对话框,一旦用户单击其“接受”按钮,我想从对话框对象中获取一些数据,因此我在 CView 类中为按钮及其处理程序添加了一个事件,所有这些都是通过 Visual Studio 2010 菜单完成的,所以我没有搞砸代码。
CView 类:
BEGIN_MESSAGE_MAP(CSurface3DView, CView)
ON_BN_CLICKED(ID_RANGE_OK, &CSurface3DView::OnBnClickedRangeOk)
END_MESSAGE_MAP()
...
void CSurface3DView::OnBnClickedRangeOk()
{
//things i need to do
}
问题是,当我单击 OK 按钮时,它不会调用 OnBnClickedRangeOk() 函数。
我也可以从 Dialog 类中调用 CView 类中的函数,但我不能为父类使用实例,因为我需要包含它的标头,这会导致循环包含,这可以通过声明 CView 类来解决在 Dialog 标头中不包含它,但是无法访问其方法。
也许不可能将对话框按钮的消息句柄放在对话框类之外?仅当按下对话框按钮时,如何在 CView 类中运行某个函数?
编辑:
好了,现在解决了,我使用 CDialog 的 SendMessage(hWnd, MESSAGE ,...) 方法向父级发送消息,我在 CDialog 的构造函数中得到指针,所以我不必声明特定的类父母和我没有遇到包容问题。
我在这里找到的具体细节:http ://forums.codeguru.com/showthread.php?385590-How-to-SendMessage-from-child-window-to-parent