Wat is een gekleurde statusbalk? Statusbalk van Microsoft Word-teksteditor

Menu's, werkbalken en andere schermelementen zijn nodig zodat u alle acties in het werkgebied kunt uitvoeren.

Het werkgebied bevindt zich in het midden van het Microsoft Project-venster. Bovenaan wordt het begrensd door werkbalken en het hoofdmenu, links ervan kan zich een taakgebied bevinden en onderaan de statusbalk. Als u de venstergrootte of schermresolutie van Microsoft Project wijzigt (bijvoorbeeld van 800 x 600 pixels naar 1024 x 768), heeft het werkgebied, samen met het taakvenster en het adviseurspaneel, de neiging alle beschikbare ruimte op het scherm te vullen, terwijl alle andere elementen hebben vaste afmetingen.

De inhoud en het uiterlijk van de werkruimte zijn afhankelijk van de weergave die momenteel op het scherm wordt weergegeven. Bij het aanmaken van een nieuw project wordt eerst de weergave getoond Gantt-diagram(Ganga-diagram). Via het menu kan van weergave worden gewisseld Weergave(Weergave).

Er is een snellere en gemakkelijkere manier. Om de huidige weergave te wijzigen, kunt u met de rechtermuisknop op de kop klikken in de vorm van een blauwe balk met de naam van de weergave (aan de linkerkant van het scherm). Er verschijnt een contextmenu (Fig. 2.15). Hier moet u de weergave selecteren die u op het scherm wilt weergeven.

Rijst. 2.15. Schakel tussen weergaven met behulp van het contextmenu

In elke weergave bevindt zich bovenaan het werkgebied een bewerkingsregel: een tekstveld dat bedoeld is voor het invoeren en bewerken van waarden in de velden van de tabel die op het scherm worden weergegeven.

Na het invoeren of bewerken van informatie op deze regel, moet u op de toets drukken Binnenkomen. Om wijzigingen aan de inhoud van een cel te annuleren en de bewerkingsmodus te verlaten, moet u klikken Opl.

Statusbalk

De statusbalk bevindt zich onder aan het Microsoft Project-venster. Het is ontworpen om verschillende aanvullende informatie weer te geven. Aan de linkerkant van de statusbalk wordt bijvoorbeeld informatie weergegeven over een opdracht, een werkbalkknop of de locatie van de cursor.

In de normale modus, wanneer Microsoft Project wacht op een gebruikersactie, wordt het woord weergegeven in de statusbalk Klaar(Klaar).

Als u tekst in een tabelcel begint in te voeren, verdwijnt deze en verschijnt het woord Enter op zijn plaats. Soms kan de informatie in de statusbalk u helpen tijdens het werken.

Aan de rechterkant van de statusbalk staan ​​vlaggen die aangeven of bepaalde modi zijn in- of uitgeschakeld. Bijvoorbeeld, CAPS geeft aan of de modus is ingeschakeld Capslock(invoermodus voor hoofdletters), NUM- is de modus ingeschakeld? Numlock, A SCRL- is de modus ingeschakeld? Scrollvergrendeling. Als de overeenkomstige modus is ingeschakeld, zijn de letters (CAPS, NUM, enz.) duidelijk zichtbaar, en als de modus is uitgeschakeld, zijn de overeenkomstige letters grijs en bijna onzichtbaar.

De statusbalk is een horizontale balk onderaan het MS Word-documentvenster. De statusbalk geeft de huidige status van de inhoud van het venster en andere contextgevoelige informatie weer.

Om de statusbalk weer te geven, selecteert u in het menu Dienst team Opties, open het tabblad Weergave en vink vervolgens het vakje aan statusbalk in de groep Show.

Pagina nummer- toont het paginanummer.

Sec. nummer- toont het sectienummer op de pagina die in dit venster wordt weergegeven.

Nummer/nummer- toont het paginanummer en het totale aantal pagina's op basis van het werkelijke aantal pagina's in het document.

