dialog ist nicht aktiv



  • Hallo,

    ich habe mir jetzt mal einen Dialog erstellt,
    aber wenn ich ein Objekt der klasse anlegen und den Dialog aufrufe,
    scheint es mir, das er den Dialog nicht aktiviert.
    Er erscheint zwar aber der Button den ich in dem Dialog erstellt habe, ist
    nicht anklickbar.

    ich weiss das ist bestimmt was einfaches, aber bitte helft mir, bin in Visual c++ neu.

    THX



  • Hallo,

    wenn der Dialog z.B. mit DoModal angezeigt wird, dann wird er auch aktiviert. Kann es sein, daß du den Button in den Eigenschaften des Dialogfelds im Resourcen-Editor deaktiviert hast?

    MfG



  • nein der ist nicht deaktiviert.
    Ich weiss einfach nicht, warum das Programm nach dem Dialog aufruf hängen bleibt und garnichts mehr macht.



  • bitte genauer beschreiben, wie der Aufruf aussieht, wo irgendwas hängen bleibt oder noch mehr Infos, was überhaupt passieren soll (der Dialog ist auch nicht deaktiviert, den kann man nämlich auch deaktivieren)

    MfG



  • Also ich glaube das Dialog ist auch nicht deaktiviert.
    Also ich habe eine normale Form und da einen Ok butten der beim click das
    Dialog öffnen soll.
    Das Dialog öffnet dich auch ist aber nicht anklickbar(button auf Dialog).
    Danach hängt das Programm.

    der Aufruf in der OnClick ist:

    dlgNeu.DoModal();
    dlgNeu.ShowWindow(IDD_FORMVIEW);

    Hoffe das ist besser beschrieben



  • Wozu
    dlgNeu.ShowWindow(IDD_FORMVIEW);

    das reicht doch aus
    dlgNeu.DoModal();



  • geht aber trotzdem nicht



  • also bei mir geht das immer:

    void CDlgDlg::OnBtnOK() 
    {
         CTestDlg tdlg;
    
         int nResponse = tdlg.DoModal();
    
         if (nResponse == IDOK)
         {
                 // irgendwas
         }
         else if (nResponse == IDCANCEL)
         {
                 // irgendwas
    
         }
    
    }
    

    daß das Programm bei DoModal "hängt", ist klar, da der mit DoModal gezeigte Dialog erst geschlossen werden muß, damit das Programm weiterläuft.

    wenn du nur irgendetwas anders machst, dann mußt du das zeigen, sonst wird eine Diagnose schwer.

    MfG



  • wo und wann soll ich den dialog schliessen?

    haste vielleicht ein beispiel?



  • in CTestDlg müßte doch auch ein Button sein (wahrscheinlich der Button, von dem du meinst, er ist inaktiv), und für den gibt es in der Klasse CTestDlg dann doch auch eine Klick-Methode, z.B. OnBtnInTestDlg:

    void CTestDlg::OnBtnInTestDlg()
    {
        // um den Dialog zu schließen bei Klick dieses Button, muß folgende Anweisung am Ende stehen (damit der Button sich wie ein Ok-Button verhält)
    
        CDialog::OnOk();
    }
    

    vielleicht war das das Problem?

    MfG



  • das habe ich auch schon versucht.
    der button lässt sich anklicken.
    ich glaube das fenster dialog ist nicht aktiv.
    ich kann das fenster noch nicht mal verschieben.



  • dann hast du irgendwas gebaut, was nicht vorgesehen ist, und es sind mehr Infos nötig: was ist das für eine Anwendung? Dialogfeld-basiert? MDI? SDI? In welcher Klasse wird der nicht-reagierende Dialog aufgerufen? Wie sieht die Klassen-Definition der Dialog-Klasse aus, welche ID wird dort in der enumeration (siehe Code unten) angezeigt? Ist das die ID, zu der es auch eine Dialogfeld-Resource gibt (wird angezeigt unter dem Knoten "Projektname Resaourcen"->"Dialog" im Arbeitsbereichsfenster in der Registerkarte "Ressourcen")?

    enum { IDD = IDD_DLG_DIALOG }; // ist das eine ID unter Dialog ?
    

    du hast vorhin IDD_FORMVIEW erwähnt, das klingt komisch für einen Dialog...wie sehen die Eigenschaften im Resourcen-Editor für diesen Dialog aus (ein "normaler" Dialog hat z.B. als Stil "Kontextmenü" in der Registerkarte "Allgemein")?

    MfG


Anmelden zum Antworten