re zu meiner frage wegen den Nachrichten



  • würde das dann so aussehen?

    BEGIN_MESSAGE_MAP
    ON_MESSAGE(WM_MYMSG, OnMyMsgFunction)
    END_MESSAGE_MAP()
    

    klappt nicht bekomme 40 syntax fehler mmhmm ich schreibe mal was alles gemacht habe.

    MyDlg.h   (Codeauszug!)
    public:
      #define WM_TEST WM_USER+5
    protected:
    	// Generated message map functions
    	//{{AFX_MSG(CTCOPYDlg)
    	afx_msg LRESULT OnTest(WPARAM wParam,LPARAM lParam);
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    
    MyDlg.cpp
    BEGIN_MESSAGE_MAP
        ON_MESSAGE(WM_TEST, OnTest)
    END_MESSAGE_MAP()
    
    LRESULT OnTest(WPARAM wParam, lParam)  // methode zur bahndlung der MSG
    {
       // do something
       return 0L;
    }
    

    so rufe ich die MSG auf

    zum test in der OnInitDlg()
    PostMessage(WM_TEST, IDCANCEL); // das IDCANCEL hab ich aus nem buch habe 
                                    // ich  als test mit bernommen
    

    der debugger meldet nen syntax fehler bei PostMessage....



  • Hi

    in mydlg.h ganz am Anfang (unter den #includes aber vor class) definierst du die Konstante für die Nachricht:

    #define WM_TEST WM_USER+5
    

    Die PostMessage Methoder der CWnd Klasse ist folgendermaßen deklariert:

    BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
    

    Nun kannst du also zum Test folgendes schreiben (in mydlg.cpp)

    PostMessage(WM_TEST);
    // gleich wie
    PostMessage(WM_USER+5);
    

    Das dürfte eigendlich keine Compilerfehler verursachen.
    Wenn doch, poste doch mal welche.

    Grüße Rapha



  • TCOPYDlg.obj : error LNK2001: unresolved external symbol "protected: long __thiscall CTCOPYDlg::OnTest(unsigned int,long)" (?OnTest@CTCOPYDlg@@IAEJIJ@Z)

    mmm keine ahnung :-\



  • wenn
    ON_MESSAGE(WM_TEST, OnTest)
    dann
    LRESULT DEINEKLASSE::OnTest(WPARAM wParam, lParam) // methode zur bahndlung der MSG
    {
    // do something
    return 0L;
    }

    abgesehn davon benutzt ich für sowas glaub oncommand anstatt on_message aber bin mir grad ned 100pro sicher



  • MyDlg.h

    // nach den includes vor der Class aber
    #define WM_TEST WMUSER+5
    
    // innerhalb meiner dlg class
    protected:
    	// Generated message map functions
    	//{{AFX_MSG(CTCOPYDlg)
                .....
    	//}}AFX_MSG
    	afx_msg LRESULT OnTest(WPARAM wParam, LPARAM lParam);
    	DECLARE_MESSAGE_MAP()
    

    MyDlg.cpp

    BEGIN_MESSAGE_MAP(CTCOPYDlg, CDialog)
    	ON_MESSAGE(WM_TEST, OnTest)
    	//{{AFX_MSG_MAP(CTCOPYDlg)
                  ....
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    
    LRESULT OnTest(WPARAM wParam, LPARAM lParam)
    {
    	// do something
    	return 0L;
    }
    

    zum schicken einer nachricht tue ich inder OnInitDlg() das schreiben
    [/cpp]
    PostMessage(WM_TEST);
    [cpp]

    Bekomme beim kompilieren diese Meldung und die zeigt im quellcode auf diese Zeile:
    TCOPYDlg.obj : error LNK2001: unresolved external symbol "protected: long __thiscall CTCOPYDlg::OnTest(unsigned int,long)" (?OnTest@CTCOPYDlg@@IAEJIJ@Z)

    1 unresolved external

    Wenn ich den Part mit "ON_MESSAGE(WM_TEST, OnTest)" auskommentiere beheb ich die Fehlermeldung...

    mhmmm was mache ich bloss falsch 😞



  • der fehler war ich habe den klassennamen vergessen vor meiner funtkion zu schreiben



  • Ah, hast es selbst bemerkt.
    Wollt ich grad sagen 😃


Anmelden zum Antworten