Betekenis betekenis- toont de afstand van de bovenrand van de pagina tot het invoegpunt. Dit element krijgt alleen een waarde als de invoeglocatie zich in het opgegeven venster bevindt.

St nummer- toont de tekstregel met de invoeglocatie. Dit element krijgt alleen een waarde als de invoeglocatie zich in het opgegeven venster bevindt.

Nummer nummer- toont de afstand in tekens vanaf de linkermarge tot het invoegpunt. Dit element krijgt alleen een waarde als de invoeglocatie zich in het opgegeven venster bevindt.

REC toont de opnamestatus van de macro. Dubbelklik op een element om macro-opname in of uit te schakelen ZAP. Wanneer macro-opname is uitgeschakeld, wordt het element ZAP geschilderd in een doffe kleur.

Patch - Toont de status van de patchopname. Dubbelklik om de patch-opnamemodus in of uit te schakelen ISPR. Als patchopname is uitgeschakeld, wordt het item ISPR geschilderd in een doffe kleur.

VDL - Toont de status van de selectiemodus. Dubbelklik op een element om de markeringsmodus in of uit te schakelen VDL. Wanneer de markeringsmodus is uitgeschakeld, wordt het element VDL geschilderd in een doffe kleur.

ZAM - toont de status van de vervangingsmodus. Om de vervangingsmodus in of uit te schakelen, dubbelklikt u op een element PLAATSGEVAAR. Wanneer de vervangingsmodus is uitgeschakeld, wordt het element PLAATSGEVAAR geschilderd in een doffe kleur.

Taal- toont de taal van de tekst waarin de cursor zich bevindt. Dubbelklik op dit item om het taalformaat van de geselecteerde tekst te wijzigen.

Waar worden schaalbalken en schuifbalken voor gebruikt?

Met linialen kunt u de huidige positie van de cursor in de tekst visueel beoordelen. In MS WORD vervullen heersers echter aanvullende, misschien wel belangrijkere functies.

Heersers:

Horizontale liniaal Hiermee kunt u de inspringing van alinea's op de pagina, de breedte van kolommen en kolommen van tabellen visueel wijzigen en tabstops (inspringen) instellen met de muis. Terwijl u de cursor voor de inspringmarkering en de tabstoppositie verplaatst, weerspiegelt de horizontale liniaal de instellingen voor de alinea waarin de cursor zich bevindt.

Verticale liniaal wordt langs de linkermarge van de pagina weergegeven. Met zijn hulp kunt u snel de boven- en ondermarges van de pagina aanpassen, evenals de hoogte van de rijen in de tabel. U kunt er ook voor kiezen om linialen op het scherm weer te geven of te verwijderen, zodat u meer ruimte vrijmaakt voor uw document. Linialen tonen/verbergen: Bekijken>liniaal>vink het vakje aan of uit.

Werk voor de dag:

7. Werkte in MS Word.

8. HTML-tabellen maken


Welke methoden voor het selecteren van tekstfragmenten worden in een tekstverwerker gebruikt?

Om een ​​stuk tekst te selecteren, plaatst u de muiscursor voor de eerste letter van het geselecteerde fragment en drukt u op de linkermuisknop. Plaats vervolgens, zonder deze los te laten, de muiscursor onmiddellijk achter de laatste letter van het geselecteerde fragment en laat vervolgens de toets los. Het fragment wordt op het scherm gemarkeerd door de achtergrondkleur te wijzigen.

Als u slechts één woord hoeft te selecteren, kunt u dit beter doen door te dubbelklikken op de linkermuisknop, nadat u de muiscursor eerder op het geselecteerde woord heeft geplaatst.

