HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Üzenetek figyelése, kezelése


Példaprogram letöltése

7498 bájt

Egy-egy alkalmazás futása során számtalan Windows üzenetet kap. E cikkben azt vizsgáljuk, hogy miként tudjuk figyelni, hogy milyen üzenetek érkeznek alkalmazásunkhoz, illetve miként tudnánk befolyásolni ezek hatását.

Az üzenetek figyeléséhez szükségünk lesz egy új osztályra, melyben implementáljuk az IMessageFilter interfészt. Ennek egyetlen függvénye van a PreFilterMessage. Ez minden olyan esetben meghívásra kerül, ha alkalmazásunk üzenetet kap. Paraméterként egy Message nevű struktúrát kapunk, melyből megtudhatjuk az üzenet tartalmát. E struktúrában rendelkezésünkre áll egy Msg, LParam, WParam property, mely az üzenet tulajdonságairól tájékoztat bennünket.
Ha e függvény visszatérési értéke igaz lenne, akkor az alkalmazásunk már nem kapja meg ezt az üzenetet. Ezt felhasználva befolyásolhatjuk, hogy milyen üzenetek kerüljenek az alkalmazásunk által feldolgozásra. Továbbá azt se felejtsük el, hogy a függvény paramétere ref típusú, tehát annak értékeit megváltoztathatjuk, így egy létrejött üzenetnek akár más paramétereket is adhatunk.
Mellékelt példában csak annyit teszünk, hogy egy ListBox-ba folyamatosan megjelenítjük az üzeneteket, kiszűrve a listából az egér mozgására vonatkozókat, mivel ebből lenne a legtöbb.
  public class MessageViewer: IMessageFilter 
  {
    public bool PreFilterMessage(ref Message m) 
    {
      if (m.Msg != 0x0200 && m.Msg != 0x00A0)
      {
        listBox.SelectedIndex = listBox.Items.Add(m.ToString());
      }
      return false;
    }
  }
Az osztályunk elkészítése önmagában még nem hozna eredményt, ezt hozzá is kell adnunk az Application osztály AddMessageFilter függvényének segítségével.
Application.AddMessageFilter(new MessageViewer(listBox1));

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 148. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |