Pääaiheet:
* opasteiden suunnittelu
* opasteiden muuttaminen hypertekstiksi
* opastiedoston kääntäminen
* opasteiden vaatimat lisäykset Windows-ohjelmaan
* HotSpottien tekeminen kuviin
Opasteiden (apua, help) tekeminen Windows-ohjelmiin vaatii jonkin verran etukäteissuunnittelua ja joitakin lisäyksiä varsinaiseen ohjelmaan. Avustusten näyttämiseen käytetään yleensä WinHelp-ohjelmaa.
Opasteiksi tarkoitettu teksti pitää kirjoittaa tekstieditorilla, joka pystyy tallettamaan tiedot ns. RTF-formaatilla (Rich Text Format). Ainakin Microsoft Word 2.0, Ami Pro 2.0 ja WordPerfect(?) pystyy tallentamaan em. formaatilla. Lopuksi .RTF -tekstitiedosto käännetään avustuskääntäjällä (help compiler, HC) varsinaiseksi avustustiedostoksi (.HLP).
Kuitenkin opasteiden yksityiskohtaisuus riippuu ohjelman loppukäyttäjien tasosta. Jos käyttäjä ei ole aikaisemmin juurikaan käyttänyt tietokoneita tai vastaavanlaista ohjelmaa, pitää opasteiden olla yksityiskohtaisemmat kuin kokeneelle käyttäjälle tehdyt opasteet.
Tässä oletetaan, että loppukäyttäjä on kokenut, jolloin opasteissa ei kerrota muuta kuin valikon komennot ja jotain yleistä ohjelmasta.
Seuraavissa esimerkeissä kaikki opastetiedostoon tarkoitettu teksti on laatikoitu, jotta sekaannuksilta vältyttäisiin. Page Break kuvaa pakotettua sivunvaihtoa. Esimerkin kaikki laatikoissa oleva teksti on kirjoitettu samaan VAIHTAJA.RTF -nimisen tiedostoon.
Ennen kirjoittamista kannattaa valita ja suunnitella kaikki tyylit, joita aiotaan käyttää. Esimerkissä on käytetty viittä tyyliä:
1. Heading 1 = pääotsikko (14 pt Arial Bold, 8pt jälkeen, Keep with next)
1. Heading 2 = kunkin sivun ensimmäinen otsikko (14 pt Arial Bold, 8pt jälkeen, kwn)
1. Heading 4 = alaotsikot (11 pt Arial, sininen väri, 8 pt ennen, 6 pt jälkeen)
1. normal = normaalit tekstit (10 pt Times New Roman)
1. sisennys = tekstit, jotka on kirjoitettu sisennetyksi (sisennys 1.25 cm)
Tyylit valitaan siksi, että jos jälkeenpäin halutaan vaihtaa ulkonäköä, voidaan se tehdä muutamasta harvasta paikasta. Tyylit Heading1-Heading3 jäävät näytöllä omaksi rullaamattomaksi "ikkunakseen" näytön ylälaitaan. Näitä tyylejä ei sovi käyttää kuin yhtä kunkin sivun alussa. Teksti jää kiinteälle alueelle (nonscrolling region) jos sen tyylissä on "pidä yhdessä seuraavan kanssa" (keep with next) ominaisuus päällä (Wordissä: Format/Paragraph/TextFlow/Keep With Next).
Tekstin voi kirjoittaa ensin esimerkiksi kuten paperille kirjoitettu ohje kirjoitettaisiin, kuitenkin siten että kukin "sivu" on riittävän pieni näytölle:
Mittakaavamuunnos Rahan vaihto
Tiedostot-valikon komennot Sovellukset-valikon komennot Optiot -valikon komennot
Saatavilla on myös sisältöriippuvainen avustus (context sensitive help): - siirry dialogin siihen kohtaan, josta haluat avustusta - paina Ctrl-F1 Toisaalta voit kokeilla avustuksen dialogin kuvalla kenttien merkitystä. Page Break
Kun sisällys on valmis tehdään tekstiin pakotettu sivunvaihto (hard break, Wordissä Ctrl-Return). Pakotetulla sivunvaihdolla erotetaan toisistaan opasteiden eri aiheet (eli sivut).
Tässä mallissa hypertekstiviitteet ja avainsanat lisätään jälkeenpäin, mutta koska on kyse aivan normaalista tekstinkäsittelystä, ei tekojärjestyksellä ole tietenkään mitään väliä. Käytännössä voikin olla jopa helpompaa koodata linkkejä ja avainsanoja kesken kirjoittamisen.
Mittakaava on suhdeluku
joka ...jne mitä jaksaa kirjoittaa
--------------------------------------- Rahan vaihto Sovellukset-valikon komennot Mittakaava ja yksikkö -dialogi Page Break
Mittakaavan ja yksiköiden vaihtamiseksi on seuraava dialogi: {bmc scaling.bmp} --------------------------------------- Mittakaavamuunnos Page Break
Tehdään rahayksiköiden välisiä muunnoksia.
--------------------------------------- Mittakaavamuunnos Sovellukset-valikon komennot Page Break
Edellä {bmc scaling.bmp} tarkoitti, että tähän kohti tulee bittikartta keskitettynä (BitMap Center). Bittikartta ohjelmasta voidaan tehdä ajamalla ohjelma ja painamalla Alt-PrintScrn, jolloin ohjelman aktiivinen ikkuna tallettuu leikekirjaan. Leikekirjasta bittikartta voidaan pudottaa vaikkapa PaintBrushiin, jossa se voidaan tallettaa nimellä scaling.bmp. Kuva voitaisiin laittaa myös kuvana, mutta tällöin siihen ei saada HotSpotteja (= kohtia, joista voidaan painasta) ja se vie enemmän muistia ja voi estää .RTF:än kääntymisen .HLP-tiedostoksi. Palaamme myöhemmin HotSpottien tekemiseen.
Lopetetaan ohjelman suorittaminen. -------------------------------------------- Sovellukset-valikon komennot Optiot-valikon komennot Page Break
Tehdään mittakaavamuunnoksia. Mittakaavamuunnos
Tehdään rahayksiköiden välisiä muunnoksia. Rahan vaihto -------------------------------------------- Tiedosto-valikon komennot Optiot-valikon komennot Page Break
Lopuksi voidaan kirjoitella sanat, jotka ovat vaatisivat lisäselvitystä:
Comboboxissa on yhdistetty editointi- ja valintamahdollisuudet. Valinta voidaan suorittaa joko kirjoittamalla tai listasta valitsemalla. Page Break
Radiobuttoneilla voidaan valita yksi monesta vaihtoehdosta. Page Break
Nyt on kaikki opasteet jossakin muodossa kirjoitettu. Tämän jälkeen täytyy opasteteksteihin tehdä lisäyksiä, joiden avulla voidaan siirtyä haluttuun aiheeseen opasteissa. Siirtyminen tapahtuu joko hypertekstin linkkejä (vihreä alleviivattu teksti) osoittamalla tai Etsi-toiminnolla (Search).
$ Määrittelee aiheen otsikon (title). Otsikkoa tarvitaan, jos opasteissa halutaan käyttää kirjanmerkkitoimintoa (bookmark), jolloin otsikko tulee bookmark-valikkoon. Etsi-toiminto käyttää myöskin hyväkseen otsikkoa tulostamalla sen löydettyjen aiheiden listaan.
# Määrittelee tunnistemerkkijonon (context string), jonka avulla opasteiden eri aiheet tunnistetaan. Tunnistemerkkijono ei ole pakollinen, mutta ilman niitä ei ristiviittauksia aiheiden välillä voida tehdä. Tunnistemerkkijono on kuin ohjelmointikielen hyppypaikka (label)
K Avainsana (keyword). Jos käyttäjä kirjoittaa etsi- (search) toiminnassa avainsanan, niin löydettyjen aiheiden listaan tulostuu kaikki kyseiseen sanaan liittyvät aiheet (niiden sivujen otsikot, joilla avainsana on määritelty).
+ Sivu, jota voidaan selata << ja >> napeilla eteen- ja taaksepäin ja (sen järjetystunniste). Tämän ominaisuuden käyttämiseksi pitää projektitiedostoon (.HPJ) lisätä makro BrowseButtons().
Lisäksi voidaan vielä käyttää mm. alaviitettä ! makrojen tekemiseen, mutta muihin emme puutu tarkemmin tässä monisteessa (ks. \footnote tiedostossa HAG.HLP).
* Aluksi kannattaa laittaa alaviiteikkuna näkyviin (Wordissä: View/Footnote)
* Laita kursori aihemerkkijonon (sivun 1. rivin) vasemmalle puolelle Esimerkissä vaikkapa jonon: "Vaihtajan sisällysluettelo " (voit vaikkapa laittaa sanan leikekirjaan)
* Lisää alaviitteen tunnukseksi dollari
($).
(Wordissä: Insert/Footnote/Custom
Mark/$)
* Kirjoita otsikko alaviitteeksi ja varmistu että dollarin ja otsikon välillä on vain yksi välilyönti. Esimerkissä kirjoita " Vaihtajan sisällysluettelo " (tai ota leikekirjan sisältö alaviitteeksi jos talletit sen edellä).
Otsikko ei saa olla 128:aa merkkiä pitempi ja kääntäjä katkaisee liian pitkät merkkijonot.
Koska yleensä otsikoksi kirjoitetaan sama kuin aihemerkkijono, näppärä tekstinkäsittelyn käyttäjä tekee itselleen makron, joka kopioi kursorin oikealla puolella olevan tekstin otsikoksi.
Alla esimerkki avustuksen käytöstä kun avainsana poistu on merkitty sivulle, j-olla on otsikkona Tiedosto-valikon komennot":
* Aseta kursori haluamasi merkkijonon (hyppypaikan) vasemmalle puolelle. Esimerkiksi otsikkoa seuraavan rivin alkuun. Esimerkissä "Toiminnot"-merkkijonon vasemmalle puolelle. Tunniste ei yleensä saa olla rullaamattomalla osalla, eli esimerkin niillä riveillä, jotka ovat tyyliä Heading1-Heading3.
* Lisää alaviitteen tunnukseksi risuaita (#).
* Kirjoita tunnistemerkkijono alaviitteeksi. Varmistu siitä, että alaviitten tunnuksen ja tunnistemerkkijonon välillä on ainoastaan yksi välilyönti. Esimerkissä ensimmäinen jono voisi olla "Vaihtajan_sisallysluettelo".
* Myöhempää sisältö-riippuvaista avustusta varten kannattaa jokainen .H -tiedostossa oleva tunniste laittaa myös johonkin sille kuuluvaan kohtaan. Esimerkissä esim. vaihtaja.h:ssa on tunniste
#define ID_SCALE 11005
Tällöin esimerkin ID_SCALE tunniste kannattaa sijoittaa siihen kohti, jossa ollaan kerrottu mitä tapahtuu mittakaavakentästä. Esimerkiksi sille sivulle, jolla olisi otsikkona Mittakaava-kenttä.
Tunnistemerkkijonossa voi käyttää kirjaimia a...z, numeroita 0...9, sekä pistettä (.) ja alaviivaa (_). Muttei tietenkään skandeja eikä välilyöntejä. Tunnistemerkkijonon pituus voi olla korkeintaan 255 merkkiä.
* Lisää alaviitten tunnukseksi iso K-kirjain (K).
* Kirjoita haluamasi avainsanat puolipisteellä erotettuina. Varmista jälleen, että ensimmäisen avainsanan ja K:n välissä on ainoastaan yksi välilyönti. Tähän luetellaan kaikki ne avainsanat, joiden kohdalta aiheen otsikko halutaan löytyväksi. Esimerkissä vaikkapa toiminnon alle: "mittakaava;muunnos;toiminnot;raha"
* Avainsanoja voi olla useassa eri kohdassa samalla sivulla ja sama avainsana voi olla monella eri sivulla.
Avainsanoja varten on varattu yhdessä alaviitteessä 255 merkkiä, muuten avainsana voi sisältää mitä tahansa merkkejä (tosin ; katkaisee avainsanan).
* Aseta kursori sivun 1. rivin alkuun.
* Lisää alaviitten tunnukseksi +-merkki (+).
* Anna tunnukseksi vaikkapa juokseva numerointi 00-99. (00 1. sivulle, 02 seuraavalle jne.)
Seuraavassa kaikki ominaisuudet on laitettu 1. sivulle. Huomaa, että avustuskohtaan on laitettu monta tunnistejonoa (#):
* Määrittele kaksoisalleviivaus hypertekstilinkiksi haluamallesi sanalle tai fraasille: Maalaa sana, esimerkissä vaikkapa "Toiminnot"-sanan alla oleva "Mittakaavamuunnos" (linkin alkuun, shift+nuolilla linkin loppuun) ja valitse kaksoisalleviivaus
* (Wordissä: Format/Font/Underline/Double; näppärä laittaa speedbaariin tai nappulaan).
* Siirry haluamasi linkkitekstin loppuun (aivan kiinni, ei välilyöntiä väliin, tosin olet jo siellä!). Esimerkissä siirry "Mittakaavamuunnos"-sanan loppuun.
* Kirjoita halutun aiheen tunnistemerkkijono (eli mihin hypätään). Esimerkissä vaikkapa "Mittakaavamuunnos".
* (Näkyy näytössä MittakaavamuunnosMittakaavamuunnos)
* Maalaa tunnistemerkkijono, esimerkissä 2. "Mittakaavamuunnos". Valitse piilotetun tekstin toiminto
* (Wordissä: Format/Font/Hidden)
Kaksoisalleviivatun ja piilotetun tekstin välissä EI saa olla yhtään välilyöntiä. Tunnistemerkkijono täytyy olla yksikäsitteisesti jossakin annettu alaviitteen # avulla.
* Määrittele termiksi tarkoitetulle sanalle tai fraasille alleviivaus, Esimerkissä vaikkapa Mittakaavamuunnos-sivun ...comboboxeissa... voitaisiin esitellä mikä on combobox.:
* ... valita comboboxseista ...
* Kirjoita jälleen linkkitekstin viereen (täysin kiinni) tunnistemerkkijono.
* ... valita comboboxComboboxseista ...
* Määrittele tunnistemerkkijonon tyyliksi piiloteksti. (esimerkissä Combobox)
* ... valita comboboxComboboxseista ...
Alleviivatun ja piilotetun tekstin välissä EI saa olla yhtään välilyöntiä.
Editorissa kannattaa pitää päällä toimintoa, jolla näkee kaikki erikoismerkit. Katso edellinen kuva.
[OPTIONS] TITLE=Vaihtajan ohjeet COMPRESS=off [FILES] vaihtaja.rtf
Projektitiedoston tunnuksena on .HPJ (Help ProJect). Varsinainen kääntäminen suoritetaan seuraavalla komennolla:
HC VAIHTAJA
Jos halutaan enemmän ominaisuuksia, esimerkiksi sisältöriippuva avustus, määrätä ikkunan koko, eri värinen paikallaan pysyvä alue, eteen ja taakse selailu ja vaikkapa nappula, jolla päästään koko avustuksen loppuun, olisi VAIHTAJA.HPJ seuraavanlainen:
[OPTIONS] ; Lue lisää HELPin tekemisestä tiedostosta HAG.HLP TITLE=Vaihtajan ohjeet ; COMPRESS=MEDIUM ; Hidas, mutta esim. 30kB -> 24kB compress = OFF warning = 3 ; Kaikki virheet ja varoitukset report = ON ; Kääntäjän tapahtumat näyttöön [FILES] ; Mitkä .rtf-tiedostot kuuluvat mukaan vaihtaja.rtf [BITMAPS] ; Mitkä ulkoiset kuvat kuuluvat mukaan scaling.bmp [MAP] ; Kullekin "topic"ille täytyy antaa yksikäsitteinen numero. #include <vaihtaja.h> [WINDOWS] ; Ikkunan otsikko, paikka ja koko, max/norm, ; rullaavan alueen väri, kiinteän väri main = "Vaihtaja help", (380,0,600,700 ),0,,(255,255,0), [CONFIG] ; Tähän voi kirjoittaa "Help-makroja". Seuraavana pari esimerkkiä: ; Mahdollisuus mennä sivulta toiselle, jos on käytetty alaviitettä + BrowseButtons() ; Tehdään loppuunsiirtymis -nappula. Huomaa erilaiset heittomerkit. ; Tiedoston nimi on tyhjä, jotta käytetään tätä tiedostoa ja HELP_EOF ; on .RTF-tiedoston loppuun laitettu tunniste (alaviite #). CreateButton("btn_up", "&End", "JumpId('','HELP_EOF')")
Edellä on [MAP] kohdassa luettu mukaan kaikki vaihtaja.h:n vakiomääritykset. Jos kaikille ei haluta tehdä avustustiedostoon paikkaa, niin voidaan käyttää kahta .h -tiedostoa tai sitten vain itse kirjoittaa [MAP] kohdan alle halutut vakiot (hyvä käyttää samoja numeroita kuin ohjelmakoodissakin).
static EVENT WM_command_IDM_HELP_INDEX(tMSGParam *msg) { return WinHelp(msg->hWnd,T("VAIHTAJA.HLP"),HELP_INDEX,0); } static EVENT WM_destroy(tMSGParam *msg) { ... WinHelp(msg->hWnd,T("VAIHTAJA.HLP"),HELP_QUIT,0); /* h */ PostQuitMessage(0); return 0; }
Opasteiden kutsu tapahtuu valikkokomentoja käsitellessä tunnuksen IDM_HELP_INDEX kohdalla, jossa kutsutaan WinHelp-ohjelmaa. Tunnus ja vastaava menukohta on tietysti lisätty .RC ja .H -tiedostoihin.
Edellä esitetyllä menetelmällä saadaan opasteet esille Help-valikon Index-komennolla. Jos opasteet halutaan F1:n taakse, täytyy F1 määritellä pikavalinnaksi (accelerator).
Makroa T (ks. language.c) on käytetty malliksi siitä, miten myös tiedoston nimi voitaisiin vaihtaa käytössä olevan kielen mukaan.
WinHelp(hWnd, "VAIHTAJA.HLP", HELP_PARTIALKEY, (DWORD)(LPSTR)"lopetus");
Komennon viimeinen parametri on jokin alaviitteenä määritelty avainsana. Avainsana on määritelty alaviitteellä iso K.
Mikäli halutaan opasteiden sisältöriippuvainen (context sensitive) haku, niin silloin joudutaan ohjelmaan tekemään enemmän lisäyksiä. Kun nämä lisäykset piilotetaan jälleen sopivaan aliohjelmaan, saadaan sisältöriippuva avustus (käyttäjä siirtyy jonkin "otuksen kohdalle" ja painaa vaikkapa Ctrl-F1) seuraavilla muutoksilla (vaihtaj3.c):
#include "help.h" ... /****************************************************************************/ static EVENT WM_command_IDM_HELP_CS(tMSGParam *msg) { return DoHelpOnFocusID(msg->hWnd,"VAIHTAJA.HLP"); }
Kutsuttu aliohjelma (DoHelpOnFocusID) etsii aktiivisen "olion" ID tunnuksen ja sen perusteella kutsuu avustusta. Avustustiedostoon on sijoitettu vastaavat tunnistemerkkijonot tarvittaviin paikkoihin.
1. Ensin tehdään haluttu kuva .WMF (Windows Meta File) tai .BMP (BitMaP) -tiedostoksi halutulla ohjelmalla.
1. Sitten käynnistetään SHED.EXE (Hot Spot Editor). Kuvaksi ladataan juuri tehty kuva.
1. Kuvaan maalataan suorakulmaisia alueita haluttuihin Hot Spotteihin ja naputetaan aluetta hiirellä, jotta päästään antamaan tieto siitä, mihin kohtaa avustukessa pitäisi siirtyä jos kohtaa napautetaan. Seuraavassa kuvassa on Mittakaavan syöttö laatikko ja otsikkoteksti kehystetty Hot Spotiksi ja ilmoitettu että kun aluetta painetaan, niin näytetään lisätietoja (Pop-up) ID_SCALE -tunnistemerkkijonon kohdasta:
1. Kun kaikki halutut kohdat on merkitty, talletetaan tiedosto ja käännetään Help-tiedosto.
VIHJE: Käytä HAG.HLP -tiedostoa opiskellaksesi mitä kaikkea .RTF ja .HPJ tiedostoon voi kirjoittaa.
Kaiken kaikkiaan Windowsin Help on varsin monipuolinen hyperteksti (tai jopa media) ohjelma (joka tulee ilmaiseksi jokaisen Windowsin mukana). Avustukseen voidaan liittää kuvaa ja ääntä, siinä on oma ohjelmointikieli, ja siitä voidaan kutsua ulkoisia ohjelmia.
Lisäksi avustusten kirjoittamista ja erityisesti hypertekstiviitteiden luomista voi huomattavasti helpottaa sopivilla makroilla.
Varoitus: Ole varovainen piilotekstien kanssa, sillä jos ne ylittävät kappalerajan, saattaa Help-kääntäjä seota (Hidden paragraph).