Soms is het handiger om tekst te selecteren met behulp van het toetsenbord. Als u een willekeurig tekstfragment moet selecteren, gebruikt u eerst de tekstcursortoetsen om de cursor vóór de eerste letter van het geselecteerde fragment te plaatsen. Druk vervolgens op de toets en druk, zonder deze los te laten, de cursortoetsen verticaal of horizontaal totdat het gewenste stuk tekst is gemarkeerd. Laat vervolgens de sleutel los .

Als u slechts één woord wilt markeren, kunt u dit ook via het toetsenbord doen. Plaats de tekstcursor voor het gewenste woord. Druk vervolgens tegelijkertijd op de toetsen En en vervolgens op de toets om de tekstcursor horizontaal te verplaatsen . Laat de toetsen los En . Het woord wordt gemarkeerd.

U kunt de tekstcursor ook achter het woord en naast de toetsen plaatsen En druk op de toets om de tekstcursor horizontaal te verplaatsen . Hierdoor wordt het woord links van de tekstcursor gemarkeerd.

Om de tekstcursor sneller te verplaatsen, kunt u op de toetsen drukken En , nadat u op de toets hebt gedrukt . In dit geval beweegt de cursor met sprongen langs de woorden van de tekst. Deze techniek is handig om te gebruiken om de cursor snel naar het begin of einde van een woord te verplaatsen met behulp van het toetsenbord.

Om snel afzonderlijke tekstregels te selecteren, plaatst u de muiscursor links van de tekst en beweegt u de muiscursor door de linkermuisknop ingedrukt te houden verticaal totdat de gewenste regels zijn gemarkeerd. Hierna kunt u de muisknop loslaten.

Het opslaan van een document in MS Word gaat als volgt:

1. Selecteer het item Bestand in de menubalk,

Hoe verwijder of knip ik een tekstblok?

Vaak moet u bij het bewerken van een document een tekstblok verwijderen. In MS WORD is deze procedure vrij eenvoudig.

Om een ​​tekstblok te verwijderen, selecteert u het (dubbelklikt) en drukt u vervolgens op of .

Om een ​​tekstblok te knippen, klikt u op Bewerken in het hoofdmenu en selecteert u de opdracht Knippen.

Hoe kopieer ik tekst uit een document en plak ik de tekst in een nieuw document?

Heel vaak is het nodig om een ​​bestaand tekstfragment naar een andere plaats in dit document of naar een ander document te kopiëren. De kopieerbewerking kan worden uitgevoerd met behulp van: het klembord of de muis.

Kopiëren met behulp van het klembord:

* Selecteer een object;

* Selecteer in het bewerkingsmenu de opdracht Kopiëren

* Plaats de cursor op de gewenste plaats (in het huidige document of een ander document)

* Selecteer Plakken in het menu Bewerken.

Kopiëren met behulp van het toetsenbord.

* Selecteer een object;

* Klik +

* Plaats de cursor op de gewenste plaats en klik +

Kopiëren met de muis

* Selecteer object

* Plaats de muisaanwijzer binnen het geselecteerde object en druk op de linker (rechter) knop + kopieer de markering naar de gewenste locatie.

Waarvoor worden het Klembord en het Klembordpaneel gebruikt in MS Office? Geef de bewerkingen een naam met het klembord.

Het klembord wordt gebruikt om tijdelijke informatie op te slaan tijdens het werken in MS WORD.

ü Klembord openen

ü Sluit het klembord

Wat wordt bedoeld met een alinea in een tekstverwerker?

Een alinea is een stuk tekst of afbeeldingen, begrensd door een alineateken. Een alineateken (of alineamarkering) is een niet-afdrukbaar teken dat alle opmaakopties voor de bijbehorende alinea bevat. Met behulp van alineaopmaak bepaalt u de positie van de tekst op het scherm, en dus ook op het blad.

Werk voor de dag:

1 .Werkte in MS Word.

Statusbalk

Onderaan het venster bevindt zich een statusbalk (Fig. 1.39). Dit is een ander interface-element dat is gewijzigd en verbeterd in Word 2007.

