8. Vytvß°enφ nßpov∞dy
  1. NaÜe p°edchozφ aplikace obsahovala v nabφdce volby pro pou₧φvßnφ nßpov∞dy, ale ₧ßdnou nßpov∞du se nßm nepoda°ilo zobrazit. Nemßme zatφm vytvo°en soubor nßpov∞dy. V tΘto kapitole se budeme zab²vat vytvß°enφm nßpov∞dy. Help Workshop je program, kter² pou₧φvßme k vytvß°enφ soubor∙ nßpov∞d (.hlp), editovßnφ soubor∙ projekt∙ a obsah∙ nßpov∞d a testovßnφ nßpov∞dn²ch soubor∙. Help Workshop bere informace z projektovΘho souboru (.hpj), kombinuje je se soubory prvk∙ nßpov∞d (.rtf), bitov²mi mapami a ostatnφmi zdroji do nßpov∞dnΘho souboru, kter² potom m∙₧e b²t zobrazovßn programem WinHelp Windows (bude popsßn v nßsledujφcφ kapitole). Help Workshop je program hcw.exe.

  2. Nenφ nutnΘ vklßdat vÜechny prvky nßpov∞dy do jednoho nßpov∞dnΘho souboru. Nap°. pokud program, kter² dokumentujeme obsahuje modulßrnφ komponenty, pak je vhodnΘ vytvo°it samostatn² nßpov∞dn² soubor pro ka₧dou komponentu. Pokud se u₧ivatel rozhodne neinstalovat komponentu nebo p°idß novou komponentu pozd∞ji, pak nßpov∞dn² soubor tvo°φ stßle jednu jednotku. Jestli₧e p°idßvßme soubory k naÜφ rodin∞ nßpov∞dn²ch soubor∙ po jejich vytvo°enφ, pak je musφme reinicializovat. Reinicializaci nßpov∞dnΘho souboru provedeme p°φkazem
    winhelp -g filename.hlp
    kde filename.hlp je jmΘno nßpov∞dnΘho souboru, kter² chceme reinicializovat.
    Nynφ se s vytvß°enφm nßpov∞dy seznßmφme podrobn∞ji. Nejprve se budeme zab²vat vytvß°enφm soubor∙ prvk∙ nßpov∞d a zßklady jejich zßpisu.
    Vytvß°enφ nßpov∞dy zahßjφme vytvo°enφm soubor∙ s jednotliv²mi prvky nßpov∞dy. Tento soubor musφ b²t ve formßtu Rich Edit (musφme takΘ pou₧φt p°φponu RTF). Otev°eme tedy nov² soubor v n∞jakΘm textovΘm editoru, kter² umo₧≥uje tento formßt pou₧φvat (nap°. MS Word; je vhodnΘ si nejprve vyzkouÜet vytvo°enφ malΘho souboru nßpov∞dy) a zapφÜeme jednotlivΘ prvky nßpov∞dy. Ka₧d² prvek nßpov∞dy ukonΦφme pevn²m koncem strßnky. Na zaΦßtek ka₧dΘho prvku p°ipojφme pot°ebnΘ poznßmky pod Φarou (podle nßsledujφcφho popisu). Soubor s prvky nßpov∞d ulo₧φme.
    Identifikaci prvku nßpov∞dy zadßvßme jako poznßmku pod Φarou oznaΦenou znakem #. Umφstφme kurzor na zaΦßtek prvku nßpov∞dy a vlo₧φme poznßmku pod Φarou #. JmΘno identifikace prvku nßpov∞dy mß n∞kterß omezenφ: m∙₧e obsahovat mezery, ale nesmφ zaΦφnat nebo konΦit mezerou, nesmφ b²t delÜφ ne₧ 255 znak∙ a nesmφ obsahovat znaky # = + @ * % !. Pokud pou₧φvßme mapovßnφ, pak nesmφ zaΦφnat Φφslicφ. K umo₧n∞nφ sledovßnφ chyb Help Workshopem, zaΦφnßme vÜechny identifikace prvk∙, kterΘ mohou b²t volßny z programu IDH_. Help Workshop uvede vÜechny nedefinovanΘ prvky, kterΘ zaΦφnajφ IDH_, do sekce [MAP] projektovΘho souboru a vypφÜe varovanφ pro prvky IDH_, kterΘ zde nejsou uvedeny. Pokud chceme pou₧φt skok na specifickΘ mφsto v prvku nßpov∞dy, pak vlo₧φme identifikaci prvku nßpov∞dy na toto mφsto.
    Pro prvek nßpov∞dy zadßme takΘ titulek. Umφstφme kurzor na zaΦßtek prvku a zadßme poznßmku pod Φarou oznaΦenou $. Titulek m∙₧e mφt nejv²Üe 255 znak∙.
    Prvek nßpov∞dy m∙₧eme takΘ oznaΦit jako cφl ALink (vyhledßvßnφ prvk∙ obsahujφcφch A-klφΦovß slova). Umφstφme kurzor na zaΦßtek prvku a vlo₧φme poznßmku pod Φarou A. Jako poznßmku pod Φarou v tomto p°φpad∞ zapφÜeme jedno nebo vφce klφΦov²ch slov, kterΘ odd∞lujeme st°ednφkem. KlφΦovΘ slovo nesmφ obsahovat vφce ne₧ 255 znak∙, nesmφ obsahovat znak od°ßdkovßnφ a mezery p°ed a za klφΦov²m slovem jsou odstran∞ny. V klφΦov²ch slovech je rozliÜovßna velikost pφsmen, ale Help Workshop p°edpoklßdß, ₧e dv∞ klφΦovß slova, kterß se liÜφ pouze velikostφ pφsmen, jsou stejnß. Help Workshop zm∞nφ jedno z t∞chto klφΦov²ch slov tak, aby se shodovalo s druh²m a vypφÜe varovßnφ.
    K vytvo°enφ indexovΘ polo₧ky pro prvek nßpov∞dy umφstφme na zaΦßtek prvku nßpov∞dy poznßmku pod Φarou oznaΦenou K (makro KLink vyhledßvß prvky obsahujφcφ K-klφΦovß slova) a do poznßmky zapφÜeme seznam klφΦov²ch slov (majφ stejnß omezenφ jako u poznßmky pod Φarou A). V p°φpad∞ index∙ lze vytvo°it i druhou ·rove≥ index∙. Provedeme to tak, ₧e v poznßmce zapφÜeme klφΦovΘ slovo prvnφ ·rovn∞ indexu, kterΘ ukonΦφme st°ednφkem a bezprost°edn∞ za tφmto st°ednφkem zapφÜeme op∞t klφΦovΘ slovo prvnφ ·rovn∞, nßsledovanΘ Φßrkou nebo dvojteΦkou a po meze°e zapφÜeme klφΦovΘ slovo druhΘ ·rovn∞ indexu ukonΦenΘ st°ednφkem. Nap°. nßsledujφcφ poznßmka pod Φarou K bude v polo₧kßch index∙ zobrazena jak je uvedeno dßle (Φerven∞):
    macro; macro, library; macro, automatic; macro, complex; macro, simple
     macro
      automatic
      complex
      library
      simple
    Polo₧ky index∙ jsou uvedeny v abecednφm po°adφ a to bez ohledu na jejich po°adφ v poznßmce pod Φarou. Mezery p°ed a za klφΦov²mi slovy jsou odstran∞ny.
    Prvek nßpov∞dy m∙₧eme takΘ za°adit do vyhledßvßnφ. Provedeme to vlo₧enφm poznßmky pod Φarou oznaΦenΘ +, na zaΦßtek prvku nßpov∞dy. Jako poznßmku pak zapφÜeme vyhledßvacφ k≤d, kter² nesmφ obsahovat znaky # = + @ * % ! a mezer a nesmφ b²t delÜφ ne₧ 50 znak∙. Pro pou₧itφ vyhledßvacφch sekvencφ musφme takΘ aktivovat vyhledßvacφ tlaΦφtko v projektovΘm souboru. Help vytvß°φ auto-vyhledßvacφ sekvence pro prvky, kterΘ majφ p°idßny poznßmku pod Φarou +, ale bez specifikace vyhledßvacφho k≤du. Kdy₧ pou₧φvßme Φφsla ve vyhledßvacφch k≤dech, pak je vhodnΘ pou₧φvat ·vodnφ nuly (001, 002, 003 atd.). Pokud nßpov∞dn² soubor mß pouze jednu vyhledßvacφ sekvenci, pak pou₧ijeme "auto" jako vyhledßvacφ k≤d. Help Workshop automaticky vytvß°φ prohlφ₧ecφ sekvenci zalo₧enou na po°adφ ve kterΘm prvky nßpov∞dy jsou uvedeny v naÜich souborech.
    K oznaΦenφ prvku nßpov∞dy k vylouΦenφ nebo vlo₧enφ do nßpov∞dnΘho souboru umφstφme kurzor p°ed ostatnφ poznßmky pod Φarou a vlo₧φme poznßmku pod Φarou *. ZapφÜeme jednu nebo vφce vytvß°ecφch znaΦek jako text poznßmky. Vytvß°ecφ znaΦky odd∞lujeme st°ednφky. V naÜem projektovΘm souboru (.hpj), pak specifikujeme, kterΘ prvky pou₧φt p°i vytvß°enφ. U vytvß°ecφch znaΦek se nerozliÜuje velikost pφsmen. Prvky nßpov∞dy bez vytvß°ecφch znaΦek jsou v₧dy zapojeny do vytvß°enφ a to stejn∞ jako vÜechny prvky, kterΘ nejsou explicitn∞ vylouΦeny z vytvß°enφ v naÜem projektovΘm souboru.
    Pro specifikaci typu okna k zobrazenφ prvku umφstφme kurzor na zaΦßtek prvku a vlo₧φme poznßmku pod Φarou > a zapφÜeme jmΘno typu okna jak je definovßn v naÜem projektovΘm souboru. Tato poznßmka pod Φarou specifikuje typ okna prvku nßpov∞dy, p°i otev°enφ ze strßnky Index nebo Find nebo makrem ALink nebo KLink. Typy oken musφ b²t definovßny v naÜem projektovΘm souboru.
    Pro specifikaci spouÜt∞nΘho makra p°i otev°enφ prvku nßpov∞dy umφstφme kurzor na zaΦßtek prvku nßpov∞dy, ve kterΘm chceme zadanΘ makro spouÜt∞t a vlo₧φme poznßmku pod Φarou ! a jako text poznßmky zapφÜeme p°φkazy makra. Makra odd∞lujeme st°ednφky a nepou₧φvßme od°ßdkovßnφ.
    Pro p°idßnφ nerolovatelnΘ oblasti k prvku nßpov∞dy se ujistφme, ₧e paragraf nebo paragrafy, kterΘ chceme umφstit do nerolovatelnΘ oblasti jsou na zaΦßtku prvku nßpov∞dy a na tyto paragrafy aplikujeme styl Keep With Next (nebo n∞jak² jeho ekvivalent - Svßzat s nßsledujφcφm). Nerolovacφ oblasti nelze p°idat k prvk∙m, kterΘ budou zobrazeny ve vyno°ovacφch oknech. M∙₧eme specifikovat r∙znΘ barvy pozadφ pro nerolovatelnΘ a rolovatelnΘ oblasti.
    K zabrßn∞nφ zalamovßnφ °ßdk∙ textu umφstφme kurzor n∞kam do °ßdku, kter² nechceme zalamovat a aplikujeme styl Keep Lines Together (Svßzat °ßdky). Pokud text paragrafu je ÜirÜφ ne₧ Üφ°ka okna, pak je p°idßn vodorovn² posuvnφk.
    K vytvo°enφ skoku na prvek nßpov∞dy nebo vysv∞tlenφ hesla ve vyno°ovacφm okn∞, umφstφme kurzor p°φmo za text (nebo bitovou mapu), pro kter² chceme skok provΘst a zapφÜeme identifikaci prvku na kter² chceme skoΦit (p°ed identifikaci nezapisujeme mezeru). Vybereme textov² prvek, pro kter² chceme provΘst skok a aplikujeme na n∞j styl dvojitΘho podtr₧enφ (pro skok na dalÜφ prvek nßpov∞dy) nebo styl jednoduchΘho podtr₧enφ (pro vysv∞tlenφ hesla). Dßle vybereme nßsledujφcφ identifikaci prvku a aplikujeme na n∞j styl SkrytΘ. Pokud textov² prvek konΦφ znakem interpunkce, pak jej zahrneme do podtr₧enφ. Jinak se tento znak zobrazφ a₧ na zaΦßtku nßsledujφcφho °ßdku. K zobrazenφ textovΘho prvku v implicitnφ barv∞ textu (nezelen∞), vlo₧φme hv∞zdiΦku na zaΦßtek identifikace prvku nßpov∞dy (zahrnujeme jej do skrytΘho textu). K zobrazenφ textovΘho prvku v implicitnφ barv∞ textu (nezelen∞) bez podtr₧enφ, vlo₧φme znak % na zaΦßtek identifikace prvku nßpov∞dy. K vytvo°enφ skoku na prvek nßpov∞dy do jinΘho nßpov∞dnΘho souboru, vlo₧φme znak @ a jmΘno tohoto jinΘho nßpov∞dnΘho souboru na konec identifikace prvku nßpov∞dy. Pro specifikace typu okna pro prvek, na kter² chceme skoΦit, vlo₧φme na konec identifikace prvku nßpov∞dy znak > a jmΘno okna.
    Pro p°idßnφ prvku, kter² spouÜtφ makro umφstφme kurzor za text nebo odkaz na bitovou mapu a zapφÜeme znak ! (bez mezery) a zapφÜeme p°φkaz makra. Vφce maker odd∞lujeme dvojteΦkou nebo st°ednφkem. Vybereme text nebo odkaz na bitovou mapu a aplikujeme na n∞j styl dvojitΘho podtr₧enφ. Vybereme st°ednφk a p°φkaz makra a aplikujeme na n∞j styl skrytΘ.
    Pro p°idßnφ bitovΘ mapy k prvku nßpov∞dy vlo₧φme bitovou mapu p°φmo do souboru na mφsto jejφho zobrazenφ. Jestli₧e chceme pou₧φt vφcenßsobnΘ instance bitov²ch map, vytvo°φme spojenφ k jejich souboru pomocφ nßsledujφcφ syntaxe:
    {bmx filename.bmp}
    kde x specifikuje zp∙sob zarovnßvßnφ (c - bitovß mapa se bere jako znak, l - zarovnßvßnφ k levΘmu okraji, r - zarovnßvßnφ k pravΘmu okraji a t pou₧itΘ v kombinaci s n∞kterou z v²Üe uvedenou hodnotou - bφlΘ body bitovΘ mapy jsou p°evedeny na barvu pozadφ okna; m∙₧e b²t pou₧ito pouze pro 16-ti barevnΘ bitovΘ mapy). Vφce bitov²ch map m∙₧eme specifikovat odd∞lenφm jejich jmen st°ednφky.
    Pro p°idßnφ videa nebo animace k prvku nßpov∞dy umφstφme kurzor na mφsto, kam chceme p°idat soubor multimediφ a zapφÜeme odkaz s nßsledujφcφ syntaxφ:
    {mci filename.ext}
    Pro konfiguraci bitovΘ mapy na n∞kolik r∙zn²ch barevn²ch palet s r∙zn²m poΦtem barev, vytvo°φme soubor bitovΘ mapy pro ka₧dou paletu barev, umφstφme kurzor na mφsto, kde bitovß mapa mß b²t zobrazena a vytvo°φme p°φkaz bitovΘ mapy, kter² obsahuje vÜechny tyto jmΘna soubor∙ (odd∞lujeme je st°ednφky). WinHelp automaticky pou₧ije bitovou mapu, kterß nejvφce odpovφdß nasatavenφ obrazovky poΦφtaΦe. Nßsleduje p°φklad p°φkazu:
    {bml dog_16.bmp;dog_256.bmp;dog_mono.bmp}
  3. Po vytvo°enφ souboru s prvky nßpov∞dy se m∙₧eme zab²vat vytvß°enφm projektovΘho souboru nßpov∞dy. Kdy₧ se rozhodujeme jak² typ informacφ bude zobrazovßn v hlavnφm okn∞ a jak² v sekundßrnφm okn∞, pak si musφme uv∞domit tato omezenφ:
  4. WinHelp obsahuje p°eddefinovanΘ okno nazvanΘ hlavnφ okno, kterΘ mß nabφdku a °ßdek tlaΦφtek. Toto hlavnφ okno m∙₧eme p°izp∙sobit nebo vytvo°it novß sekundßrnφ okna. Ve svΘm projektovΘm souboru m∙₧eme definovat a₧ 255 typ∙ oken. WinHelp m∙₧e zobrazit a₧ 10 oken najednou. M∙₧eme p°izp∙sobit tyto vlastnosti okna: velikost a pozici, barvu pozadφ, text titulku, °ßdek tlaΦφtek, nabφdky a prvky nabφdek, stav udr₧ovßnφ okna nad ostatnφmi okny, automatickß zm∞na velikosti okna a makra spouÜt∞nß p°i otev°enφ okna.
    Hlavnφ a sekundßrnφ okna mohou mφt °ßdek tlaΦφtek a₧ s 22 tlaΦφtky. M∙₧eme pou₧φvat standardnφ mno₧inu tlaΦφtek nebo pou₧φt u₧ivatelskou mno₧inu tlaΦφtek. K definovßnφ u₧ivatelsk²ch tlaΦφtek pou₧φvßme makra. TlaΦφtka jsou p°idßvßna na °ßdek tlaΦφtek v po°adφ ve kterΘm je specifikujeme. TlaΦφtka mohou obsahovat pouze text, nemohou obsahovat grafiku.
    Na rozdφl od sekundßrnφch oken, hlavnφ okno m∙₧e obsahovat nabφdku. M∙₧eme pou₧φt standardnφ nabφdky a p°φkazy nebo m∙₧eme p°idßvat novΘ nabφdky a prvky nabφdky pomocφ maker. P°i volb∞ prvek nabφdky spouÜtφ makra. B∞hem pou₧φvßnφ nßpov∞dy m∙₧eme n∞kterΘ prvky nabφdky znep°φstupnit. Pro pou₧itφ maker nabφdky musφme b²t v hlavnφm okn∞. Pokud prvek nßpov∞dy obsahuje makro, kterΘ p°idßvß prvek k nabφdce, ale prvek je zobrazen v sekundßrnφm okn∞, pak makro nemß ₧ßdn² efekt.
    M∙₧eme specifikovat makra, kterß jsou spouÜt∞na, kdy₧ u₧ivatel otev°e nßpov∞dn² soubor. Nap°. m∙₧eme pou₧φt makra pro specifikaci voliteln²ch tlaΦφtek nebo prvk∙ nabφdky pro hlavnφ okno a zp°φstup≥ovßnφ program∙ a mo₧nostφ mimo nßpov∞dn² systΘm. M∙₧eme takΘ p°i°adit makra k jednotliv²m typ∙m oken.
    M∙₧eme takΘ vytvß°et kontextov∞ zßvislou nßpov∞du. Auto°i nßpov∞dy a v²vojß°i program∙ obvykle pracujφ spoleΦn∞ p°i implementaci kontextov∞ zßvislΘ nßpov∞dy. Auto°i nßpov∞dy zapφÜφ p°φsluÜnΘ prvky nßpov∞dy a v²vojß°i programu modifikujφ program k volßnφ p°φsluÜn²ch prvk∙ nßpov∞dy. Jako Φßst tΘto modifikace, v²vojß° p°i°adφ ΦφselnΘ hodnoty k prvk∙m pro kterΘ u₧ivatel m∙₧e po₧adovat informace. Potom m∙₧eme mapovat tyto ΦφselnΘ hodnoty na p°φsluÜnΘ identifikace prvk∙ nßpov∞dy v naÜem projektovΘm souboru. Kdy₧ p°i°azujeme identifikaci prvku nßpov∞dy k senzitivnφmu prvku nßpov∞dy, pak prvnφ Φty°i znaky v identifikaci prvku musφ b²t IDH_.
    TrΘnovacφ karty jsou mno₧ina prvk∙ nßpov∞dy v sekundßrnφch oknech, kterΘ mohou konfigurovat a zasφlat instrukce a zφskßvat informace od jinΘho programu. Toto je u₧iteΦnΘ p°i seznamovßnφ s programem krok po kroku. Zda u₧ivatel provedl krok sprßvn∞ m∙₧e b²t automaticky zhodnoceno v nßsledujφcφm kroku. V²vojß° m∙₧e pou₧φt API WinHelp ve sv²ch programech k zasφlßnφ informacφ WinHelp. Autor nßpov∞dy m∙₧e pou₧φt makro TCard ve sv²ch nßpov∞dn²ch souborech k zasφlßnφ informacφ programu.
    K vytvo°enφ novΘho projektovΘho souboru zvolφme v Help Workshopu File | New, dvojit∞ klikneme na Help Project, zapφÜeme jmΘno vytvß°enΘho projektovΘho souboru a stiskneme OK. Kdy₧ vytvß°φme projektov² soubor, Help Workshop konfiguruje minimßlnφ nastavenφ nutnΘ k vytvo°enφ nßpov∞dnΘho souboru. D°φve ne₧ m∙₧eme nßpov∞dn² soubor p°elo₧it musφme stisknout tlaΦφtko Files a specifikovat alespo≥ jeden soubor s prvky nßpov∞dy.
    Ke specifikaci umφst∞nφ soubor∙ bitov²ch map, stiskneme tlaΦφtko Bitmaps a dßle tlaΦφtko Add a specifikujeme slo₧ku, kterß obsahuje soubory bitov²ch map. Implicitn∞ Help Workshop hledß soubory bitov²ch map ve stejnΘm adresß°i ve kterΘm je umφst∞n projektov² soubor a souΦasn² soubor s prvky nßpov∞d a ve vÜech slo₧kßch obsahujφcφch soubory s prvky nßpov∞d. K odstran∞nφ slo₧ky se soubory bitov²ch map, slo₧ku vybereme a stiskneme tlaΦφtko Remove.
    K umo₧n∞nφ programu zobrazovat kontextovou nßpov∞du, stiskneme tlaΦφtko Map a kdy₧ chceme p°idat individußlnφ prvek pak stiskneme Add. Pokud chceme vlo₧it hlaviΦkov² soubor C, stiskneme Include. Kdy₧ p°i°azujeme identifikaci prvk∙ ke kontextov∞ senzitivnφm prvk∙m nßpov∞dy, pak musφme jako prvnφ Φty°i znaky v identifikaci pou₧φt IDH_. Help Workshop zajistφ, aby prvky nßpov∞d zaΦφnajφcφ t∞mito znaky mohl program volat. B∞hem p°ekladu, Help Workshop zobrazφ seznam vÜech identifikacφ prvk∙ nßpov∞d, kterΘ jsou v naÜich souborech s prvky nßpov∞d, ale nemajφ mapovßnφ na ΦφselnΘ hodnoty. Help Workshop takΘ zobrazφ seznam identifikacφ, kterΘ majφ mapovßnφ na ΦφselnΘ hodnoty, ale nejsou v naÜich souborech s prvky nßpov∞d. Pou₧φvßnφ konvence IDH_ nßm pomßhß nalΘzt a °eÜit problΘmy s kontextov∞ senzitivnφ nßpov∞dou. Pokud chceme pou₧φt jinou p°edponu ne₧ IDH_, pak ji specifikujeme v dialogovΘm okn∞ Map.
    Pro p°ezdφvku jednΘ identifikace prvku na jinΘ, stiskneme tlaΦφtko Alias, dßle tlaΦφtko Add a specifikujeme po₧adovanΘ nastavenφ. P°ezdφvky usnad≥ujφ p°esm∞rovßnφ skok∙ na prvky nßpov∞d beze zm∞n v instancφch skok∙. P°ezdφvky jsou takΘ u₧iteΦnΘ, kdy₧ provßdφme zm∞ny, kterΘ p∙sobφ na ΦφselnΘ hodnoty mapovßnφ (p°ezdφvky umo₧≥ujφ zobrazit po₧adovan² prvek v nßpov∞dnΘm souboru beze zm∞ny k≤du programu.
    Pro specifikaci titulku nßpov∞dnΘho souboru, stiskneme tlaΦφtko Options a v Φßsti Help Title zapφÜeme titulek. Titulek m∙₧e mφt a₧ 127 znak∙.
    Pro spuÜt∞nφ makra p°i kliknutφ na polo₧ku indexu, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Macros, stiskneme Add a specifikujeme po₧adovanΘ nastavenφ. SpuÜt∞nφ makra, kdy₧ u₧ivatel klikne na polo₧ce indexu je u₧iteΦnΘ, pro spouÜt∞nφ pr∙vodce, °ady trΘnovacφch karet nebo DLL. KlφΦovß slova zde p°i°azena jsou zobrazena v indexech a to bez ohledu na to, zda jsou specifikovßna  jako K-poznßmky pod Φarou v prvcφch nßpov∞d. Specifikovan² titulek bude zobrazen pouze, pokud u₧ivatel dvojit∞ klikne na klφΦovΘ slovo, kterΘ je spojeno s makrem a na jeden nebo vφce prvk∙ nßpov∞d. V tomto p°φpad∞, klikneme na titulek v dialogovΘm okn∞ Topics Found pro spuÜt∞nφ makra.
    Pro p°idßnφ tlaΦφtka Browse do okna, stiskneme tlaΦφtko Windows, p°ejdeme na strßnku Buttons, v seznamu Window Type vybereme typ okna a ujistφme se, ₧e v Φßsti Buttons je oznaΦeno Browse.
    Pro p°i°azenφ souboru obsahu k nßpov∞dnΘmu souboru, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Files a do Φßsti Contents File zapφÜeme jmΘno souboru obsahu (.cnt).
    Dßle se budeme zab²vat p°izp∙sobenφm okna nßpov∞dy. Pro p°idßnφ sekundßrnφho okna, stiskneme tlaΦφtko Windows, stiskneme Add a zapφÜeme jmΘno sekundßrnφho okna. Jako jmΘno okna nezapisujeme main. V seznamu, klikneme na jmΘnu standardnφho okna, kterΘ chceme pou₧φt za zßklad sekundßrnφho okna. M∙₧eme definovat a₧ 255 sekundßrnφch oken.
    Pro p°izp∙sobenφ hlavnφho okna nßpov∞dy, stiskneme tlaΦφtko Windows, stiskneme Add, zapφÜeme main a stiskneme OK. Na r∙zn²ch strßnkßch specifikujeme po₧adovanΘ nastavenφ.
    K zajiÜt∞nφ aby okno nßpov∞dy bylo implicitn∞ vrchnφm oknem, stiskneme tlaΦφtko Windows, v seznamu Window Type vybereme okno a ujistφme se, ₧e v Φßsti Window Attributes je oznaΦeno Keep Help Window On Top. U₧ivatelΘ mohou zm∞nit toto nastavenφ kliknutφm v okn∞ nßpov∞dy prav²m tlaΦφtkem myÜi a v zobrazenΘ mφstnφ nabφdce pou₧ijφ volbu Keep Help On Top.
    Pro specifikaci titulku pro okno, stiskneme tlaΦφtko Windows, v Φßsti Window Type vybereme typ okna a v Φßsti Title Bar Text zapφÜeme titulek. Titulek je zobrazovßn na titulnφm °ßdku okna a na tlaΦφtku °ßdku ·loh. Pokud sekundßrnφ okno nemß titulek, ale soubor obsahu pro nßpov∞dn² soubor specifikuje titulek, pak je pou₧it titulek ze souboru nßpov∞dy. Kdy₧ sekundßrnφ okno ani soubor obsahu nespecifikuje titulek, pak na titulnφm °ßdku nenφ zobrazen ₧ßdn² text.
    Ke specifikaci velikosti a pozice okna, stiskneme tlaΦφtko Windows, p°ejdeme na strßnku Position, v Φßsti Window Type vybereme typ okna a pro nastavenφ velikosti a pozice okna stiskneme tlaΦφtko Auto-Sizer a provedeme po₧adovanΘ nastavenφ. Pokud chceme aby WinHelp urΦoval pozici okna, stiskneme Default Position. Velikost a pozici okna m∙₧eme takΘ nastavit manußln∞ v Φßstech Left, Top, Width a Height. Kdy₧ chceme velikost sekundßrnφho okna nastavit na dΘlku prvku, p°ejdeme na strßnku General a ujistφme se, ₧e je oznaΦeno Auto-Size Height (tato volba nenφ dostupnß v hlavnφm okn∞ nßpov∞dy).
    Pro specifikaci barvy pozadφ okna, stiskneme tlaΦφtko Window, p°ejdeme na strßnku Color, v Φßsti Window Type vybereme typ okna a k v²b∞ru barvy pro nerolovatelnou a rolovatelnou oblast stiskneme tlaΦφtko Change. Specifikovanß barva pozadφ m∙₧e b²t p°epsßna, pokud u₧ivatel v mφstnφ nabφdce okna nßpov∞dy zvolφ Use System Colors. Pokud pou₧ijeme transparentnφ bitovou mapu v rolovatelnΘ oblasti i nerolovatelnΘ oblasti stejnΘho prvku nßpov∞dy, pak transparentnφ oblast obou bitov²ch map je zobrazena barvou pozadφ rolovatelnΘ oblasti.
    Pro p°idßnφ tlaΦφtek k sekundßrnφmu oknu, stiskneme tlaΦφtko Windows, p°ejdeme na strßnku Buttons, v seznamu Window Type vybereme typ okna a ujistφme se, ₧e v Φßsti Buttons jsou oznaΦeny po₧adovanß tlaΦφtka, kterß chceme zobrazit. Pokud nechceme pou₧φvat °ßdek tlaΦφtek, pak ₧ßdnΘ tlaΦφtko v Φßsti Buttons nesmφ b²t oznaΦeno.
    Pro p°idßnφ tlaΦφtek k hlavnφmu oknu nßpov∞dy, stiskneme tlaΦφtko Windows. Pokud je v seznamu Window Type, pak jej vybereme. Pokud zde nenφ, pak stiskneme Add, zapiÜeme jmΘno main a stiskneme OK. P°ejdeme na strßnku Buttons a v Φßsti Buttons vybereme po₧adovanß tlaΦφtka.
    Pro spuÜt∞nφ makra p°i otev°enφ okna, stiskneme tlaΦφtko Windows, p°ejdeme na strßnku Macros, v seznamu Window Type vybereme typ okna, stiskneme Add a specifikujeme makro, kterΘ chceme spustit. K odstran∞nφ vybranΘho makra stiskneme tlaΦφtko Remove. Pro specifikaci makra spouÜt∞nΘho p°i otev°enφ nßpov∞dnΘho souboru, stiskneme tlaΦφtko Config.
    Pro specifikaci implicitnφho prvku nßpov∞dy pro soubor nßpov∞dy, stiskneme tlaΦφtko Options a v Φßsti Default Topic, zapφÜeme identifikaci prvku nßpov∞dy pro prvek, kter² chceme aby byl implicitnφ.
    Pro p°idßnφ informacφ o autorsk²ch prßvech, stiskneme tlaΦφtko Options a v Φßsti Copyright Information, zapφÜeme informace, kterΘ chceme zobrazit v dialogovΘm okn∞ Version nebo kdy₧ u₧ivatel vklßdß nebo tiskne text nßpov∞dy. M∙₧eme specifikovat a₧ 255 znak∙ pro dialogovΘ okno Version. Pokud na konec textu zobrazovanΘho v dialogovΘm okn∞ Version zapφÜeme %date, pak Help Workshop p°i p°ekladu nßpov∞dnΘho souboru sem vlo₧φ souΦasnΘ datum.
    Pro spuÜt∞nφ makra p°i otevφrßnφ nßpov∞dnΘho souboru, stiskneme tlaΦφtko Config, dßle stiskneme Add a specifikujeme po₧adovanΘ nastavenφ.
    Pro ulo₧enφ datov²ch soubor∙ svßzan²ch DLL v nßpov∞dnΘm souboru, stiskneme tlaΦφtko Data Files a pro v²b∞r datovΘho souboru stiskneme Add. Ve jmΘnech soubor∙ datov²ch DLL se rozliÜuje velikost pφsmen. K zφskßvßnφ datov²ch soubor∙, nßpov∞da pou₧φvß jmΘno souboru bez cesty.
    Pro specifikaci voleb komprese, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Compression a specifikujeme po₧adovanΘ nastavenφ komprese. P°eklad nßpov∞dnΘho souboru pou₧φvajφcφ maximßlnφ kompresy je asi t°ikrßt pomalejÜφ ne₧ p°eklad stejnΘho souboru bez komprese.
    K potlaΦenφ zprßv p°ekladaΦe, stiskneme tlaΦφtko Options a pro skrytφ poznßmek se ujistφme, ₧e nenφ oznaΦena znaΦka Notes. K potlaΦenφ zprßv o p°ekladu zruÜφme oznaΦenφ znaΦky Progress.
    Pro ulo₧enφ zprßv p°ekladaΦe do souboru, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Files a v Φßsti Log File zadßme jmΘno souboru. Pokud chceme soubor ulo₧it do jinΘ slo₧ky ne₧ je projektov² soubor, pak specifikujeme cestu. Help Workshop m∙₧e zobrazovat a₧ 64 K slabik zprßv ve Windows 95 a a₧ 1 M slabiku zprßv ve Windows NT. P°i delÜφch zprßvßch je m∙₧eme ulo₧it do souboru a zobrazit n∞jak²m textov²m editorem.
    Pro specifikaci kam uklßdat doΦasnΘ soubory, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Files a do Φßsti TMP Folder zapφÜeme jmΘno slo₧ky, do kterΘ chceme uklßdat doΦasnΘ soubory. Implicitn∞ je pou₧ita slo₧ka specifikovanß prom∞nnou prost°edφ TEMP. DoΦasnΘ soubory jsou hlavn∞ pou₧φvßny, kdy₧ velikost nßpov∞dnΘho souboru p°ekroΦφ 8 M slabik.
    Pro specifikaci, kterΘ prvky vlo₧it do vytvß°enΘho souboru, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Build Tags a p°idßme znaΦky pro prvky nßpov∞dy, kterΘ majφ b²t vlo₧eny do nßpov∞dnΘho souboru. Prvky nßpov∞dy bez vytvß°ecφch znaΦek jsou v₧dy zahrnuty do vytvß°enφ. Prvky nßpov∞dy s vytvß°ecφmi znaΦkami jsou zahrnuty pouze jestli₧e strßnka Build Tags obsahuje jednu nebo vφce vytvß°ecφch znaΦek. Pokud specifikujeme vytvß°ecφ znaΦky v Φßsti Include nebo Exclude na strßnce Build Tags, pak Help Workshop ignoruje vÜechny volby BUILD, kterΘ mohou b²t specifikovßny.
    Pro generovßnφ indexovΘho souboru pro celotextovΘ vyhledßvßnφ, stiskneme tlaΦφtko Options, p°ejdeme na strßnku FTS a ujistφme se, ₧e znaΦka Generate Full Text Search Index je oznaΦena (a potom nastavφme dalÜφ po₧adovanß nastavenφ). P°i generovßnφ soubor∙ index∙ celotextovΘho vyhledßvßnφ p°i p°ekladu, musφ b²t na strßnce Compression oznaΦeny znaΦky Maximum compression nebo Hall compression. Pokud nemßme vygenerovßn indexov² soubor celotextovΘho vyhledßvßnφ, pak WinHelp se dotazuje zda jej generovat, kdy₧ poprvΘ otev°eme nßpov∞dn² soubor a p°ejdeme na strßnku Find.
    Ke zm∞n∞ ka₧dΘho v²skytu pφsma pou₧itΘho v nßpov∞dnΘm souboru, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Fonts, stiskneme Add a specifikujeme po₧adovanΘ nastavenφ. Tato procedura umo₧≥uje zm∞nit pφsmo pou₧itΘ v nßpov∞dnΘm souboru bez nutnosti reformßtovßnφ textu v prvcφch nßpov∞dy v RTF souborech. PoΦet nahrazovan²ch pφsem nenφ omezen.
    Pro zm∞nu cesty ke zdrojov²m soubor∙m, kdy₧ p°emφstφme nßÜ projektov² soubor, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Files a pro specifikaci novΘ cesty stiskneme Edit. Substituce cesty nenφ nutnß, pokud vÜechny soubory jsou specifikovßny relativn∞ k umφst∞nφ projektovΘho souboru. Help Workshop automaticky pou₧φvß relativnφ cesty, p°i p°idßvßnφ soubor∙. Substituce cesty je u₧iteΦnß, kdy₧ p°esouvßme cel² projekt na jinΘ mφsto.
    Pro specifikaci znak∙, kterΘ identifikujφ druhou ·rove≥ index∙, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Sorting a do Φßsti pro specifikaci znak∙ odd∞lujφcφch polo₧ky index∙, zapφÜeme jeden nebo vφce znak∙. Nap°. jestli₧e specifikujeme "@&%", pak °ßdek "display; display@configuring; keyboard; keyboard&configuring; mouse;mouse%configuring; network, configuring" bude v indexech zobrazen tφmto zp∙sobem:
    display
      configuring
     keyboard
      configuring
     mouse
      configuring
     network, configuring
    Implicitnφ znaky jsou Φßrka a dvojteΦka. LibovolnΘ znaky zde specifikovanΘ p°epφÜφ tyto implicitnφ znaky.
    Pro specifikaci jazyka nßpov∞dnΘho souboru, stiskneme tlaΦφtko Options, p°ejdeme na strßnku Sorting a specifikujeme po₧adovan² jazyk. Implicitn∞ Help Workshop pou₧φvß jazyk za zßklad∞ regionßlnφho nastavenφ specifikovanΘho v Control Panel. Pokud verze Windows nepodporuje specifikovan² jazyk, pak Help Workshop nem∙₧e p°elo₧it projektov² soubor.
    Pro p°eklad souboru obsahu, oznaΦφme v nabφdce File volbu Translation, otev°eme soubor obsahu (.cnt), vybereme hlaviΦku nebo prvek, kter² chceme p°elo₧it a stisknreme Edit. Kdy₧ volba Translatin je oznaΦena, pak m∙₧eme modifikovat pouze viditeln² text, kter² je zobrazen na strßnce obsahu. Nelze modifikovat identifikaci prvku, jmΘna soubor∙ nebo jmΘna oken.
  5. Dßle se budeme zab²vat vytvß°enφm souboru obsahu. Soubor obsahu (.cnt) je textov² soubor, kter² poskytuje instrukce pro strßnku obsahu v dialogovΘm okn∞ Help Topics a urΦuje zobrazovßnφ klφΦov²ch slov specifikovan²ch nßpov∞dn²ch soubor∙ na strßnkßch Index a Find. Nßvrh tabulky obsahu provßdφme specifikacφ:
  6. K vytvo°enφ a editaci souboru obsahu pou₧φvßme Help Workshop. Tabulka obsahu se nezobrazuje v dialogovΘm okn∞ Help Topics dokud soubor obsahu neobsahuje alespo≥ jeden prvek, kter² skßΦe do dostupnΘho nßpov∞dnΘho souboru. P°φpustnΘ skoky musφ b²t uvedeny v souboru obsahu, kdy₧ u₧ivatel poprvΘ otev°e p°i°azen² nßpov∞dn² soubor.
    Seznam klφΦov²ch slov je jeden z u₧iteΦn²ch nßstroj∙, kter² m∙₧eme poskytnout u₧ivateli. V indexech m∙₧eme takΘ uvΘst synonyma, kterß pomßhajφ u₧ivateli nalΘzt informaci. WinHelp takΘ nabφzφ slu₧bu celotextovΘho vyhledßvßnφ, co₧ umo₧≥uje u₧ivateli prohledat cel² text nßpov∞dn²ch soubor∙ a nalΘzt po₧adovanou informaci. Ve v∞tÜin∞ p°φpad∙, kdy₧ u₧ivatel p°ejde v dialogovΘm okn∞ Help Topics na strßnku Find poprvΘ, pak je zobrazen pr∙vodce Find Setup, kde vytvß°φme index celotextovΘho vyhledßvßnφ. Tento index obsahuje seznam vÜech slov v nßpov∞dnΘm souboru. Seznam index∙ je takΘ mo₧no dodßvat jako souΦßst nßpov∞dnΘho souboru (soubor .fts).
    K vytvo°enφ souboru obsahu zvolφme File | New, dvojit∞ klikneme na Help Contents, do Φßsti Default Filename zapφÜeme jmΘno nßpov∞dnΘho souboru s v∞tÜinou prvk∙ nßpov∞dy a do Φßsti Default Title zapφÜeme text, kter² chceme zobrazit na titulnφm °ßdku dialogovΘho okna Help Topics. Tento text je takΘ zobrazovßn na titulnφm °ßdku oken, kterΘ nemajφ specifikovan² titulek v projektovΘm souboru. Stiskneme Add Above nebo Add Below a p°idßme hlaviΦky a prvky, kterΘ chceme zobrazit na strßnce obsahu. Pokud chceme vlo₧it klφΦovß slova n∞kolika soubor∙ na strßnku Index, pak stiskneme Index Files a specifikujeme soubory, kterΘ chceme vlo₧it.
    Pro specifikaci implicitnφho okna, ve kterΘm chceme zobrazovat prvky nßpov∞dy, stiskneme tlaΦφtko Edit v hornφm pravΘm rohu okna Help Workshopu a v Φßsti Default Window specifikujeme typ okna. Prvky jsou zobrazeny v implicitnφm okn∞, kdy₧ je u₧ivatel otev°e ze strßnek Index nebo Find, pokud nenφ specifikovßno jinΘ okno v poznßmce pod Φarou >. Prvky jsou takΘ zobrazeny v implicitnφch oknech, kdy₧ je u₧ivatel otev°e ze strßnky obsahu, pokud polo₧ka obsahu neobsahuje specifikaci typu okna. Pokud implicitnφ okno nenφ specifikovßno, pak prvky jsou zobrazovßny v hlavnφm okn∞ nßpov∞dy. Typ okna musφ b²t definovßn v naÜem projektovΘm souboru.
    Pro p°idßnφ hlaviΦek na strßnku obsahu, vybereme prvek nad nebo pod kter² chceme p°idat hlaviΦku, stiskneme Add Above nebo Add Below a po v²b∞ru Heading zapφÜeme do Φßsti Title hlaviΦku. Pomocφ tlaΦφtek Move Right a Move Left m∙₧eme p°i°adit a₧ 9 ·rovnφ hlaviΦek.
    Pro p°idßnφ prvku na strßnku obsahu, vybereme prvek nad nebo pod kter² chceme p°idat hlaviΦku, stiskneme Add Above nebo Add Below a po v²b∞ru Topic zapφÜeme do Φßsti Title titulek a do Φßsti Topic ID zapφÜeme identifikaci prvku (pokud prvek nenφ v implicitnφm nßpov∞dnΘm souboru, pak do Φßsti Help File zapφÜeme jmΘno nßpov∞dnΘho souboru se specifikovan²m prvkem). Pokud prvek chceme zobrazit v jinΘm ne₧ implicitnφm okn∞, pak okno specifikujeme v Φßsti Window Type. Okno musφ b²t definovßno v projektovΘm souboru. Pokud nespecifikujeme informaci v Help File, pak WinHelp hledß prvek nßpov∞dy v implicitnφm nßpov∞dnΘm souboru. Pokud nespecifikujeme informaci v Φßsti Window Type, pak WinHelp zobrazφ okno v typu okna specifikovanΘm v implicitnφm nßpov∞dnΘm souboru. Pro p°i°azenφ makra k prvku mφsto identifikace prvku zapφÜeme do Φßsti Topic ID st°ednφk nßsledovan² makrem (k odd∞lenφ vφce maker pou₧ijeme dvojteΦku).
    Pro zm∞nu ·rovn∞ hlaviΦky nebo prvku, vybereme prvek a stiskneme tlaΦφtko Move Right nebo Move Left (jsou takΘ p°esunuty prvky ni₧Üφch ·rovnφ).
    Pro vlo₧enφ dalÜφch soubor∙ obsahu, otev°eme hlavnφ soubor obsahu, klikneme na mφst∞, kde chceme umφstit informace z dalÜφho souboru obsahu, stiskneme Add Above nebo Add Below, vybereme voliΦ Include a zapφÜeme jmΘno vklßdanΘho souboru obsahu. Pokud vlo₧en² soubor obsahu nenφ dostupn² p°i inicializaci nßpov∞dnΘho souboru, pak vlo₧en² soubor nenφ zobrazen na strßnce obsahu.
    Pro kombinaci klφΦov²ch slov z n∞kolika nßpov∞dn²ch soubor∙ otev°eme soubor obsahu, stiskneme tlaΦφtko Index Files, stiskneme Add, do Φßsti Help Title zapφÜeme titulek souboru nßpov∞dy. Titulek bude zobrazovßn, pokud u₧ivatel zvolφ Custom v pr∙vodci Find Setup. Je takΘ zobrazovßn v dialogovΘm okn∞ Topics Found, pokud WinHelp hledß identick² titulek prvku v jinΘm nßpov∞dnΘm souboru. Do Φßsti Help Filename dßle zapφÜeme jmΘno souboru nßpov∞dy, jeho₧ klφΦovß slova chceme p°idat k naÜemu indexu. VÜechny soubory nßpov∞dy obsa₧enΘ v indexech jsou prohledßvßny, kdy₧ makro ALink nebo KLink je spuÜt∞no.
    Pro povolenφ ALink a KLink skßkat do ostatnφch nßpov∞dn²ch soubor∙, stiskneme tlaΦφtko Link Files, stiskneme Add a pak zapφÜeme jmΘno nßpov∞dn²ch soubor∙, kterΘ chceme prohledßvat, kdy₧ makro ALink nebo KLink je spuÜt∞no. Nenφ nutno p°idßvat soubory, kterΘ ji₧ mßme vlo₧eny do dialogovΘho okna Index Files.
    Pro p°idßnφ dalÜφ strßnky do dialogovΘho okna Help Topics, stiskneme Tabs a potom stiskneme Add. Do Φßsti Tab Name zapφÜeme jmΘno, kterΘ chceme zobrazit na zßlo₧ce a do Φßsti DLL Filename zapφÜeme jmΘno souboru DLL, kter² poskytuje proceduru dialogu pro strßnku.
  7. Dßle se budeme zab²vat p°ekladem a testovßnφm nßpov∞dnΘho souboru. Pro p°eklad nßpov∞dnΘho souboru stiskneme tlaΦφtko Save and Compile.

  8. Pro p°eklad vφce ne₧ jednoho nßpov∞dnΘho souboru najednou, pou₧ijeme textov² editor, vytvo°φme ASCII textov² soubor se seznamem ·pln²ch specifikacφ vÜech naÜich projektov²ch soubor∙ na samostatn²ch °ßdcφch. Specifikujeme projektovΘ soubory v po°adφ, ve kterΘm je chceme p°eklßdat. Tento soubor ulo₧φme s p°φponou .hmk. Otev°eme Help Workshop a stiskneme tlaΦφtko Compile. V Φßsti Project File zapφÜeme jmΘno naÜeho .hmk souboru a stiskneme Compile.
    Pro zobrazenφ nßpov∞dnΘho souboru z Help Workshopu po p°ekladu nßpov∞dnΘho souboru stiskneme tlaΦφtko Run WinHelp a specifikujeme jmΘno nßpov∞dnΘho souboru. Pokud chceme zobrazit prvky jejich₧ identifikace je mapovßna na ΦφselnΘ hodnoty v naÜem projektovΘm souboru, pak zapφÜeme jmΘno a umφst∞nφ projektovΘho souboru a stiskneme Refresh. Zobrazenφ nßpov∞dy dosßhneme stiskem tlaΦφtka View Help.
    Pro generovßnφ sestavy pro nßpov∞dn² soubor, zvolφme File | Report, do Φßsti Help Filename zapφÜeme cestu a jmΘno nßpov∞dnΘho souboru, do Φßsti Output Filename zapφÜeme cestu a jmΘno souboru do kterΘho chceme uklßdat sestavu, v Φßsti Display vybereme typ po₧adovanΘ sestavy a stiskneme Report.
    K testovßnφ souboru obsahu, zvolφme Test | Contents File a zapφÜeme jmΘno souboru, kter² chceme testovat. Help Workshop testuje syntax souboru a potom ov∞°φ vÜechny skoky na prvky specifikovanΘ v souboru obsahu (zobrazφ zprßvu, pokud skok nepracuje). Pokud nßÜ soubor obsahu obsahuje vlo₧enΘ dalÜφ soubory obsahu, pak musφme zajistit, aby pro testovßnφ byly dostupnΘ.
    Pro simulaci volßnφ programu API WinHelp zvolφme Test | WinHelp API, do Φßsti Help File zapφÜeme ·plnou specifikaci testovanΘho souboru, v seznamu Command vybereme p°φkaz, kter² chceme zaslat v API WinHelp, do Φßsti dole v dialogovΘm okn∞ zapφÜeme hodnotu, kterou chceme zaslat a stiskneme Call.
    Pro monitorovßnφ zprßv WinHelp, zvolφme View | WinHelp Messages a dßle zvolφme View | Message Options a specifikujeme zprßvy, kterß chceme zobrazit.
    Pro uzav°enφ vÜech instancφ WinHelp zvolφme Test | Close All Help. Toto je u₧iteΦnΘ, pokud testujeme nßpov∞dnΘ soubory, proto₧e WinHelp je spouÜt∞n na pozadφ.
  9. Pro vytvo°enφ nßpov∞dy pro naÜi aplikaci textovΘho editoru Rich pou₧ijeme soubory s prvky nßpov∞d Richedit.rtf, Keys.rtf a Term.rtf. Tyto soubory si m∙₧ete stßhnout. ProhlΘdn∞te si je, podφvejte se takΘ na pou₧itΘ poznßmky pod Φarou. V tomto p°φpad∞ pou₧ijeme ji₧ vytvo°enΘ soubory, p°i vytvß°enφ nßpov∞dy v dalÜφch aplikacφch je ji₧ budeme vytvß°et sami. Spustφme Help Workshop, zvolφme File | New, vybereme volbu Help Project a zadßme jmΘno projektovΘho souboru (v naÜem p°φpad∞ zvolφme RichEdit, umφstφme jej do adresß°e, ve kterΘm mßme projekt naÜφ aplikace). Do projektovΘho souboru vlo₧φme v²Üe uvedenΘ t°i soubory typu Rich. Provedeme to stiskem tlaΦφtka Files a po stisku Add tyto soubory specifikujeme. NaÜe nßpov∞da pou₧φvß takΘ n∞kolik soubor∙ bitov²ch map (jsou takΘ mezi sta₧en²mi soubory). Pokud tyto soubory mßme ve stejnΘm adresß°i, jako je umφst∞n projektov² soubor nßpov∞dy, pak nemusφme zadßvat adresß° bitov²ch map. Mohli bychom zadat jeÜt∞ n∞kterΘ dalÜφ volby (nap°. pou₧itφ komprese u souboru nßpov∞dy, urΦit tlaΦφtka pou₧itß v okn∞ nßpov∞dy), ale zatφm se spokojφme pouze s tφmto zadßnφm. Vytvß°enφ souboru nßpov∞dy ukonΦφme stiskem tlaΦφtka Save and Compile.

  10. Soubor nßpov∞dy nynφ ji₧ mßme vytvo°en. Pot°ebujeme jej ale jeÜt∞ p°ipojit k naÜi aplikaci. Provedeme to vlo₧enφm jmΘna nßpov∞dnΘho souboru do vlastnosti HelpFile objektu aplikace. Vytvo°φme nap°. obsluhu udßlosti OnActivate hlavnφho formulß°e s p°φkazy:
    Application->HelpFile = "RICHEDIT.HLP";
    RichEdit1->SetFocus();
    Nynφ je ji₧ v naÜφ aplikaci mo₧no pou₧φvat nßpov∞du. Podφvßme-li se na p°φkazy, kterΘ nßpov∞du zobrazujφ, pak vidφme pou₧itφ metody HelpCommand objektu aplikace. Co z nßpov∞dy je zobrazeno urΦuje prvnφ parametr tΘto metody. P°i pou₧itφ parametru HELP_CONTENTS je zobrazen prvek nßpov∞dy s obsahem nßpov∞dy (druh² parametr metody v tomto p°φpad∞ nemß v²znam). Parametr HELP_HELPONHELP urΦuje, ₧e bude zobrazen obsah souboru nßpov∞dy WinHlp32 (soubor popisujφcφ jak pou₧φvat nßpov∞du). Druh² parametr metody v tomto p°φpad∞ op∞t nemß v²znam. Parametr HELP_PARTIALKEY urΦuje hledßnφ prvku nßpov∞dy podle index∙. Druh² parametr metody v tomto p°φpad∞ je adresa implicitnφho hledanΘho °et∞zce.
    Tφm jsme v²voj tΘto aplikace dokonΦili. VyzkouÜejte pou₧φvßnφ nßpov∞dy.
  11. Pokuste se vytvo°it pro p°edchozφ nßpov∞dn² soubor i soubor obsahu.
  12. Vra¥me se op∞t k popisu integrovanΘho ladφcφho prost°edku. C++ Builder mß n∞kterΘ dalÜφ ladφcφ nßstroje. DialogovΘ okno Evaluate/Modify umo₧≥uje zjistit souΦasnou hodnotu prom∞nnΘ a v p°φpad∞ pot°eby tuto hodnotu modifikovat. Pokud klikneme na jmΘnu prom∞nnΘ ve zdrojovΘm k≤du a v mφstnφ nabφdce Editoru k≤du zvolφme Evaluate/Modify, pak prom∞nnß je vyhodnocena. P°i volb∞ Run | Evaluate/Modify je nutno zadat jmΘno vyhodnocovanΘ prom∞nnΘ. Polo₧ka Expression se pou₧φvß k zadßnφ jmΘna prom∞nnΘ nebo v²razu, kter² chceme vyhodnotit. Kdy₧ stiskneme tlaΦφtko Evaluate, pak zadan² v²raz je vyhodnocen a v²sledek zobrazen v polo₧ce Result. Pokud chceme zm∞nit hodnotu prom∞nnΘ, pak zadßme novou hodnotu do polo₧ky New Value a stiskneme tlaΦφtko Modify. P°i pokraΦovßnφ v prßci programu je pou₧ita novß hodnota.

  13. Za b∞hu naÜeho programu m∙₧eme prohlφ₧et zßsobnφk volßnφ k zjiÜt∞nφ po°adφ volßnφ funkcφ naÜeho programu. Okno zßsobnφku volßnφ zobrazφme volbou View | Call Stack. Toto okno zobrazuje seznam volan²ch funkcφ v po°adφ jejich volßnφ. Nejpozd∞ji volanß funkce je uvedena na vrcholu okna. V seznamu jsou uvßd∞ny naÜe funkce, metody VCL a funkce obsa₧enΘ v DLL Windows. Dvojit²m kliknutφm na jmΘnu funkce v okn∞ Zßsobnφku volßnφ p°ejdeme do zdrojovΘho k≤du na tuto funkci. V p°φpad∞ funkce z DLL Windows, okno Zßsobnφku volßnφ obsahuje adresu a jmΘno DLL. P°i dvojitΘm kliknutφ na takovΘto funkci je zobrazeno okno CPU.
    Okno CPU umo₧≥uje prohlφ₧et nßÜ program na ·rovni asembleru. K zobrazenφ okna CPU zvolφme View | CPU. Tφmto oknem se zatφm nebudeme zab²vat. P°φkaz Goto Address je takΘ nßstroj lad∞nφ pro pokroΦilΘ. Kdy₧ nßÜ program skonΦφ chybou, pak souΦßstφ chybovΘ zprßvy je adresa, na kterΘ k chyb∞ doÜlo. Tφmto p°φkazem se m∙₧eme pokusit nalΘzt mφsto ve zdrojovΘm k≤du, kde chyba nastala. Pokud chyba vznikla v naÜem k≤du, pak kurzor je umφst∞n na °ßdek, kter² chybu zp∙sobil. Pokud chyba vznikla mimo nßÜ k≤d, je zobrazena zprßva, ₧e adresu nenφ mo₧no nalΘzt.
  14. Krokovßnφ naÜeho k≤du je nejzßkladn∞jÜφ ladφcφ operace. Ladφcφ prost°edek mß dv∞ operace krokovßnφ: Step over a Trace Into. Step Over provede °ßdek zdrojovΘho k≤du a zastavφ se na nßsledujφcφm °ßdku. Tzn. ₧e je proveden souΦasn² °ßdek a funkce, kterΘ jsou na tomto °ßdku volßny jsou provedeny plnou rychlostφ. P°φkaz Trace Into umo₧≥uje trasovßnφ provßd∞t i uvnit° volan²ch funkcφ. P°i krokovßnφ (trasovßnφ) naÜeho programu lze pou₧φvat dalÜφ ladφcφ techniky. Nechßme provΘst nßsledujφcφ °ßdek a podφvßme se jak se zm∞nily hodnoty prom∞nn²ch, zm∞nφme hodnotu n∞kterΘ prom∞nnΘ, p°φpadn∞ provedeme jinou ladφcφ operaci a provedeme dalÜφ °ßdek.

  15. DalÜφm ladφcφm p°φkazem je Trace To Next Source Line. Tento p°φkaz nenφ pou₧φvßn Φasto. Mß v²znam u zp∞tn∞ volan²ch funkcφ (funkce Windows volß n∞kterou z naÜich funkcφ k provedenφ n∞jakΘ akce). Pokud provßd∞n² °ßdek je volßnφ funkce API, kterß pou₧φvß zp∞tn∞ volanou funkci, pak p°φkazem Trace To Next Source Line p°ejdeme na prvnφ °ßdek zp∞tn∞ volanΘ funkce.
  16. Lad∞nφ DLL se podobß lad∞nφ spustitelnΘho souboru (nap°. do DLL umφstφme body p°eruÜenφ). P°i lad∞nφ DLL vytvo°φme testovacφ aplikaci a spustφme ji pod ladφcφm prost°edkem. N∞kdy ale pot°ebujeme ladit DLL pro pou₧itφ ze spustitelnΘho souboru vytvo°enΘho v jinΘm v²vojovΘm prost°edφ. Nap°. m∙₧eme vytvß°et DLL, kterou budeme volat z aplikace Visual Basicu. Visual Basic ale nespustφme pod ladφcφm prost°edkem C++ Builderu. Tuto situaci lze vy°eÜit tak, ₧e °ekneme C++ Builderu aby aplikaci Visual Basicu spustil jako hostitelskou aplikaci. To zadßme v dialogovΘm okn∞ zobrazenΘm po volb∞ Run | Parameters. Do Φßsti Host Application zapφÜeme specifikaci EXE souboru hostitelskΘ aplikace, stiskneme tlaΦφtko Load a hostitelskß aplikace je spuÜt∞na. Po spuÜt∞nφ hostitelskΘ aplikace, m∙₧eme ladit naÜi DLL stejn∞ jako p°i pou₧itφ testovacφ aplikace. Do DLL umφstφme body p°eruÜenφ a zaΦneme s lad∞nφm.
  17. Denφk udßlostφ (Event Log) je specißlnφ soubor, kter² obsahuje diagnostickΘ zprßvy (zprßvy generovanΘ C++ Builderem, naÜφ aplikacφ a n∞kdy i samotn²m Windows). Nap°. je zde uvedeno, kterΘ moduly byly zavedeny, zda obsahujφ ladφcφ informace, kdy byla naÜe aplikace spuÜt∞na, kdy byla zastavena, kdy byl dosa₧en bod p°eruÜenφ apod. K zobrazenφ Denφku udßlostφ zvolφme View | Event Log. Denφk udßlostφ mß mφstnφ nabφdku, kterß umo₧≥uje vyprßzdnit denφk, ulo₧it jej do souboru nebo p°idat komentß°e k denφku. Je zde takΘ volba Options, kterß umo₧≥uje p°izp∙sobit Denφk podle naÜich pot°eb. Do Denφku m∙₧eme zapisovat svΘ vlastnφ zprßvy pomocφ funkce API OutputDebugString (mß jeden parametr, kter²m je text zprßvy).
  18. Okno ModulovΘho pohledu zobrazuje prßv∞ zavedenΘ moduly, zdrojovΘ soubory p°ipojenΘ k t∞mto modul∙m a symboly (funkce a prom∞nnΘ) exportovanΘ z t∞chto modul∙. Toto okno zobrazφme volbou View | Modules. Tφmto oknem se nebudeme podrobn∞ji zab²vat.
  19. Kdy₧ se program pokusφ o zßpis do pam∞ti, kterou nevlastnφ, pak Windows zobrazφ chybovou zprßvu Access Violation. Nßsleduje popis n∞kter²ch situacφ, kterΘ tuto chybu mohou zp∙sobit. Jednφm z d∙vod∙ vzniku tΘto situace je pou₧itφ neinicializovanΘho ukazatele. Neinicializovan² ukazatel obsahuje nßhodnß data. V lepÜφm p°φpad∞ ukazuje mimo nßÜ program a jeho pou₧itφ je zachyceno touto chybovou zprßvou. V horÜφm p°φpad∞ ukazuje n∞kam do naÜeho programu a zp∙sobφ r∙znΘ nedefinovanΘ chyby. Z tohoto d∙vodu je vhodnΘ ukazateli v₧dy po vytvo°enφ p°i°adit n∞jakou rozumnou hodnotu nebo alespo≥ NULL. P°i pou₧itφ ukazatele s hodnotou NULL, se program zastavφ a ve zdrojovΘm k≤du je oznaΦen °ßdek, kter² obsahuje pou₧itφ tohoto ukazatele.

  20. Obdobnß situace nastßvß, kdy₧ zruÜφme objekt na kter² ukazatel ukazuje. Je tedy vhodnΘ po zruÜenφ objektu nastavit ukazatel na tento objekt na NULL.
    P°ekroΦenφ hornφ meze pole takΘ m∙₧e zp∙sobit tento problΘm. V n∞kter²ch p°φpadech si pouze p°epφÜeme n∞jakΘ informace ulo₧enΘ za polem a chyba se projevφ pozd∞ji (Üpatn∞ se hledß). V jin²ch p°φpadech je vypsßna chybovß zprßva. Je tedy vhodnΘ na tuto situaci dßvat dobr² pozor.
  21. Volby ladφcφho prost°edku lze nastavovat na dvou ·rovnφch, na ·rovni projektu a na ·rovni prost°edφ. S projektov²mi ladφcφmi volbami jsme se ji₧ seznßmili. Ladφcφ volby prost°edφ nastavujeme na strßnce Debugger dialogovΘho okna zobrazenΘho po volb∞ Tools | Environment Options. ZnaΦka Integrated Debugging urΦuje zda je povoleno pou₧itφ integrovanΘho ladφcφho prost°edku. V Φßsti General jsou Φty°i znaΦky. ZnaΦka Map TD32 keystrokes on run urΦuje zda Editor k≤du mß pou₧φvat mapovßnφ klßves pou₧itΘ v samostatnΘm ladφcφm prost°edku. ZnaΦka Mark buffers read-only on run nastavuje pam∞¥ Editoru k≤du pouze na Φtenφ, p°i spuÜt∞nφ programu pod ladφcφm prost°edkem. ZnaΦka Inspectors stay on top urΦuje zda okno Inspektora lad∞nφ bude zobrazeno stßle nad Editorem k≤du. ZnaΦka Rearrange editor local menu on run zm∞nφ vzhled mφstnφ nabφdky Editoru k≤du, p°i spuÜt∞nφ programu pod ladφcφm prost°edkem. Sekce Event Log umo₧≥uje nastavovat volby pro Denφk udßlostφ (je mo₧no urΦit maximßlnφ poΦet zprßv a typy zprßv uklßdanΘ do denφku).

  22. ╚ßst Exceptions urΦuje, kterΘ v²jimky budou zpracovßny ladφcφm prost°edkem a kterΘ budou zpracovßny u₧ivatelsk²m programem.
    Tφm je popis integrovanΘho ladφcφho prost°edku dokonΦen.
8. Vytvß°enφ nßpov∞dy