CFiledialog -> Klickereignis abfangen



  • Hallo.

    Kann man irgenwie abfangen, wenn der Nutzer im Dialogfenster von CFileDialog auf die Eingabemöglichkeit vom Dateinamen klickt?

    Wäre super, wenn jemand das wüßte.

    Oli



  • kannst du das ein bisschen genauer erklären?



  • Ok.

    Wenn der Benutzer versucht einen Dateinamen in dieses Feld einzutragen, soll sich ein extra Dialogfenster mit Tasten auftuen. Das Programm soll später auf einem Rechner laufen der keine Tastatur hat. Deshalb muß ich auf dem Bildschirm eine Tastatur simulieren. Die Tastatur soll nur eingelendet werden, wenn auf ein Eingabefeld geklickt wird.

    Hoffe es war jetzt verständlicher.

    Oli



  • eigenen dialog von dieser klasse ableiten....usw....



  • Hallo.
    Das habe ich schon getan.
    Wie kann ich aber auf ein Klickereignis reagieren?
    Ich kann ja nicht im Ressourceneditor einfach ein Klickereignis auf dieses Steuerelement erstellen. habe ja noch nicht mal die IDC

    Oli



  • Die Resource ist glaubich in den Sourcen zu finden, da kannst du die rauskopieren oder auch nur den Namen angucken.
    Ansonsten gibt es ja noch Spy++. 😃



  • Danke.

    Werde mal nachsehen.

    Oli



  • Irgendwie bekomme ich keine Nachricht für ein Klick.

    Habe es bis jetzt so definiert:

    Header Datei

    #define FileDialog 1536
    
    {{AFX_DATA (CFileTest)
    enum = {IDD_FileDialog}
    {{AFX_DATA
    
    {{AFX_MSG (CFileTest)
    afx_msg void OnLButtonDown(UINT Flags, CPoint point);
    {{AFX_MSG
    

    CPP-Datei

    void CFileTest::OnLButtonDown(UINT Flags, CPoint point)
    {
     MessageBox(_T("Test"),_T("Klick"));
    }
    

    Das klappt aber nicht.

    Oli



  • Wie sieht der MessageMap Eintrag aus?

    Ich habe außerdem das Klick-Ereignis nicht in der Klassenassistentliste gefunden - jedenfalls nicht für ein Edit.

    Nimm lieber WM_SETFOCUS.



  • Es sieht wie folgt aus:

    Header:

    #define ID_CFILEDIALOG_EDIT_DATEI   1152
    
    //{{AFX_MSG(CFileTest)
    	afx_msg void OnSetfocusEditName();
    //}}AFX_MSG
    

    CPP

    BEGIN_MESSAGE_MAP(CFileSele, CFileDialog)
    
    //{{AFX_MSG_MAP(CFileTest)
    	ON_EN_SETFOCUS(ID_CFILEDIALOG_EDIT_DATEI, OnSetfocusEditName)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    void CFileTest::OnSetfocusEditName() 
    {
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	MessageBox(_T("Klick"),_T("Test"));
    }
    

    Kann glaube nur an der ID definition liegen,oder?

    Wüßtest Du da eine andere Zahl?

    Oli



  • Hmm, also wenn ich in die commdlg.dll gucke, finde ich den Wert auch.
    (Zur Not klau dir die Resource da raus - vielleicht geht es dann ja.)

    Mit Spy++ habe ich aber diese beiden Hex-Werte ermittelt:
    die Combobox: 009407A2
    das Edit: 00190732

    Allerdings war das das Fenster von Windows2000.


Log in to reply