Rijst. 1.39. Statusbalk


Naast traditionele documentgegevens (het totale aantal pagina's in het document en het huidige paginanummer) zijn er nieuwe elementen op de statusbalk in Word 2007 verschenen.

Bijna alle informatieblokken op de statusbalk zijn knoppen die zijn ontworpen om snel opdrachten uit te voeren. Wanneer u op de knop Aantal pagina's klikt, wordt het venster Zoeken en vervangen geopend, zodat u snel naar een andere pagina in het document kunt gaan. Als u op de knop voor het tellen van woorden klikt, wordt het venster met documentstatistieken geopend, waarin het aantal regels, alinea's, tekens zonder spaties en met spaties wordt weergegeven. Dit is erg handig bij het schrijven van artikelen en samenvattingen. In eerdere versies van Word was het oproepen van het statistiekvenster veel minder handig.

Als Word geen spelfouten in het document heeft gedetecteerd, heet het pictogram voor de spellingcontrole Spelfouten niet gevonden en ziet het eruit als een open boek met een groene “vogel”. Als Word denkt dat sommige woorden in het document verkeerd gespeld zijn, verandert het pictogram in een boek met een rood kruis en verandert de naam in Spellingsfouten gevonden, klik om te corrigeren. Wanneer u op dit pictogram klikt, markeert Word achtereenvolgens verkeerd gespelde woorden in de tekst en wordt een contextmenu weergegeven met opties voor acties met dit woord (Fig. 1.40). Als er soortgelijke woorden in het Word-woordenboek voorkomen, worden deze in dit menu weergegeven. Als u op een woord in het menu klikt, wordt dit ingevoegd op de plaats van het foutieve woord. Met dit menu kunt u ook het huidige foutieve woord overslaan en naar het volgende gaan, alle soortgelijke foutieve woorden overslaan of het woord aan het woordenboek van het programma toevoegen. Dit is een zeer nuttige functie, aangezien het woordenboek van Word, hoewel vrij uitgebreid, vaak geen veel voorkomende woorden bevat. Deze functie is vooral relevant als je vaak werkt met gespecialiseerde teksten, zoals medische of technische teksten. Zodra een woord aan het woordenboek is toegevoegd, wordt het niet als onjuist beschouwd.

Rijst. 1.40. Contextmenu voor een foutief woord


Als u op de knop klikt die de huidige documenttaal weergeeft, wordt een venster geopend waarin u de taal in het huidige document kunt selecteren waarvoor de spelling wordt gecontroleerd (Fig. 1.41).

Rijst. 1.41. Taalkeuzevenster


In Word 2007 zijn de knoppen voor het wisselen van de documentweergavemodus verplaatst naar de statusbalk (in eerdere versies van Word bevonden ze zich links van de schuifbalk) (zie figuur 1.39). Met deze knoppen kunt u de documentweergavemodus selecteren: Pagina-indeling, Leesweergave, Webdocument, Overzicht en Concept. Verschillende documentweergavemodi dienen om de manier waarop de gebruiker informatie waarneemt te veranderen. Deze modi worden in meer detail beschreven in Hoofdstuk. 2.4.

De statusbalk in Word 2007 bevat nu opties om het zoomniveau van het document te wijzigen. Als u op de afbeelding van de huidige documentschaal klikt, wordt er een dialoogvenster geopend waarin u de gewenste schaal uit de voorgestelde waarden kunt selecteren of een willekeurige schaal kunt opgeven. Daarnaast kunt u de schaal wijzigen met behulp van de schuifregelaar door deze naar links of rechts te slepen en daarmee de schaal te verkleinen of te vergroten, of door op de ronde knoppen met een min- of pluspictogram te klikken. In dit geval zal de schaal met 10% afnemen of toenemen.

Als u het lastig vindt om de schaal te wijzigen met behulp van de schuifregelaar of als u nooit de knop voor spellingcontrole gebruikt, kunt u deze blokken uit de statusbalk verwijderen. In Word 2007 kunt u de daarin aangeboden opdrachten aanpassen. Om dit te doen, klikt u er met de rechtermuisknop op. In het menu dat verschijnt, kunt u niet alleen de weergave van onnodige opdrachten uitschakelen, maar ook de opdrachten inschakelen die standaard inactief zijn, maar die voor u nuttig kunnen zijn (Fig. 1.42). U kunt bijvoorbeeld de weergave van regelnummer, sectienummer, kolomnummer, Caps Lock-toetsaanslag, enz. inschakelen.

Rijst. 1.42. Aanpassingsmenu voor de statusbalk


Advies

Als u vragen heeft over de onderwerpen die in dit hoofdstuk worden behandeld, raadpleeg dan Hoofdstuk 11.3 – misschien vindt u het antwoord op uw vraag.

LPTBNOTIFY ptbn =(LPTBNOTIFY) lParam; schakelaar(ptbn->iItem)

lstrcpy(ptbn->pszText, "Help"); ptbn->tbButton.iBitmap = STD_HELP; ptbn->tbButton.idCommand = 11; ptbn->tbButton.fsState = TBSTATE_ENABLED; ptbn->tbButton.fsStyle = TBSTYLE_BUTTON; ptbn->tbButton.dwData = 0; ptbn->tbButton.iString = 10;

retour 1; geval 1:

lstrcpy(ptbn->pszText, "Verwijderen"); ptbn->tbButton.iBitmap = STD_DELETE; ptbn->tbButton.idCommand = 12; ptbn->tbButton.fsState = TBSTATE_ENABLED; ptbn->tbButton.fsStyle = TBSTYLE_BUTTON; ptbn->tbButton.dwData = 0; ptbn->tbButton.iString = 11;

retour 1; standaard:

Als u al een reeks TBBUTTON-definities heeft, kunt u het snelst op dit bericht reageren door de memcpy-functie te gebruiken om TBBUTTON voor elk ontvangen bericht te kopiëren. Hieronder ziet u hoe GADGETS dit doet:

lstrcpy(ptbn->pszText, GetString(ptbn->iItem)); memcpy(&ptbn->tbButton, &tbb, sizeof(TBBUTTON));

Statusbalk

Statusbalken zijn vensters die alleen kunnen worden weergegeven en bevinden zich vaak onder aan het hoofdprogrammavenster. Het meest voorkomende gebruik van de statusbalk is dat deze wordt gebruikt om gedetailleerde beschrijvingen van menu-items weer te geven terwijl de gebruiker deze bekijkt, net zoals een ober commentaar geeft op een bepaald menu-item in een restaurant. Wanneer menu's niet worden bekeken, geven programma's vaak gerelateerde informatie weer in de statusbalk. Ook wordt regelmatig de status van de shift-toetsen weergegeven

- , , . Tekstverwerkingsprogramma's geven vaak ook de huidige pagina, rij en kolom weer.

De statusbalk heeft twee modi, zodat deze kan worden gebruikt om menu-items te beschrijven en andere programma-informatie weer te geven. In de beschrijvingsmodus van menu-items ("eenvoudige modus") wordt de statusbalk groter en wordt een eenvoudige regel tekst weergegeven. In de programmastatusweergavemodus geeft de statusbalk een of meer vensters weer, die elk een "deel" van de statusbalk worden genoemd. Het specifieke deel van de statusbalk kan worden gemaakt als een nis met een rand die boven het oppervlak van het statusbalkvenster verschijnt, of zonder rand. Daarnaast is het mogelijk om onderliggende vensters aan de statusbalk toe te voegen, zoals een klok of een voortgangsbalk. Wanneer u de statusbalk schakelt van de eenvoudige modus naar de programmastatusmodus en weer terug, houdt de statusbalk één reeks verborgen vensters vast, terwijl een andere reeks zichtbare vensters wordt weergegeven.

Een statusbalk maken

De eenvoudigste manier om een ​​statusbalk te maken is door de functie CreateStatusWindow aan te roepen:

hwndStatusBar = CreateStatusWindow(

WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | CCS_BOTTOM, "Klaar", hwndParent, 2

Deze functie roept de functie CreateWindow aan, die een onderliggend venster maakt met een bovenliggend venster hwndParent , met de venstertekst "Ready" (deze tekst verschijnt in het eerste venster van de statusbalk), een ID van 2. De vensterstijlvlaggen zijn gespecificeerd in de eerste parameter.

In de onderstaande tabel worden alle stijlvlaggen beschreven die kunnen worden gebruikt om een ​​handige statusbalk te maken. U zult waarschijnlijk de vlag SBARS_SIZEGRIP het vaakst willen gebruiken, omdat deze ervoor zorgt dat de diagonale arcering in de rechterhoek van de statusbalk verschijnt. De resterende stijlvlaggen wijzigen de initiële status en locatie van de statusbalk, zodat deze zich op een andere locatie kan bevinden dan de onderkant van het clientgebied van het bovenliggende venster, zoals bepaald door de vlag CCS_BOTTOM.

Stijl vlag

Beschrijving

Prestatie

Geeft diagonale arcering weer

rechterhoek van de statusbalk. Dit gebied

gebruikt om het formaat van de ouder te wijzigen

Uitgangspositie

Plaatst de statusbalk bovenaan

oudervenster.

Plaatst de statusbalk onderaan

bovenliggend venster (standaard).

Schakelt beweging ten opzichte van de y-as uit.

Verbod op automatisch

CCS_NOPARENTALIGN

De statusbalk bepaalt de hoogte

maatveranderingen en

(cy). Maar bepaalt de locatie niet

locaties

(x,y) en breedte (cx). Voor de corresponderende

verwerking is noodzakelijk na creatie

stuur een bericht over het formaat wijzigen.

Schakelt alle automatische bewegingen uit en

grootte verandert. Dit verbiedt

de volgende stijlvlaggen: CCS_TOP,

CCS_BOTTOM, CCS_NOMOVEY en

CCS_NOPARENTALIGN. Dat moet je duidelijk doen

stel de grootte en positie van de statusbalk in.

Verplaats de statusbalk en wijzig het formaat ervan

Wanneer het bovenliggende venster van de statusbalk van grootte verandert (bij ontvangst van een WM_SIZE-bericht), moet de statusbalk een nieuwe positie innemen en andere afmetingen aannemen om onderaan het clientgebied van het bovenliggende venster te blijven. De grootte van de werkbalk wordt aangepast als reactie op het bericht TB_AUTOSIZE (zie eerder in dit hoofdstuk). De statusbalk heeft geen soortgelijk bericht. In plaats daarvan wordt zoiets als het volgende gebruikt:

int cxParent = LAAG(lParam); int cyParent = HIWORD(lParam); int x, y, cx, cy;

// Laat de hoogte van het statusbalkvenster ongewijzigd

GetWindowRect(hwndStatusBar, &rWindow); cy = rWindow.bottom - rWindow.top;

y = cyOuder - cy; cx = cxOuder;

MoveWindow(hwndStatusBar, x, y, cx, cy, TRUE);

Deze code houdt de hoogte van de statusbalk ongewijzigd en wijzigt de breedte en locatie zodat deze in het clientgebied van het bovenliggende venster past.

Ondersteuning voor bladeren door menu's

Gebruikers verwachten dat Windows-programma's ondersteunende informatie in de statusbalk weergeven over welke functie een bepaald menu-item vervult. Zelfs de gewone Windows-gebruiker komt er snel achter dat een menu-item van één woord een veel bredere actie verbergt. En hoewel ervaren gebruikers de betekenis van standaardmenuopdrachten gemakkelijk begrijpen, moeten ze soms veel moeite doen om de betekenis van specifieke menu-items voor een bepaald programma te begrijpen.

Een venstermenu verzendt een WM_MENUSELECT-bericht wanneer de gebruiker menu-items bekijkt en een WM_COMMAND-bericht wanneer de gebruiker een menu-item selecteert (zie hoofdstuk 10). Ter ondersteuning van de weergave van ondersteunende informatie over menu-items moet het bericht worden verwerkt

Om het gemakkelijker te maken dit bericht te verwerken en tekst in de statusbalk weer te geven, ondersteunt de bibliotheek met openbare bedieningselementen de MenuHelp-functie. Deze functie gaat uit van een stringtabel die de ondersteunende informatieteksten bevat die moeten worden weergegeven, en een datastructuur die menu-items associeert met tekststring-ID's uit de tabel. De MenuHelp-functie is als volgt gedefinieerd:

De eerste parameter, uMsg , moet gelijk zijn aan WM_MENUSELECT, hoewel de aanwezigheid van deze parameter (en de beschrijving ervan in de Win32-documentatie) suggereert dat de verwerking van het WM_COMMAND-bericht was inbegrepen toen de functie werd ontworpen. De parameters wParam en lParam van de vensterprocedure worden doorgegeven als de tweede en derde parameter. Deze drie parameters samen beschrijven welk deel van het menusysteem de gebruiker bekijkt en of het een pop-upmenu-item of een systeemmenu-item is.

De zesde parameter, hwndStatus, is een ingang voor het statusbalkvenster. De MenuHelp-functie verzendt een statusbalkspecifiek SB_SIMPLE-bericht om de statusbalk in te stellen op een enkel venster (eenvoudig) en de bijbehorende tekst weer te geven. Later, wanneer de gebruiker stopt met browsen, verzendt de MenuHelp-functie nog een SB_SIMPLE-bericht om de statusbalk terug te zetten naar de modus met meerdere vensters (niet-eenvoudig).

De MenuHelp-functie gebruikt drie andere parameters (hMainMenu, hInst en lpwIDs) om te bepalen welke regel moet worden weergegeven bij het bekijken van een menu-item. De parameter hInst identificeert de module, die een DLL-instancehandle of een uitvoerbare programma-instancehandle kan zijn, en is de eigenaar van de tabel met de menureeksen (waarvan u kunt aannemen dat deze zijn geladen met behulp van de LoadString-functie).

De manier om de MenuHelp-functie correct te laten werken, is door de juiste waarde door te geven in de vierde en zevende parameters: hMainMenu en lpwIDs . Het correct instellen van deze waarden is een beetje een gimmick, aangezien er drie elementen zijn waarmee rekening moet worden gehouden: het opdrachtmenu, het pop-upmenu en het systeemmenu. Een andere complicatie is dat in de Win32-documentatie staat dat lpwIDs een array is die door de MenuHelp-functie wordt doorzocht. Hoewel het zinvol is om een ​​array te gebruiken om de onderliggende waarden van stringbronnen op te slaan, zul je de array zelf moeten parseren aangezien de MenuHelp-functie dit niet doet.

Menu-items bekijken

De functie MenuHelp berekent de tekenreeksbron-ID voor een menu-item door de opdracht-ID-waarde (afgeleid van het lage woord van wParam ) toe te voegen aan de waarde waarnaar wordt verwezen door lpwIDs . De volgende MenuHelp-functieaanroep geeft bijvoorbeeld het stringbronnummer 125 weer in de statusbalk:

UINT uiStringBase = 100; WPARAM wParam = 25;

MenuHelp(WM_MENUSELECT, wParam, lParam, NULL, hInst, hwndStatus, &uiStringBase);

Zoals in het voorbeeld wordt getoond, kan de menuhandle hMainMenu NULL zijn om opdrachtmenu-items weer te geven, omdat de MenuHelp-functie deze waarde niet gebruikt voor berekeningen.

De eenvoudigste manier om opdrachtmenu-items en tekenreeksbronnen op elkaar af te stemmen, is door ze dezelfde waarden te geven. Hierdoor wordt de basis van de rij op nul gezet en wordt deze genegeerd.

Bekijk pop-upmenu-items

In het geval van een pop-upmenu berekent de functie MenuHelp de bronreeks die moet worden weergegeven in de statusbalk door de (op nul gebaseerde) index van het pop-upmenu toe te voegen aan de waarde waarnaar wordt verwezen door lpwIDs . Om dit correct te laten werken, moet de vierde parameter van de MenuHelp-functie, hMainMenu, worden ingesteld op de handle van het bovenliggende pop-upmenu van het venster. De onderstaande structuur biedt een handige manier om menuhandvatten toe te wijzen aan een stringresourcebasis:

typedef struct-tagPOPUPSTRING

HMENU hMenu; UINT uiString;

In het programma GADGETS, waarin drie menu-items pop-upmenu's bevatten, is deze datastructuur als volgt gedefinieerd:

POPUPSTRING popstr;

en wordt als volgt geïnitialiseerd wanneer de statusregel wordt aangemaakt:

GetMenu(hwndParent);

IDS_MAIN_MENU;

GetSubMenu(hHoofdmenu, 2);

IDS_TOOLBAR_MENU;

GetSubMenu(hHoofdmenu, 3);

IDS_STATUSBAR_MENU;

Wanneer een WM_MENUSELECT-bericht wordt ontvangen, bevat de parameter lParam de menuhandle van het bovenliggende venster. De taak van de MenuHelp-functie om de juiste tekenreeksbron te vinden, vereist dat u de array doorzoekt en het adres als laatste parameter doorgeeft aan de MenuHelp-functie. Hieronder ziet u hoe dit wordt geïmplementeerd in het GADGETS-programma:

if((fuFlags & MF_POPUP) &&(!(fuFlags & MF_SYSMENU)))

voor(iMenu = 1; iMenu< MAX_MENUS; iMenu++)

Om dit correct te laten werken, moet hMainMenu worden ingesteld op de waarde van de hoofdmenu-handle van het pop-upmenu. Terwijl we aan het kijken waren naar het omgaan met onze pop-upmenu's, vergaten we het systeemmenu volledig.

Het systeemmenu bekijken

De MenuHelp-functie biedt een statusbalkweergave met helpinformatie voor het systeemmenu en systeemmenu-items. Het enige dat hiervoor nodig is, zijn de WM_MENUSELECT-berichtparameters wParam en lParam in dezelfde vorm als voor andere soorten menu-items. Bovendien mag de waarde van hMainMenu niet gelijk zijn aan de daadwerkelijke systeemmenu-handle; NULL is redelijk geschikt.

Laten we nu al deze fragmenten combineren voor menu-items, pop-upmenu's en het systeemmenu. De volgende code illustreert hoe het GADGETS-programma het WM_MENUSELECT-bericht verwerkt om ondersteunende informatie in de statusbalk weer te geven:

LRESULT Statusbar_MenuSelect (HWND hwnd, WPARAM wParam, LPARAM lParam)

UINT fuFlags =(UINT) HIWORD(wParam); HMENU hMainMenu = NULL;

// Behandel niet-systeem pop-upmenu's if((fuFlags & MF_POPUP) &&(!(fuFlags & MF_SYSMENU)))

voor(iMenu = 1; iMenu< MAX_MENUS; iMenu++)

if((HMENU) lParam == popstr.hMenu)

hHoofdmenu =(HMENU)lParam; pauze;

// Geef aanvullende informatie weer in de statusbalk

MenuHelp(WM_MENUSELECT, wParam, lParam, hMainMenu, hInst, hwndStatusBar, &((UINT) popstr.hMenu));