next up previous contents
Elõre: A menükezelõ rendszer listája Fel: A tervezés egyes fázisai Vissza: A konkrét deklarációk

Saját include file-ok

Menürendszerünk egy függvényekre mutató pointerekbõl álló tömb segítségével aktivizálja az egyes menüpontokhoz rendelt függvényeket. Ahhoz, hogy ezt a pointertömböt ki lehessen tölteni, szükség van a saját függvényeink prototípusaira. Fontos, hogy csak int típust visszaadó, egyetlen int típusú paramétert váró függvényeket illeszthetünk be a menürendszerbe. Ha ettõl eltérõ rutinjaink vannak, akkor azokat "fejeljük meg" úgy, hogy ennek a követelménynek eleget tegyenek. Ezeket a függvényeket vagy úgy deklaráljuk, ahogy azt az adatstruktúra leírásakor tettük, vagy egy include file-ba foglajuk a deklarációkat. A kettõ egyszerre is alkalmazható, feltéve, ha a kétféle deklaráció összhangban áll egymással. Mi most a menükezelõ rendszerben történõ deklarációt alkalmazzuk, és csak a menükezelõ rutinok deklarációit helyezzük el a saját file-ban.

A bevezetõben említett, nem portábilis képernyõkezelõ függvényeinket egy önálló .c file-ban érdemes tárolni, prototípusaikat szintén a függvény rpototípusokat tartalmazó include file-unkban érdemes elhelyezni.

Ezt az include file-t, amit például myfunc.h-nak nevezhetünk - majd a menükezelõ rendszert tartalmazó .c file fogja behívni a

            #include "myfunc.h"
preprocesszor utasítással.

Érdemes a menükezelõ rendszerünk által használt különféle szimbólumokat is - például egyes speciális billentyûk kódjainak szimbólikus neveit, mint például RIGHT ami a tex2html_wrap_inline11445 billentyû kódjának, LEFT, UP, DOWN, ESC, BEGIN, END, HELP rendre a tex2html_wrap_inline11443tex2html_wrap_inline11447tex2html_wrap_inline11449, Esc, Enter, Home, End és az F1 billentyû kódjának felel meg az IBM PC-n - egy szimbólum file-ba foglalni. Legyen ennek a file-nak a neve például mysymb.h. Ezt a file-t szintén az #include direktívával építhetjük be a rendszer minden egyes .c file-jába. (Megjegyezzük, hogy ez a file akár #define-nal deklarált makrószerû konstansokat tartalmazhat, akár const-ként definiált konstansok deklarációit tartalmazhatja - az itt közölt programrészletek szempontjából ez lényegtelen. Egy másik megjegyzés az egyes billentyûkhöz rendelt kódokra vonatkozik: A speciális billentyûkhöz célszerû 128-nál nagyobb kódokat rendelni. Így a billentyûzet kezelõ függvény által visszadott billentyûkódok közül könnyen kiszûrhetõk a közvetlen ASCII karakterkódok. A menükezelõ rendszerben ezzel a feltételezéssel élünk.