Announcement

Collapse
No announcement yet.

Ungültiges Fensterhandle - EOSError

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ungültiges Fensterhandle - EOSError

    Hallo,

    ich habe über Datei->Neu->Weitere->C++Builder-Dateien eine Form
    "Dialogfeld mit Registerseiten" erstellt.
    In dieser Form habe ich die Eigenschaft 'Visible' auf false gesetzt (Rest auf default belassen).

    Somit kann ich z.B. über die Hauptform-Funtion:
    ---------------------------------------------------------------------------------------------
    void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
    {

    if (Key == 68 && Shift.Contains(ssCtrl) && Shift.Contains(ssAlt)) {
    PagesDlg->Show();
    PagesDlg->FormStyle=fsStayOnTop;
    }
    }
    ------------------------------------------------------------------------------------------------
    das Fenster anzeigen.
    Im WinMain wurde
    Application->CreateForm(__classid(TPagesDlg), &PagesDlg);
    eingetragen und ich kann problemlos auf Elemente von PagesDlg zugreifen.

    Beim Beenden meiner Anwendung erhalte ich der Fehler der Klasse
    EOSError ... 'Systemfehler. Code: 1400. Ungültiges Fensterhandle'...
    Jedoch nur dann, wenn die Form nie angezeigt wurde.

    Wird einmal die Form angezeigt( PagesDlg->Show(); oder PagesDlg-Eigenschaft 'Visible'=true) tritt der fehler nicht auf.
    Das verstehe ich nicht!
    Wo liegt das Problem?

  • #2
    Hallo Hawiwo,

    ich habe das mal hier ausprobiert. Es funktioniert einwandfrei ohne Fehlermeldungen. Das einzige was ich ander geamcht habe ist, daß ich die Finger von der Visible-Eiegnschaft gelassen habe.

    Wozu setzt Du die überhaupt. Das Fenster bleibt solange nicht sichtbar bis Du es mit

    PagesDlg->Show();

    aufrufst.

    Gruß

    Manfred

    Comment


    • #3
      Dreh mal folgende Zeilen

      PagesDlg->Show();
      PagesDlg->FormStyle=fsStayOnTop;
      Einen Fensterstyle zu ändern nachdem das Formular angezeigt wird ist immer Problematisch.

      Comment


      • #4
        Originally posted by MJordan View Post
        Hallo Hawiwo,

        ich habe das mal hier ausprobiert. Es funktioniert einwandfrei ohne Fehlermeldungen. Das einzige was ich ander geamcht habe ist, daß ich die Finger von der Visible-Eiegnschaft gelassen habe.

        Wozu setzt Du die überhaupt. Das Fenster bleibt solange nicht sichtbar bis Du es mit

        PagesDlg->Show();

        aufrufst.

        Gruß

        Manfred
        mit Visible=true lümmelt das PagesDlg-Fenster hinter dem HauptFenster (Form1) herum. Hauptfenster wegschieben => PagesDlg sichtbar. Die Funktion Show holt es in meinem Fall lediglich in der Fordergrund, wofür sie ja nicht gedacht ist.

        Comment


        • #5
          Okay,

          visible=false ist ja auch die Standard Einstellung, also ist bei mir auch. Ich habe nur so einen Dialog eingefügt, die header Datei eingebunden und dann ein Show() gemacht. das funktioniert perfekt.

          Du holst Dir doch da nicht etwa ein Fenster-Handle, oder so? Also einfach nur den header in das Hauptformular includieren und schon kannste das von dort mit [Name]->Show() aufrufen.

          Comment

          Working...
          X