Frame erstellen



  • Was muss ich machen, wenn ich ein Frame in einer SDI/MDI-Anwendung erstellen möchte?
    Ich möchte nur ein dummes kleines Fenster haben...
    Dieser Code führt zu einer AccessViolation, warum?

    CMDIFrameWnd* pFrameWnd = new CMDIFrameWnd;
    pFrameWnd->Create(
    NULL, // standard CMDIChildWnd class
    _T("My MDIChildWnd"), // caption of MDI child window
    WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, // window styles
    rectDefault, // default rectangle size
    this);
    // pFrameWnd->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    // pFrameWnd->ShowWindow(TRUE);



  • Original erstellt von Tobias123:
    Was muss ich machen, wenn ich ein Frame in einer SDI/MDI-Anwendung erstellen möchte?

    Den MFC AppWizard verwenden.

    Ich möchte nur ein dummes kleines Fenster haben...

    Sind Fenster dumm ? 😉

    Dieser Code führt zu einer AccessViolation, warum?

    CMDIFrameWnd* pFrameWnd = new CMDIFrameWnd;
    pFrameWnd->Create(
          NULL,                                        // standard CMDIChildWnd class
          _T("My MDIChildWnd"),                        // caption of MDI child window
          WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW, // window styles
          rectDefault,                                 // default rectangle size
          this);
    //  pFrameWnd->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    //  pFrameWnd->ShowWindow(TRUE);
    

    In der SDI Anwendung solltest du CFrameWnd statt CMDIFrameWnd verwenden, dann klapt es auch mit dem Nachbarn. Und in der MDI Anwendung gibt es erst ein ASSERT, und wenn man dort mal liest...

    Zitat MFC:

    // This is attempting to guess which sub-menu is the Window menu.
    // The Windows user interface guidelines say that the right-most
    // menu on the menu bar should be Help and Window should be one
    // to the left of that.
    int iMenu = pMenu->GetMenuItemCount() - 2;
    
    // If this assertion fails, your menu bar does not follow the guidelines
    // so you will have to override this function and call CreateClient
    // appropriately or use the MFC V2 MDI functionality.
    

    ich hoffe ich konnte ein wenig helfen.

    MFG
    Kai



  • Danke...


Anmelden zum Antworten