vcpp2.doc

(43 KB) Pobierz
Przekazywanie Komunikatów

Przekazywanie Komunikatów

 

·      zdarzenie  ( event )

 

·      komunikat  ( message )

 

·      funkcja obsługi  ( handler )

 

·      podział komunikatów  WM_XXX

·      komunikaty okien

·      notyfikacje sterujące

·      komendy WM_COMMAND

 

·      identyfikatory komunikatów ®  stałe typu UINT

   WM_KEYDOWN ID_DATA_ERASE_ALL = 31848  

 

 

 

 

 



Zdarzenie    ®   wybór pozycji menu

          Data / Erase All

 



 



Komenda   ®   identyfikator

   ID_DATA_ERASE_ALL

 



 



Obiekt  ®   znajdowany jest obiekt klasy

   zawierającej funkcję obsługi

                            obsługi

 



 



Funkcja   ®    wywoływana jest funkcja

       OnDataEraseAll()

 



 



Operacja    ®   usuwanie

                                          wartości danych

 

 

 

Poziom

Odbiorca

Przekazuje do

A

okno główne MDI

  1. aktywnego okna potomnego
  2. samego siebie
  3. aplikacji

B

okno główne SDI

okno potomne MDI

  1. aktywnego widoku
  2. samego siebie
  3. aplikacji

C

widok

  1. samego siebie
  2. dokumentu  tego widoku

D

dokument

  1. samego siebie
  2. wzorca dokumentu

E

okno dialogowe

  1. samego siebie
  2. okna rodzica
  3. aplikacji

 

 

 

 

 

Mapy Komunikatów

 

plik.h

 

DECLARE_MESSAGE_MAP ()

 

// makro deklarujące mapę

// na końcu deklaracji klasy

 

plik.cpp

 

BEGIN_MESSAGE_MAP ( NazwaKlasy,

NazwaKlasyBazowej )

//{{ AFX_MSG_MAP ( NazwaKlasy )

 

              makrokomendy  odwzorowujące  >

 

// }} AFX_MSG_MAP

 

END_MESSAGE_MAP ( )

 

·      rodzaje makroinstrukcji odwzorowujących :

 

·      ON_WM_XXX( )®  XXX nazwa komunikatu okna,

        np. ON_WM_LBUTTONDOWN ( ), funkcje obsługi

        mają ustalone identyfikatory np.

       OnLButtonDown ( ), definicje  w   afxwin.h

 

·      ON_COMMAND ( ID_XXX , IdentyfikatorFunkcji )

ON_UPDATE_COMMAND_UI ( ID_XXX,

                                                        IdentyfikatorFunkcji )

ON_BN_CLICKED ( ID_XXX , IdentyfikatorFunkcji )

ON_MESSAGE ( WM_XXX , IdentyfikatorFunkcji )

ON_REGISTERED_MESSAGE ( WM_XXX ,

IdentyfikatorFunkcji)

 

 

 

 

 

 

·      przykłady :

 

ON_WM_LBUTTONDBLCLK ( )

ON_WM_KILLFOCUS ( )

ON_COMMAND ( ID_FILE_NEW , OnFileNew )

ON_COMMAND ( ID_DATA_ERASE_ALL,

  OnEraseAll )

ON_UPDATE_COMMAND_UI ( ID_EDIT_CUT ,

                                                                                                  OnUpdateEditCut )

ON_BN_CLICKED ( ID_BUTTON_DELETE ,

                                                                                                  OnButtonDelete )

ON_MESSAGE (WM_MY_MESSAGE_DISPAY ,

                                                                                                  OnDisplay )

 

ON_REGISTERED_MESSAGE ( WM_MESSAGE_SHOW,

OnShow )

 

 

 

 

 

Definiowanie własnych  komunikatów

 

·      #define WM_MESSAGE_SHOW WM_USER + 257

·      UINT RegisterWindowMessage

                   (LPCSTR lpString)

·      wynik® < 39936 , 65535 > ( < 0xC000 , 0xFFFF >)

·      przykład :

UINT WM_MESSAGE_SHOW =

RegisterWindowMessage ( ”ShowMessage” );

 

Wysyłanie komunikatów

 

·       przez środowisko po wystąpieniu zdarzenia

·       przez program

 

LRESULT SendMessage ( .. ) ;

BOOL PostMessage ( .. ) ;

 

 

 

Funkcja O_Y

Funkcja O_X

 





. . . . . . . . . . . . . . . . .

SendMessage ( ,Y, )

. . . . . . . . . . . . . . . . .

 

 

. . . . . . . . . . . . . . . .

...

Zgłoś jeśli naruszono regulamin