Message MapsMessage Maps neboli Mapování zpráv je systém řízení a distribuce zpráv (myšleno zprávy systému) knihovny MFC, které zajišťuje registraci a správné přesměrování zpráv příslušné funkci. Funkce
VýznamPoužití systému mapování zpráv pro distribuci zpráv skrz aplikaci má pozitivní vliv na složitost tříd a tudíž i na celkovou rychlost. Mapování spočívá v propojení jednotlivých zpráv (tyto zprávy jsou v MFC vyjádřeny celočíselnou hodnotou, která jednoznačně identifikuje druh zprávy) se členskými funkcemi třídy, která má zprávu zachytávat. Tím zcela odpadá potřeba virtuálních event handlerů (virtuální metody účelně definované v základní třídě k reagování na zprávy), které - kvůli značnému množství možných událostí - tak značně zatěžují odvozenou třídu z velké části nepoužitou implementací. Třídy MFC se však díky mapám zpráv uskromnily na ryze základní virtuální funkce, jako je např. "OnPaint" apod., které jsou zároveň implicitně mapovány, takže - pokud není třeba výchozí implementaci měnit - se vývojář může soustředit pouze na specifické vlastnosti jeho odvozené třídy. Aplikace map zprávMapy zpráv představují nelehký systém, který na první pohled není zcela srozumitelný. V MFC jsou však lehko ovladatelné pomocí několika maker, která skrývají tuto složitost pod jednoduchým názvem. Jsou to v prvé řadě makra "DECLARE_MESSAGE_MAP", které se vkládá do hlavičkového souboru třídy, a makra "BEGIN_MESSAGE_MAP" a "END_MESSAGE_MAP", vkládaná do souboru .cpp, mezi něž se vkládají definice propojení zpráv s členskými funkcemi definované třídy. Definice propojení si opět vyžadují použití předdefinovaných maker pro zúhlednění a čitelnost kódu. Tato makra dodržují přísné názvosloví, díky němuž lze z názvu snadno vypozorovat druh zprávy, kterou zachytává. Až na výjimky je název makra odvozen od názvu zprávy, přičemž počáteční zkratka "WM_" je nahrazena zkratkou "ON_". Kupříkladu zpráva WM_PAINT je tedy mapována pomocí makra "ON_PAINT". Druhy zprávMezi základní definované zprávy systému Windows patří:
Pomocí zprávy WM_COMMAND lze snadno zaregistrovat uživatelem definovanou zprávu. Jako příklad může sloužit změna barvy nebo velikosti objektu zobrazeného v okně. V nabídce, pravým tlačítkem nebo jiným způsobem budete chtít změnit velikost nebo barvu objektu. Pohodlným způsobem může sloužit použití WM_COMMAND. |