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