CFormView in CDialog plazieren



  • Hallo,

    ich habe eine Klasse A geschrieben die von CFormView abgelitten ist. Diese Klasse verwende ich in als Member in CView. Jetzt möchte ich die Klasse A zusätlich in einem Dialog verwenden was mir zum Teil gelingt.
    Problem ist jedoch wen ich an belibige Stelle des Rects was die Klasse A ausfüllt ein Mausbutton drücke erscheint eine ASSERT Fehlermeldung:

    int CView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
    {
    int nResult = CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
    if (nResult == MA_NOACTIVATE || nResult == MA_NOACTIVATEANDEAT)
    return nResult; // frame does not want to activate

    CFrameWnd* pParentFrame = GetParentFrame();
    if (pParentFrame != NULL)
    {
    // eat it if this will cause activation
    ASSERT(pParentFrame == pDesktopWnd || pDesktopWnd->IsChild(pParentFrame));

    Mit der kann ich jedoch nicht viel anfangen.
    Kann mir jemand sagen wie ich das Problem lösen kann?

    Hier nochmal paar infos:

    Im OnInitialDialog

    ....
    CCreateContext context;
    context.m_pCurrentDoc = pDoc;

    CRuntimeClass *p;

    p = RUNTIME_CLASS(CMyFormView);
    m_pMyFormView = (CMyFormView*)p->CreateObject();
    ASSERT(m_pMyFormView->IsKindOf( RUNTIME_CLASS(CMyFormView) ) );

    m_pMyFormView->Create(NULL, _T(""), WS_CHILD, CRect(0, 0, 100,100), this, IDD_MY_VIEW, false, &context);

    m_pMyFormView->OnInitialUpdate();
    m_pMyFormView->ShowWindow(SW_SHOW);

    ...


  • Mod

    Views können nicht in einem Dialog leben.

    Ein View benötigt immer ein CFrameWnd als Parent!



  • Was habe ich dann für allternative wenn ich CMyClass einmal halten möchte und in View und Dialog darstellen will?


  • Mod

    Im CFormView den Dialog z.B. als WS_CHILD Dialog anlegen...

    Ich frage mich nur warum ich in einer Anwendung gleiche Daten sowohl in enem CFormView als auch in enem CDialog haben will. Leuchtet mir in keiner Weise ein.


Anmelden zum Antworten