Gestione della Guida online
La Guida online può venire in un'ampia gamma di forme, dalle informazioni concettuali dettagliate alle definizioni rapide. In questo argomento sono contenute le sezioni seguenti.
Informazioni sulla Guida
Un elemento importante di un'applicazione intuitiva è facilmente disponibile nella Guida online. Windows fornisce funzioni e messaggi che, se usati in combinazione con l'applicazione Guida di Windows, semplificano l'implementazione della Guida online nell'applicazione. Questa panoramica illustra gli elementi di Windows che supportano la Guida online. Descrive come usare questi elementi per fornire agli utenti un mezzo per richiedere assistenza e spiega come usare l'applicazione Della Guida di Windows per visualizzare la Guida.
Richieste di Guida
La maggior parte delle applicazioni basate su Windows fornisce informazioni della Guida online in un'ampia gamma di forme, che vanno dalla guida concettuale che spiega lo scopo delle funzionalità di un'applicazione alla guida popup che fornisce definizioni rapide di singoli elementi nell'interfaccia utente dell'applicazione. Si usano funzioni e messaggi per offrire agli utenti diversi modi per richiedere l'accesso a queste informazioni. Le sezioni seguenti descrivono queste richieste della Guida.
Menu Guida
La maggior parte delle applicazioni consente agli utenti di accedere alle informazioni della Guida includendo un menu ? nella finestra principale. Quando l'utente seleziona una voce da un menu ? , la routine della finestra corrispondente riceve un messaggio WM_COMMAND che identifica l'elemento selezionato. L'applicazione risponde visualizzando le informazioni della Guida appropriate, ad esempio un elenco di argomenti della Guida, un indice o un'introduzione all'applicazione.
Guida dalla tastiera
Windows consente all'utente di accedere alle informazioni della Guida dalla tastiera notificando all'applicazione ogni volta che l'utente preme il tasto F1. Il sistema invia un messaggio WM_HELP alla finestra con lo stato attivo della tastiera quando l'utente ha premuto il tasto. Se la finestra è una finestra figlio, ad esempio un controllo in una finestra di dialogo, la funzione DefWindowProc passa il messaggio alla finestra padre. Se un menu è attivo quando si preme F1, il sistema invia il messaggio alla finestra associata al menu. L'applicazione risponde visualizzando le informazioni della Guida associate alla finestra, al controllo o al menu con lo stato attivo o attivo. Ad esempio, se l'utente seleziona un controllo in una finestra di dialogo e preme F1, l'applicazione visualizza le informazioni della Guida per tale controllo.
Il parametro lParam di WM_HELP è un puntatore a una struttura HELPINFO che contiene informazioni dettagliate sull'elemento per cui viene richiesta la Guida. Queste informazioni vengono utilizzate per determinare l'argomento della Guida da visualizzare. La struttura HELPINFO include anche le coordinate del cursore del mouse al momento in cui l'utente ha premuto il tasto. È possibile utilizzare queste informazioni per fornire assistenza in base alla posizione del cursore del mouse.
Guida dal mouse
Windows consente all'utente di accedere alle informazioni del mouse notificando all'applicazione ogni volta che l'utente fa clic sul pulsante destro del mouse o fa clic su una finestra, un controllo o un menu dopo aver fatto clic sul pulsante Domanda (?). L'applicazione risponde visualizzando le informazioni della Guida associate alla finestra, al controllo o al menu specificati.
Il sistema invia un messaggio WM_CONTEXTMENU quando l'utente fa clic sul pulsante destro del mouse. La finestra selezionata riceve il messaggio. Se la finestra è una finestra figlio, ad esempio un controllo, la funzione DefWindowProc passa il messaggio alla finestra padre. Il messaggio WM_CONTEXTMENU specifica le coordinate del cursore del mouse. La coordinata x si trova nella parola in ordine basso del parametro lParam e la coordinata y si trova nella parola di ordine elevato. Se l'utente ha fatto clic su un controllo, il parametro wParam è l'handle per il controllo che ha ricevuto il clic.
Il sistema invia un messaggio di WM_HELP quando l'utente fa clic su un elemento in una finestra dopo aver fatto clic sul pulsante Domanda (?) visualizzato nella barra del titolo della finestra. È possibile aggiungere un pulsante Domanda a una barra del titolo specificando lo stile WS_EX_CONTEXTHELP nella funzione CreateWindowEx durante la creazione della finestra. Il parametro lParam di WM_HELP è un puntatore a una struttura HELPINFO che contiene informazioni dettagliate sull'elemento per cui viene richiesta la Guida, incluse le coordinate del cursore del mouse al momento in cui l'utente ha fatto clic sul pulsante del mouse.
Il pulsante Domanda è consigliato solo per l'uso nelle finestre di dialogo. In passato, le applicazioni hanno fornito l'accesso utente alle informazioni della Guida su una finestra di dialogo fornendo un pulsante ? nella finestra di dialogo. Questo metodo non è più consigliato. Usare invece il pulsante Domanda.
Visualizzazione della Guida e Guida di Windows
Quando un'applicazione riceve una richiesta di assistenza, deve visualizzare le informazioni della Guida appropriate. Poiché l'applicazione Guida di Windows fornisce un'interfaccia utente coerente, è consigliabile che le applicazioni usino la Guida di Windows anziché altri metodi. Per indirizzare la Guida di Windows a visualizzare le informazioni della Guida, un'applicazione usa la funzione WinHelp , specificando dettagli quali le informazioni da visualizzare e il formato della finestra in cui visualizzarla. Le sezioni seguenti illustrano come usare WinHelp per visualizzare le informazioni della Guida.
file della Guida
Per visualizzare le informazioni della Guida, è necessario specificare un file della Guida quando si chiama la funzione WinHelp . Il file della Guida deve avere il formato di file della Guida di Windows (con estensione hlp) e uno o più argomenti. Ogni argomento è un'unità distinta di informazioni, ad esempio una descrizione concettuale, un set di istruzioni, un'immagine, una definizione di glossario e così via. Gli argomenti devono essere identificati in modo univoco in modo che la Guida di Windows possa individuarli ogni volta che vengono richiesti. Internamente, la Guida di Windows usa gli identificatori di argomento per individuare gli argomenti, ma le applicazioni usano più spesso identificatori di contesto (valori integer univoci) per specificare gli argomenti da visualizzare. L'autore del file della Guida deve eseguire il mapping esplicito degli identificatori di contesto agli identificatori di argomento nella sezione [MAP] del file di progetto usato per compilare il file della Guida.
Quando si specifica un file della Guida ma non si specifica un percorso, WinHelp cerca il file della Guida nella directory della Guida o in una directory specificata dalla variabile di ambiente PATH. Inoltre, WinHelp può trovare un file della Guida il cui nome è elencato nel seguente percorso del Registro di sistema:
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
Help
Per sfruttare i vantaggi del Registro di sistema, è necessario creare un nome di valore con lo stesso nome del file della Guida. Il valore assegnato a tale nome deve essere la directory in cui si trova il file della Guida.
Se WinHelp non riesce a trovare il file della Guida specificato, viene visualizzata una finestra di dialogo che consente all'utente di specificare il percorso del file della Guida. Poiché WinHelp salva le informazioni sulla posizione nel Registro di sistema, non richiede di nuovo il percorso dello stesso file della Guida.
Per altre informazioni su come creare e compilare un file della Guida, vedere la documentazione fornita con gli strumenti di sviluppo.
Avvio della Guida di Windows
Nell'esempio seguente viene usata la funzione WinHelp per avviare l'applicazione Guida di Windows e aprire il file della Guida nel relativo argomento Contenuto.
HWND hwnd; // main window handle
BOOL bResult // for checking Boolean function result
bResult = WinHelp(hWnd, "WINNT.HLP", HELP_CONTENTS, 0L);
In questo esempio seguente viene aperto il file della Guida dell'utente, viene eseguita la ricerca dell'argomento associato a una stringa di parole chiave e quindi viene visualizzato l'argomento.
HWND hwnd; // main window handle
BOOL bResult // for checking Boolean function result
bResult = WinHelp(hWnd, "WINNT.HLP", HELP_KEY, (DWORD) "finding topics");
Finestra di dialogo Argomenti della Guida
È possibile visualizzare la finestra di dialogo Argomenti della Guida chiamando la funzione WinHelp con il comando HELP_FINDER . La finestra di dialogo Argomenti della Guida consente all'utente di selezionare gli argomenti da visualizzare visualizzando i titoli degli argomenti, le parole chiave associate agli argomenti o le parole e le frasi presenti negli argomenti. Le applicazioni visualizzano in genere questa finestra di dialogo quando l'utente sceglie un comando, ad esempio Argomenti della Guida, dal menu ? Un'applicazione può anche visualizzare questa finestra di dialogo se l'utente preme il tasto quando non è attiva alcuna finestra, controllo o menu specifico nell'applicazione.
In passato, le applicazioni hanno usato i comandi HELP_CONTENTS e HELP_INDEX con la funzione WinHelp per visualizzare l'argomento Contenuto e l'indice delle parole chiave del file della Guida. Questi comandi non sono più consigliati. Usare invece il comando HELP_FINDER .
Argomenti relativi alle informazioni
È possibile visualizzare un argomento specifico chiamando la funzione WinHelp con il comando HELP_CONTEXT e specificando l'identificatore di contesto per l'argomento. Le applicazioni usano in genere il comando HELP_CONTEXT in risposta alle richieste degli utenti per argomenti contenenti informazioni concettuali o guida procedurali anziché informazioni su un controllo o un menu specifico. In questi casi, l'utente può continuare a esplorare il file della Guida cercando informazioni correlate prima di tornare all'applicazione.
Il comando HELP_CONTEXT richiama un'istanza regolare della Guida di Windows, consentendo all'utente di trovare altri argomenti nel file della Guida. Visualizza in genere la finestra principale della Guida, che include una barra del titolo, un menu di sistema, pulsanti di riduzione e ingrandimento, un menu principale, una barra di spostamento facoltativa, un bordo di ridimensionamento e un'area client. Il testo dell'argomento selezionato viene visualizzato nell'area client e l'utente può spostarsi attraverso il file della Guida usando i collegamenti rapidi o i pulsanti di spostamento nella finestra principale. L'istanza regolare della Guida di Windows può essere usata anche per visualizzare la Guida in una o più finestre secondarie anziché nella finestra principale.
Argomenti popup
È possibile visualizzare un argomento popup contenente informazioni per un controllo o un menu specifico chiamando la funzione WinHelp con il comando HELP_WM_HELP o HELP_CONTEXTMENU. Questi comandi visualizzano un argomento in una finestra popup accanto al controllo o al menu corrispondente. Per consentire all'utente di tornare immediatamente al lavoro nell'applicazione, la finestra popup viene eliminata definitivamente non appena l'utente preme un tasto o fa clic sul pulsante sinistro del mouse.
Usare il comando HELP_WM_HELP durante l'elaborazione dei messaggi WM_HELP per le finestre di controllo. Poiché la maggior parte dei controlli passa il messaggio WM_HELP alla funzione DefWindowProc , la routine della finestra di dialogo corrispondente (o la routine della finestra padre) elabora questo messaggio. Anziché assegnare un identificatore di contesto specifico, la routine della finestra di dialogo deve passare una matrice di coppie di identificatori di controllo e contesto a WinHelp insieme all'handle di controllo specificato nel membro hItemHandle della struttura HELPINFO passato con il messaggio WM_HELP . La funzione determina l'identificatore del controllo per il quale è stato generato il messaggio WM_HELP e usa l'identificatore di contesto corrispondente per visualizzare l'argomento appropriato.
Usare il comando HELP_CONTEXTMENU durante l'elaborazione dei messaggi WM_CONTEXTMENU . Poiché la maggior parte dei controlli passa il messaggio WM_CONTEXTMENU alla funzione DefWindowProc , la routine della finestra di dialogo corrispondente (o la routine della finestra padre) elabora questo messaggio. La procedura specifica una matrice di coppie di identificatori di controllo e contesto; specifica anche l'handle nel parametro wParam quando si chiama WinHelp in modo che la funzione possa selezionare l'identificatore di contesto appropriato dalla matrice e visualizzare l'argomento appropriato. A differenza del comando HELP_WM_HELP, HELP_CONTEXTMENU visualizza prima un comando What's This? in un menu. Se l'utente sceglie il comando, WinHelp visualizza l'argomento. In caso contrario, la richiesta viene annullata.
È anche possibile visualizzare gli argomenti popup usando il comando HELP_CONTEXTPOPUP e specificando un identificatore di contesto dell'argomento. Questo comando è simile al comando HELP_CONTEXT, ma richiama l'istanza popup di Windows Help usata da HELP_WM_HELP e HELP_CONTEXTMENU. Le applicazioni possono usare questo comando in risposta ai messaggi WM_HELP per visualizzare la Guida per i menu e per le finestre che non sono controlli in una finestra di dialogo. Per usare questo comando in modo più efficace, l'applicazione deve assegnare identificatori di contesto a questi menu e finestre.
È possibile assegnare un identificatore di contesto a qualsiasi finestra o menu nell'applicazione. Quando viene generato un messaggio WM_HELP , il sistema include l'identificatore di contesto nella struttura HELPINFO passata alla finestra padre nel messaggio WM_HELP . La finestra padre può quindi passare l'identificatore di contesto a WinHelp per visualizzare l'argomento della Guida richiesta.
Si usa la funzione SetWindowContextHelpId per assegnare un identificatore di contesto a una finestra o a un controllo e la funzione SetMenuContextHelpId per assegnare un identificatore di contesto a un menu. È possibile recuperare l'identificatore di contesto per una finestra o un menu usando la funzione GetWindowContextHelpId o GetMenuContextHelpId .
Ricerche di parole chiave
È possibile abilitare l'utente per trovare e visualizzare gli argomenti assegnando parole chiave agli argomenti nel file della Guida. Una parola chiave è semplicemente una stringa associata a uno o più argomenti. La Guida di Windows raccoglie tutte le parole chiave in un file della Guida, le inserisce in una tabella e le visualizza nell'elenco Indice della finestra di dialogo Argomenti della Guida . Quando l'utente seleziona una parola chiave, La Guida di Windows visualizza l'argomento della Guida associato o, se è presente più argomenti associati alla parola chiave, visualizza un elenco di argomenti da cui è possibile scegliere l'utente.
In un'applicazione è possibile usare il comando HELP_KEY, HELP_PARTIALKEY o HELP_MULTIKEY con la funzione WinHelp per cercare e visualizzare gli argomenti della Guida in base a parole chiave intere o parziali. Specificare il comando, la stringa della parola chiave, il file della Guida e l'handle nella finestra del proprietario. In tutti i casi, se viene trovata una singola corrispondenza, WinHelp visualizza l'argomento corrispondente. Se vengono trovate più corrispondenze, la funzione visualizza la finestra di dialogo Argomenti trovati e l'utente può scegliere quale argomento visualizzare. Se non viene trovata alcuna corrispondenza, WinHelp visualizza l'elenco Indice (per HELP_KEY e HELP_PARTIALKEY) o visualizza un messaggio di errore (per HELP_MULTIKEY).
L'applicazione può cercare più parole chiave in una singola chiamata a WinHelp separando le parole chiave con punti e virgola. La ricerca di più parole chiave non è supportata per i file della Guida creati per Windows versione 3. x) Può anche cercare parole chiave in più file della Guida se il file della Guida specificato ha un file di contenuto (.cnt) che contiene comandi :Index o :Link. Con il comando HELP_KEY , WinHelp cerca parole chiave in tutti i file specificati da questi comandi. Con i comandi HELP_MULTIKEY e HELP_PARTIALKEY, la funzione esegue la ricerca di tutti i file tranne quelli specificati dai comandi :Link.
Per impostazione predefinita, Windows Help riconosce solo la tabella delle parole chiave identificata dal carattere della nota a piè di pagina K nel file di origine della Guida. È possibile indirizzare Windows Help per creare tabelle di parole chiave aggiuntive aggiungendo un carattere a piè di pagina diverso da K, con la definizione della parola chiave, nel file di origine della Guida. Il carattere a piè di pagina A, tuttavia, è riservato. È necessario definire eventuali tabelle di parole chiave aggiuntive usando istruzioni MULTIKEY nella sezione [OPTIONS] del file di progetto durante la compilazione del file della Guida.
Un'applicazione può usare il comando HELP_SETINDEX con la funzione WinHelp per indirizzare La Guida di Windows per visualizzare una tabella di parole chiave diversa da K nell'elenco Indice. Per indirizzare La Guida di Windows per cercare una parola chiave in una tabella di parole chiave alternativa, un'applicazione può usare il comando HELP_MULTIKEY. Specificare la parola chiave e la tabella delle parole chiave in una struttura MULTIKEYHELP , che si passa a WinHelp.
Quando WinHelp visualizza un argomento, lo visualizza nella finestra specificata dalla nota a piè di pagina ">" per l'argomento, nella finestra specificata dal comando :Base nel file di contenuto o nella finestra principale. Se la finestra principale è già aperta a un file di guida diverso quando si chiama WinHelp, la funzione nasconde la finestra principale durante la ricerca. In questo caso, annullare le finestre di dialogo Argomenti trovati e Argomenti della Guida chiude la finestra principale.
Finestre della Guida secondaria
La finestra principale dell'applicazione Guida di Windows è denominata finestra primaria. La Guida di Windows può anche visualizzare gli argomenti della Guida in una finestra secondaria. A differenza della finestra della Guida primaria, una finestra secondaria non contiene una barra dei menu. È possibile includere una barra di spostamento in una finestra secondaria e aggiungere pulsanti alla barra. È anche possibile scegliere di modificare automaticamente l'altezza della finestra secondaria per soddisfare l'argomento.
È necessario definire le finestre secondarie nella sezione [WINDOWS] del file di progetto della Guida, specificando il nome e, facoltativamente, le dimensioni iniziali e la posizione di ogni finestra. È possibile indirizzare l'applicazione Guida di Windows per visualizzare un argomento in una finestra secondaria aggiungendo una parentesi angolare (>) e il nome definito per la finestra secondaria al nome del file della Guida. La stringa risultante viene quindi passata alla funzione WinHelp .
Un'applicazione può modificare le dimensioni e la posizione di una finestra primaria o secondaria specificando l'indirizzo di una struttura HELPWININFO e il comando HELP_SETWINPOS in una chiamata a WinHelp. HELPWININFO specifica il nome della finestra e la nuova dimensione e la sua posizione.
Guida alla scheda di training
Usando la guida della scheda di training, un'applicazione può visualizzare una sequenza di istruzioni per guidare l'utente attraverso i passaggi di un'attività. Una scheda di training è in genere costituita da testo che spiega un determinato passaggio e pulsanti associati alle macro TCard, che consentono all'utente di indicare all'applicazione cosa fare di seguito. Le schede di training possono essere visualizzate solo nelle finestre secondarie e non devono contenere collegamenti ad altri argomenti nel file della Guida.
Un'applicazione avvia l'istanza della scheda di training di Windows Help chiamando la funzione WinHelp e specificando il comando HELP_TCARD in combinazione con un altro comando, ad esempio HELP_CONTEXT. Successivamente, quando l'utente fa clic su un pulsante nella scheda di training, fa clic su un punto frequente assegnato alla macro TCard o chiude la scheda di training, Windows Help notifica all'applicazione inviando un messaggio di WM_TCARD . Il parametro wParam identifica il pulsante o l'azione dell'utente e il parametro lParam contiene dati aggiuntivi, il significato del quale dipende dal valore di wParam.
Annullamento della Guida
La Guida di Windows richiede un'applicazione per annullare in modo esplicito la Guida in modo che possa liberare qualsiasi risorsa usata per tenere traccia dell'applicazione e dei relativi file della Guida. L'applicazione può eseguire questa operazione in qualsiasi momento chiamando la funzione WinHelp e specificando il comando HELP_QUIT. Si noti che questo non è vero per l'istanza popup di Windows Help. Un'applicazione non deve provare a chiudere un'istanza popup.
Se un'applicazione ha effettuato chiamate a WinHelp, deve annullare la guida prima di chiudere la finestra principale, ad esempio in risposta al messaggio di WM_DESTROY nella procedura principale della finestra principale. Un'applicazione deve chiamare WinHelp una sola volta per annullare la Guida, indipendentemente dal numero di file della Guida che ha aperto. La Guida di Windows rimane in esecuzione fino a quando tutte le applicazioni o le DLL non hanno annullato la Guida.
Per chiudere l'istanza della scheda di training di Windows Help, è necessario specificare sia i comandi HELP_TCARD che HELP_QUIT quando si chiama WinHelp. Un'applicazione non deve annullare l'istanza della scheda di training di Windows Help se l'utente lo annulla prima. La Guida di Windows notifica a un'applicazione quando l'utente annulla l'istanza della scheda di training inviando il messaggio di WM_TCARD con il parametro wParam impostato su IDCLOSE.
Uso della Guida
Questa sezione illustra come fornire una guida sensibile al contesto per una finestra di dialogo e come impostare l'aspetto di una finestra della Guida secondaria.
- Specifica della Guida in una finestra di dialogo
- Impostazione dell'aspetto di una finestra della Guida secondaria
Specifica della Guida in una finestra di dialogo
Per fornire una guida sensibile al contesto in una finestra di dialogo, è necessario creare una matrice costituita da coppie di valori DWORD . Il primo valore in ogni coppia è l'identificatore di un controllo nella finestra di dialogo e il secondo è l'identificatore di contesto dell'argomento della Guida per il controllo. La matrice deve contenere una coppia di identificatori per ogni controllo nella finestra di dialogo.
La procedura della finestra di dialogo deve elaborare i messaggi di WM_HELP e WM_CONTEXTMENU . La procedura della finestra di dialogo riceve WM_HELP quando l'utente preme il tasto e WM_CONTEXTMENU quando l'utente fa clic sul pulsante destro del mouse.
Il parametro lParam di WM_HELP contiene l'indirizzo di una struttura HELPINFO . Il membro hItemHandle di questa struttura identifica il controllo per il quale l'utente ha richiesto assistenza. È necessario passare questo handle alla funzione WinHelp insieme al comando HELP_WM_HELP, al nome del file della Guida e a un puntatore alla matrice di identificatori. La funzione WinHelp cerca la matrice per l'identificatore di controllo del controllo specificato e quindi recupera l'identificatore di contesto della Guida corrispondente. Successivamente, la funzione passa l'identificatore di contesto della Guida di Guida di Windows, che trova l'argomento corrispondente e lo visualizza in una finestra popup. Se il controllo ha un identificatore di -1, il sistema cerca il controllo successivo che è una tabulazione e quindi usa l'identificatore per trovare l'identificatore del contesto della Guida. Per questo motivo, è importante inserire testo statico prima dei controlli in un file di risorse.
Quando si chiama la funzione WinHelp , l'elaborazione WM_CONTEXTMENU è simile all'elaborazione WM_HELP con queste due eccezioni:
- Si passa il parametro wParam da WM_CONTEXTMENU, ovvero l'handle al controllo che ha inviato il messaggio.
- Specificare il comando HELP_CONTEXTMENU anziché HELP_WM_HELP.
Il comando HELP_CONTEXTMENU causa la visualizzazione di un menu della Guida di Windows prima di visualizzare l'argomento della Guida. Il menu è definito dal sistema. Consente all'utente di visualizzare la Guida per il controllo o di visualizzare la finestra di dialogo Argomenti della Guida .
Nell'esempio seguente viene illustrato come implementare la Guida sensibile al contesto in una finestra di dialogo.
LRESULT CALLBACK EditDlgProc(HWND hwndDlg, UINT uMsg,
WPARAM wParam, LPARAM lParam)
{
// Create an array of control identifiers and context identifiers.
static DWORD aIds[ ] =
{
ID_SAVE, IDH_SAVE,
ID_DELETE, IDH_DELETE,
ID_COPY, IDH_COPY,
ID_PASTE, IDH_PASTE,
0,0
};
switch (uMsg)
{
case WM_HELP:
WinHelp(((LPHELPINFO)lParam)->hItemHandle, "helpfile.hlp",
HELP_WM_HELP, (DWORD)(LPSTR)aIds);
break;
case WM_CONTEXTMENU:
WinHelp((HWND)wParam, "helpfile.hlp", HELP_CONTEXTMENU,
(DWORD)(LPVOID)aIds);
break;
// Process other messages here.
}
return FALSE;
}
Impostazione dell'aspetto di una finestra della Guida secondaria
Un'applicazione può impostare le dimensioni, la posizione e mostrare lo stato di una finestra della Guida secondaria passando il comando HELP_SETWINPOS e l'indirizzo di una struttura HELPWININFO alla funzione WinHelp . I membri di HELPWININFO specificano il nome della finestra per modificare e le nuove dimensioni, la posizione e visualizzare lo stato della finestra.
Nell'esempio seguente viene impostata l'aspetto di una finestra secondaria denominata "wnd_menu". Il nome deve essere definito nella sezione [WINDOWS] del file di progetto della Guida.
BOOL DoWindowSize(VOID)
{
HANDLE hhwi;
LPHELPWININFO lphwi;
WORD wSize;
char *szWndName = "wnd_menu";
size_t NameLength; // Does not include the terminating null character
HRESULT hr
BOOL retval;
hr = StringCbLengthA(szWndName, STRSAFE_MAX_CCH, &NameLength);
if (SUCCEEDED(hr))
{
// Add 1 to account for the name string's terminating null character.
NameLength++;
// The HELPWININFO structure contains a minimal TCHAR array of size [2]
// that is used for the window name. Since sizeof(HELPWININFO)
// includes those two TCHARS, they must be subtracted from the
// total when adding the actual string length to calculate the
// size of the structure.
wSize = sizeof(HELPWININFO) - 2 + NameLength;
}
else
// Something's amiss with the string.
return FALSE;
hhwi = GlobalAlloc(GHND, wSize);
lphwi = (LPHELPWININFO)GlobalLock(hhwi);
lphwi->wStructSize = wSize;
lphwi->x = 256; // horizontal position
lphwi->y = 256; // vertical position
lphwi->dx = 767; // width
lphwi->dy = 512; // height
lphwi->wMax = SW_SHOW; // show the window
// secondary window
hr = StringCbCopyA(lphwi->rgchMember, sizeof(lphwi->rgchMember), szWndName);
if (SUCCEEDED(hr))
{
WinHelp(hwnd, "myhelp.hlp", HELP_SETWINPOS, (DWORD)lphwi);
GlobalUnlock(hhwi);
GlobalFree(hhwi);
return TRUE;
}
else
// There was a problem copying the window name.
return FALSE;
}