Každý program pro Windows přináší ve svém .exe souboru kromě programového kódu i velké množství dat, která s instrukcemi procesoru nemají mnoho společného. V souboru téměř každého programu se skrývají informace, jako jsou např.:
Tato data slouží jako zdroje (resources) pro algoritmus programu. Program je vybírá a používá pro zobrazení především grafických informací na displeji. Data jsou do .exe souboru vložena překladačem podle popisu, který je uložen ve zdrojových souborech resource.h a jmenoprojektu.rc.
V našem případě jsou zdroje popsány v souboru HexaView.rc. Pro nabídky je tam např. část, která popisuje nabídkové menu:
Po prohlédnutí obsahu souboru by se mohlo zdát, že zpracování zdrojů nutí programátora naučit se nový "jazyk" popisující zdroje programu. Naštěstí Visual C++ obsahuje grafický nástroj pro zpracování zdrojů.
My tedy nebudeme upravovat zdrojové texty, ale použijeme grafické rozhraní, které nabízí eVT. Na kartě se záložkou ResourceView jsou jednotlivé zdroje připraveny ke zpracování.
Nás budou zajímat pouze některé položky. Postupně upravíme následující "zdroje":
Poklepáním na položku IDI_HEXAVIEW se otevře grafický editor pro úpravu ikon. Nemělo by pro vás být problémem upravit si standardní ikonu podle vlastního vkusu - např. takto:
Nezapomeňte si v okénku "Device" přepnout i na Small (16x16) a změnit i malou verzi ikony např.:
Poklepáním na IDD_ABOUTBOX se otevře editor dialogů. Protože jsme již změnili
ikonu, objevuje se její nová verze v dialogu. Zkontrolujte, zda vám dialog vyhovuje,
případně si do něj můžete doplnit své jméno pomocí Static Text:
- zvolíme nástroj Static Text,
- v dialogu vyznačíme místo, kde bude umístěn požadovaný text,
- poklepem na nově vyznačený blok se otevře dialog pro změnu vlastností textu,
- v Editboxu "Caption" upravíme text podle přání a ukončíme Enterem.
Po překladu by se již měl objevit v programu nový dialog "About".
Poklepeme na položku IDM_MENU. Otevře se editor zdroje menu.
- Označte položku Help,
- Stisknutím klávesy Insert se před tuto položku vloží nová prázdná,
- Klepneme na ni a objeví se dialog s možností editace,
- Vyplňte do boxu Caption text &View. Znak & určuje "horkou klávesu" pro tuto položku.
- Podobným způsobem vložíme další položky pod View podle obr. 27.
- Mezi 16 Columns a With Text vložíme jednu položku, která bude mít zatržen Separator.
- U položky With Text zatrhneme políčko Checked, protože začínáme s Textem.
Při uzavření dialogu po vložení boxu Caption za nás eVT automaticky vyplní identifikační číslo ID ve formě ID_názevpoložky. Při vytváření postupně přidává čísla vždy o 1 větší. Protože pro volbu počtu sloupců použijeme přepínač, je nutné vytvářet tyto položky postupně za sebou. V souboru resource.h si můžete zkontrolovat (po sestavení programu příkazem Rebuild All), zda čísla postupují za sebou a která položka je první. Při vzorovém příkladě byly položky vkládány postupně zespodu. Položky měly tyto hodnoty:
ID názvy položek si zapamatujte, odpovídají hodnotě parametru, který předává zpráva WM_COMMAND.
Máme-li připraveno, můžeme začít konečně "programovat". Do lokálních proměnných vložíme:
Protože parametrem zprávy WM_COMMAND je ID vybrané položky menu, doplníme za zpracování IDM_FILE_EXIT ve zprávě WM_COMMAND nové příkazy nabídky:
Uvedený kód není příliš hezký, šlo by jej napsat lépe. Z důvodů přehlednosti to ale nechám v tomto stavu :-).
Změní-li se požadavek na zobrazení s textem či bez něj, upravíme kromě logické proměnné bSTextem i zaškrtnutí u položky v nabídce pomocí funkce CheckMenuItem. Při změně počtu zobrazovaných sloupců se nám také změnila velikost stránky pro posuvník. Změnu je ošetřena zasláním zprávy WM_APP svému oknu. Hodnoty WM_APP a výše jsou rezervovány pro obecné užití v programu a nekolidují s žádnou standardní zprávou posílanou systémem. Při jejím obdržení nastavíme velikost stánky zpracováním této zprávy:
A protože chceme začít se zobrazováním 4 sloupců a použít přepínač zaškrtnutí položky, do zprávy WM_CREATE za vytvoření menu vložíme úvodní nastavení této položky:
V tomto okamžiku již můžeme prohlížet celý obsah bufferu s různým nastavením pohledů. Program se dostal do tohoto stavu:
Stránka načtena za 0.00251 sekund.