[英]MFC Send message to a button (child to parent)
我想从子窗口(CDialog)向父窗口(CFormview)发送消息。 如果在子窗口上按“取消”按钮,则对话框应退出,并且程序应继续使用父窗口上的“停止”按钮的代码。
void ChildDialog::OnBnClickedCancel()
{
CDTParentView *pButtonWnd = (CDTParentView *)AfxGetMainWnd();
pButtonWnd->OnBnClickedbuttonStop();
CDialogEx::OnCancel();
}
但是此objore.cpp中存在错误:
BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
{
ENSURE(this != NULL);
// it better be in valid memory, at least for CObject size
ASSERT(AfxIsValidAddress(this, sizeof(CObject)));
// simple SI case
CRuntimeClass* pClassThis = GetRuntimeClass(); <------- error
ENSURE(pClassThis);
return pClassThis->IsDerivedFrom(pClass);
}
谁能告诉我,怎么了? 也许发布更好的主意来发送按钮单击的消息?
您的代码实际上并不是在发送消息,而是在尝试直接调用处理程序。 以与Windows相同的方式模拟按钮的单击很容易,然后您现有的代码将自然地处理它。
CWnd * pMain = AfxGetMainWnd();
CWnd * pButton = pMain->GetDlgItem(ID_STOP_BUTTON);
pMain->PostMessage(WM_COMMAND, MAKEWPARAM(ID_STOP_BUTTON, BN_CLICKED), (LPARAM)pButton->m_hWnd);
AfxGetMainWnd不返回指向CFormView的指针,而是返回指向CMainFrame的指针。 如果对话框是模式对话框,则只需检查显示对话框的DoModal调用的返回值即可。 或者您可以通过调用GetParent获得指向CFormView的指针来获得更好的运气。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.