我在ActiveX控件中,调用了一个对话框
第一次用DoModal()调用,结果弹出的对话框,无法进行拖拉操作,如果进行此操作,貌似死机啊,并且在点击了OnOK()或者OnCancel(),销毁时会报错,在以下位置
int CDialog::DoModal()
{
....
// destroy modal window
->DestroyWindow();
  PostModal();
....
}
BOOL CWnd::DestroyWindow()
{
....
#ifdef _DEBUG
->ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);
#endif
....
}然后,我改用第二种方法,用Create(ID, this)创建,在点击OnOK()或OnCancel()时不报错了,可是同样有不能进行拖拉操作。
看上去好象是如果焦点一旦从对话框转移走,就无法在由对话框得到。
这个问题出在哪儿?请高手指点~~

解决方案 »

  1.   

    很普通的代码段啊,没有针对ActiveX做特殊处理的
    CDlgSetLinkParam dlg;
    dlg.m_nType = m_nLinkType ;
    dlg.m_nID   = m_dwLinkID;
    if(dlg.DoModal() == IDOK)
    {
         m_nLinkType = dlg.m_nType;
         m_dwLinkID  = (DWORD)dlg.m_nID;
    }或者CDlgSetLinkParam* pdlg = new CDlgSetLinkParam();
    pdlg->Create(IDD_SET_PARAM);
    RECT rect;
    rect.top    = 105;
    rect.left   = 220;
    rect.right  = 780;
    rect.bottom = 533;
    pdlg->MoveWindow(&rect);
    pdlg->ShowWindow(TRUE);
    }
      

  2.   

    好了,找到原因了,是一个hook出了问题,谢谢兄弟们支持