MFC 向按钮发送消息(子级到父级)

MFC*_*ter 1 c++ mfc parent button sendmessage

我想从子窗口(CDialog)向父窗口(CFormview)发送消息。如果我按下子窗口上的取消按钮,对话框应该退出,程序应该继续执行父窗口上的停止按钮的代码。

void ChildDialog::OnBnClickedCancel()
{
    CDTParentView *pButtonWnd = (CDTParentView *)AfxGetMainWnd();
    pButtonWnd->OnBnClickedbuttonStop();
    CDialogEx::OnCancel();
}
Run Code Online (Sandbox Code Playgroud)

但是这个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);
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我,有什么问题吗?也许发布一个更好的想法来发送按钮单击的消息?

Mar*_*som 5

您的代码实际上并没有发送消息,而是尝试直接调用处理程序。很容易以与 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);
Run Code Online (Sandbox Code Playgroud)