SendMessage, und das Gegenstück?!?



  • Hallo,

    man kann ja an eine Anwendung z.B. Winamp einen Befehl mit SendMessage schicken.
    Wie aber kann ich in mein Programm einbauen, dass es diese Befehle beachtet.
    Also, wie geht es, dass ich von meinem ersten Prog. einen Befehl an mein zweites Prog. senden kann?

    Bye and THX,
    Stefan

    [ Dieser Beitrag wurde am 30.01.2003 um 18:57 Uhr von C-X-B editiert. ]



  • Du Müsstest dir eine eigene Nachricht basteln, oder eine Standardnachricht an es
    schicken,
    wenn du zum beispiel WM_PAINT sendest, wird bei einer Dialogbasierten Anwendung
    die OnPaint Funktion ausgeführt...

    Devil



  • Steht in jedem MFC Buch!



  • @<ant>: und hat man keins zur hand, fragt man eben hier nach...dafür sind wir da



  • Diese Funktion schikt eine Nachricht ab...
    
    PostMessage ( WM_DISABLE_BUTTONS );
    
    Diese Funktion fängt die Nachricht auf...
    /*[ Function ------------------------------------------------------------------
    
       Name            : CSafetyGuideDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    
       Description     : Gets the post-messages
    
       Return          : LRESULT
    
       Exceptions      : 
    
       API             : <no>
    
    -----------------------------------------------------------------------------*/
    LRESULT CSafetyGuideDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    /*] END Function */
    {
        CEdit*      control1;
        control1    = (CEdit*)      GetDlgItem ( IDC_Path_Base );
    
        if ( WM_ENABLE_BUTTONS == message )
        {
            combo1->EnableWindow ( TRUE );
            UpdateData (FALSE);
        }
        else if ( WM_DISABLE_BUTTONS == message )
        {
            combo1->EnableWindow ( FALSE );
        }
        return CDialog::WindowProc(message, wParam, lParam);
    }
    


  • Ähm... ok... ich glaub ihr versteht net ganz auf was ich raus will... *g*
    Ich will ein von einem Programm eine Nachricht an ein anderes schicken.
    Senden kann ich (so halb):

    CWnd* hwndWinamp=FindWindow("Winamp v1.x",NULL);
    hwndWinamp->SendMessage(WM_COMMAND,40048,0);
    

    (ich weiß nur noch net wie ich rausfinde, wie meine Anwendung heißt!?)
    Wie kann ich jetzt in meinem zweiten Prog. diese Nachricht abfangen?

    @devil: Wenn ich als WM_COMMAND WM_PAINT schreibe, was muss ich dann für die anderen Werte setzen? Oder soll ich da gar nichts setzen?

    @na_ich: Was macht WindowProc? Ich dachte, des holt nur Nachrichten im eigenen Prog.

    Bye and THX!
    Stefan



  • Hi,

    Als Ergänzung zu den Vorrednern...

    Deine Zielapplikation empfängt die Message grundsätzlich mal "automatisch". Wenn sie was damit anfangen kann, dann tut sie auch darauf reagieren. Und genau das macht auch WindowProc.

    Falls du selbst generierte Messages hast -ist übrigens nix anderes als bsp.

    #define WM_MY_MSG WM_USER + 100
    

    - dann musst du die halt in beiden Applikationen definieren und dem OS per

    RegisterWindowMessage("WM_MY_MSG");
    

    bekannt machen.

    Grüße, Volle.



  • OK! *g*
    Danke!

    Bye,
    Stefan


Anmelden zum Antworten