Partager via


Gestion de l’aide en ligne

L’aide en ligne peut se présenter sous différentes formes, des informations conceptuelles détaillées aux définitions rapides. Cette rubrique contient les sections suivantes.

À propos de l’aide

Un élément important d’une application conviviale est facilement disponible dans l’aide en ligne. Windows fournit des fonctions et des messages qui, lorsqu’ils sont utilisés conjointement avec l’application d’aide Windows, facilitent l’implémentation de l’aide en ligne dans votre application. Cette vue d’ensemble décrit les éléments de Windows qui prennent en charge l’aide en ligne. Il explique comment utiliser ces éléments pour donner aux utilisateurs un moyen de demander de l’aide et explique comment utiliser l’application d’aide Windows pour afficher de l’aide.

Demandes d’aide

La plupart des applications Windows fournissent des informations d’aide en ligne sous diverses formes, allant de l’aide conceptuelle qui explique l’objectif des fonctionnalités d’une application à l’aide contextuelle qui fournit des définitions rapides d’éléments individuels dans l’interface utilisateur de l’application. Vous utilisez des fonctions et des messages pour permettre aux utilisateurs de demander l’accès à ces informations. Les sections suivantes décrivent ces demandes d’aide.

Menu aide

La plupart des applications fournissent à l’utilisateur l’accès aux informations d’aide en incluant un menu Aide dans la fenêtre main. Lorsque l’utilisateur sélectionne un élément dans un menu Aide , la procédure de fenêtre correspondante reçoit un message WM_COMMAND qui identifie l’élément sélectionné. L’application répond en affichant les informations d’aide appropriées, telles qu’une liste de rubriques d’aide, un index ou une présentation de l’application.

Aide à partir du clavier

Windows fournit à l’utilisateur l’accès aux informations d’aide à partir du clavier en informant l’application chaque fois que l’utilisateur appuie sur la touche F1. Le système envoie un message WM_HELP à la fenêtre sur laquelle le clavier a été mis au point lorsque l’utilisateur a appuyé sur la touche. Si la fenêtre est une fenêtre enfant (par exemple, un contrôle dans une boîte de dialogue), la fonction DefWindowProc transmet le message à la fenêtre parente. Si un menu est actif lorsque la touche F1 est enfoncée, le système envoie le message à la fenêtre associée au menu. L’application répond en affichant les informations d’aide associées à la fenêtre, au contrôle ou au menu qui a le focus ou qui est actif. Par exemple, si l’utilisateur sélectionne un contrôle dans une boîte de dialogue et appuie sur F1, l’application affiche les informations d’aide pour ce contrôle.

Le paramètre lParam de WM_HELP est un pointeur vers une structure HELPINFO qui contient des informations détaillées sur l’élément pour lequel l’aide est demandée. Vous utilisez ces informations pour déterminer la rubrique d’aide à afficher. La structure HELPINFO inclut également les coordonnées du curseur de la souris au moment où l’utilisateur a appuyé sur la touche. Vous pouvez utiliser ces informations pour fournir de l’aide en fonction de l’emplacement du curseur de la souris.

Aide à partir de la souris

Windows fournit à l’utilisateur l’accès aux informations d’aide à partir de la souris en informant l’application chaque fois que l’utilisateur clique sur le bouton droit de la souris ou clique sur une fenêtre, un contrôle ou un menu après avoir cliqué sur le bouton Question (?). L’application répond en affichant les informations d’aide associées à la fenêtre, au contrôle ou au menu donnés.

Le système envoie un message WM_CONTEXTMENU lorsque l’utilisateur clique sur le bouton droit de la souris. La fenêtre sur laquelle on a cliqué reçoit le message. Si la fenêtre est une fenêtre enfant, telle qu’un contrôle, la fonction DefWindowProc transmet le message à la fenêtre parente. Le message WM_CONTEXTMENU spécifie les coordonnées du curseur de la souris. La coordonnée x se trouve dans le mot d’ordre inférieur du paramètre lParam , et la coordonnée y est dans le mot d’ordre élevé. Si l’utilisateur a cliqué sur un contrôle, le paramètre wParam est le handle du contrôle qui a reçu le clic.

Le système envoie un message WM_HELP lorsque l’utilisateur clique sur un élément dans une fenêtre après avoir cliqué sur le bouton Question (?) qui s’affiche dans la barre de titre de la fenêtre. Vous pouvez ajouter un bouton Question à une barre de titre en spécifiant le style WS_EX_CONTEXTHELP dans la fonction CreateWindowEx lors de la création de la fenêtre. Le paramètre lParam de WM_HELP est un pointeur vers une structure HELPINFO qui contient des informations détaillées sur l’élément pour lequel l’aide est demandée, y compris les coordonnées du curseur de la souris au moment où l’utilisateur a cliqué sur le bouton de la souris.

Il est recommandé d’utiliser le bouton Question uniquement dans les boîtes de dialogue. Dans le passé, les applications fournissaient à l’utilisateur l’accès à des informations d’aide sur une boîte de dialogue en fournissant un bouton d’aide dans la boîte de dialogue. Cette méthode n’est plus recommandée. Utilisez plutôt le bouton Question.

Affichage de l’aide et Aide de Windows

Une fois qu’une application reçoit une demande d’aide, elle doit afficher les informations d’aide appropriées. Étant donné que l’application d’aide Windows fournit une interface utilisateur cohérente, il est recommandé que les applications utilisent l’aide de Windows plutôt que d’autres méthodes. Pour diriger l’aide de Windows pour afficher les informations d’aide, une application utilise la fonction WinHelp , en spécifiant des détails tels que les informations à afficher et la forme de la fenêtre dans laquelle les afficher. Les sections suivantes expliquent comment utiliser WinHelp pour afficher des informations d’aide.

fichiers d'aide

Pour afficher les informations d’aide, vous devez spécifier un fichier d’aide lors de l’appel de la fonction WinHelp . Le fichier d’aide doit avoir le format de fichier Aide Windows (.hlp) et une ou plusieurs rubriques. Chaque rubrique est une unité d’informations distincte, comme une description conceptuelle, un ensemble d’instructions, une image, une définition de glossaire, etc. Les rubriques doivent être identifiées de manière unique afin que l’aide de Windows puisse les localiser chaque fois qu’elles sont demandées. En interne, l’aide de Windows utilise des identificateurs de rubrique pour localiser les rubriques, mais les applications utilisent le plus souvent des identificateurs de contexte (valeurs entières uniques) pour spécifier les rubriques à afficher. L’auteur du fichier d’aide doit mapper explicitement les identificateurs de contexte aux identificateurs de rubrique dans la section [MAP] du fichier projet utilisé pour générer le fichier d’aide.

Lorsque vous spécifiez un fichier d’aide mais que vous ne spécifiez pas de chemin d’accès, WinHelp recherche le fichier d’aide dans le répertoire d’aide ou dans un répertoire spécifié par la variable d’environnement PATH. En outre, WinHelp peut trouver un fichier d’aide dont le nom est répertorié à l’emplacement de Registre suivant :

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            Help

Pour tirer parti du Registre, vous devez créer un nom de valeur portant le même nom que votre fichier d’aide. La valeur affectée à ce nom doit être le répertoire où réside le fichier d’aide.

Si WinHelp ne trouve pas le fichier d’aide donné, il affiche une boîte de dialogue qui permet à l’utilisateur de spécifier l’emplacement du fichier d’aide. Étant donné que WinHelp enregistre les informations d’emplacement dans le Registre, il ne demande pas à nouveau l’emplacement du même fichier d’aide.

Pour plus d’informations sur la création et la création d’un fichier d’aide, consultez la documentation fournie avec vos outils de développement.

Démarrage de l’aide de Windows

L’exemple suivant utilise la fonction WinHelp pour démarrer l’application d’aide Windows et ouvrir le fichier d’aide dans sa rubrique Contenu.

HWND hwnd;     // main window handle 
BOOL bResult   // for checking Boolean function result 

bResult = WinHelp(hWnd, "WINNT.HLP", HELP_CONTENTS, 0L);

Cet exemple suivant ouvre le fichier d’aide utilisateur, recherche dans le fichier la rubrique associée à une chaîne mot clé, puis affiche la rubrique.

HWND hwnd;     // main window handle 
BOOL bResult   // for checking Boolean function result 

bResult = WinHelp(hWnd, "WINNT.HLP", HELP_KEY, (DWORD) "finding topics");

Boîte de dialogue Rubriques d’aide

Vous pouvez afficher la boîte de dialogue Rubriques d’aide en appelant la fonction WinHelp avec la commande HELP_FINDER . La boîte de dialogue Rubriques d’aide permet à l’utilisateur de sélectionner des rubriques à afficher en affichant les titres des rubriques, les mots clés associés aux rubriques ou les mots et expressions trouvés dans les rubriques. Les applications affichent généralement cette boîte de dialogue lorsque l’utilisateur choisit une commande, telle que rubriques d’aide, dans le menu Aide. Une application peut également afficher cette boîte de dialogue si l’utilisateur appuie sur la touche quand aucune fenêtre, contrôle ou menu spécifique de l’application n’a le focus ou n’est actif.

Dans le passé, les applications utilisaient les commandes HELP_CONTENTS et HELP_INDEX avec la fonction WinHelp pour afficher la rubrique Contenu et l’index mot clé du fichier d’aide. Ces commandes ne sont plus recommandées. Utilisez plutôt la commande HELP_FINDER .

Rubriques d’informations

Vous pouvez afficher une rubrique spécifique en appelant la fonction WinHelp avec la commande HELP_CONTEXT et en spécifiant l’identificateur de contexte pour la rubrique. Les applications utilisent généralement la commande HELP_CONTEXT en réponse aux demandes des utilisateurs pour des rubriques contenant des informations conceptuelles ou de l’aide procédurale plutôt que des informations sur un contrôle ou un menu spécifique. Dans ce cas, l’utilisateur peut continuer à parcourir le fichier d’aide à la recherche d’informations connexes avant de revenir à l’application.

La commande HELP_CONTEXT appelle une instance régulière de l’aide de Windows, ce qui permet à l’utilisateur de trouver d’autres rubriques dans le fichier d’aide. Il affiche généralement la fenêtre Aide main, qui comprend une barre de titre, un menu système, des boutons réduire et agrandir, un menu main, une barre de navigation facultative, une bordure de dimensionnement et une zone cliente. Le texte de la rubrique sélectionnée s’affiche dans la zone cliente et l’utilisateur peut parcourir le fichier d’aide à l’aide de liens dynamiques ou de boutons de navigation dans la fenêtre main. Le instance standard de l’aide de Windows peut également être utilisé pour afficher l’aide dans une ou plusieurs fenêtres secondaires au lieu de la fenêtre main.

Rubriques contextuelles

Vous pouvez afficher une rubrique contextuelle qui contient des informations pour un contrôle ou un menu spécifique en appelant la fonction WinHelp avec la commande HELP_WM_HELP ou HELP_CONTEXTMENU. Ces commandes affichent une rubrique dans une fenêtre contextuelle près du contrôle ou du menu correspondant. Pour permettre à l’utilisateur de revenir immédiatement travailler dans l’application, la fenêtre contextuelle est détruite dès que l’utilisateur appuie sur une touche ou clique sur le bouton gauche de la souris.

Vous utilisez la commande HELP_WM_HELP lors du traitement des messages WM_HELP pour les fenêtres de contrôle. Étant donné que la plupart des contrôles transmettent le message WM_HELP à la fonction DefWindowProc , la procédure de boîte de dialogue correspondante (ou la procédure de fenêtre parente) traite ce message. Au lieu de donner un identificateur de contexte spécifique, la procédure de boîte de dialogue doit passer un tableau de paires d’identificateurs de contrôle et de contexte à WinHelp avec le handle de contrôle spécifié dans le membre hItemHandle de la structure HELPINFO passé avec le message WM_HELP . La fonction détermine l’identificateur du contrôle pour lequel le message WM_HELP a été généré et utilise l’identificateur de contexte correspondant pour afficher la rubrique appropriée.

Vous utilisez la commande HELP_CONTEXTMENU lors du traitement des messages WM_CONTEXTMENU . Étant donné que la plupart des contrôles transmettent le message WM_CONTEXTMENU à la fonction DefWindowProc , la procédure de boîte de dialogue correspondante (ou la procédure de fenêtre parente) traite ce message. La procédure spécifie un tableau de paires d’identificateurs de contrôle et de contexte ; il spécifie également le handle dans le paramètre wParam lors de l’appel de WinHelp afin que la fonction puisse sélectionner l’identificateur de contexte approprié dans le tableau et afficher la rubrique appropriée. Contrairement à la commande HELP_WM_HELP, HELP_CONTEXTMENU affiche d’abord une commande Qu’est-ce que c’est ? dans un menu. Si l’utilisateur choisit la commande, WinHelp affiche la rubrique. Sinon, la demande est annulée.

Vous pouvez également afficher des rubriques contextuelles à l’aide de la commande HELP_CONTEXTPOPUP et en spécifiant un identificateur de contexte de la rubrique. Cette commande est similaire à la commande HELP_CONTEXT, mais appelle la instance contextuelle de l’aide windows utilisée par HELP_WM_HELP et HELP_CONTEXTMENU. Les applications peuvent utiliser cette commande en réponse à WM_HELP messages pour afficher de l’aide pour les menus et les fenêtres qui ne sont pas des contrôles dans une boîte de dialogue. Pour utiliser cette commande plus efficacement, l’application doit affecter des identificateurs de contexte à ces menus et fenêtres.

Vous pouvez affecter un identificateur de contexte à n’importe quelle fenêtre ou menu de l’application. Lorsqu’un message WM_HELP est généré, le système inclut l’identificateur de contexte dans la structure HELPINFO qui est passé à la fenêtre parente du message WM_HELP. La fenêtre parente peut ensuite passer l’identificateur de contexte à WinHelp pour afficher la rubrique d’aide demandée.

Vous utilisez la fonction SetWindowContextHelpId pour affecter un identificateur de contexte à une fenêtre ou à un contrôle et la fonction SetMenuContextHelpId pour affecter un identificateur de contexte à un menu. Vous pouvez récupérer l’identificateur de contexte d’une fenêtre ou d’un menu à l’aide de la fonction GetWindowContextHelpId ou GetMenuContextHelpId .

Recherches par mot clé

Vous pouvez permettre à l’utilisateur de rechercher et d’afficher des rubriques en affectant des mots clés aux rubriques dans le fichier d’aide. Un mot clé est simplement une chaîne associée à une ou plusieurs rubriques. L’aide de Windows collecte tous les mots clés d’un fichier d’aide, les place dans un tableau et les affiche dans la liste d’index de la boîte de dialogue Rubriques d’aide . Lorsque l’utilisateur sélectionne un mot clé, l’Aide de Windows affiche la rubrique d’aide associée ou, si plusieurs rubriques sont associées à l’mot clé, affiche une liste de rubriques parmi lesquelles l’utilisateur peut choisir.

Dans une application, vous pouvez utiliser la commande HELP_KEY, HELP_PARTIALKEY ou HELP_MULTIKEY avec la fonction WinHelp pour rechercher et afficher des rubriques d’aide basées sur des mots clés entiers ou partiels. Vous spécifiez la commande, la chaîne mot clé, le fichier d’aide et le handle dans la fenêtre propriétaire. Dans tous les cas, si une seule correspondance est trouvée, WinHelp affiche la rubrique correspondante. Si plusieurs correspondances sont trouvées, la fonction affiche la boîte de dialogue Rubriques trouvées et l’utilisateur peut choisir la rubrique à afficher. Si aucune correspondance n’est trouvée, WinHelp affiche la liste d’index (pour HELP_KEY et HELP_PARTIALKEY) ou affiche un message d’erreur (pour HELP_MULTIKEY).

Votre application peut rechercher plusieurs mots clés dans un seul appel à WinHelp en séparant les mots clés par des points-virgules. (La recherche de plusieurs mots clés n’est pas prise en charge pour les fichiers d’aide créés pour Windows version 3. x) Il peut également rechercher des mots clés dans plusieurs fichiers d’aide si le fichier d’aide spécifié a un fichier contents(.cnt) qui contient les commandes :Index ou :Link. Avec la commande HELP_KEY, WinHelp recherche des mots clés dans tous les fichiers spécifiés par ces commandes. Avec les commandes HELP_MULTIKEY et HELP_PARTIALKEY, la fonction recherche tous les fichiers à l’exception de ceux spécifiés par les commandes :Link.

Par défaut, l’Aide de Windows reconnaît uniquement la table mot clé identifiée par le caractère de note de bas de page K dans le fichier source de l’aide. Vous pouvez demander à l’Aide de Windows de créer des tables mot clé supplémentaires en ajoutant un caractère de note de bas de page autre que K, avec la définition mot clé, dans le fichier source d’aide. (Le caractère de note de bas de page A est toutefois réservé.) Vous devez définir des tables mot clé supplémentaires à l’aide d’instructions MULTIKEY dans la section [OPTIONS] du fichier projet lors de la génération du fichier d’aide.

Une application peut utiliser la commande HELP_SETINDEX avec la fonction WinHelp pour indiquer à l’aide de Windows d’afficher une table mot clé autre que K dans sa liste d’index. Pour diriger l’aide de Windows pour rechercher un mot clé dans une autre table de mot clé, une application peut utiliser la commande HELP_MULTIKEY. Vous spécifiez les mot clé et mot clé table dans une structure MULTIKEYHELP, que vous passez à WinHelp.

Lorsque WinHelp affiche une rubrique, il l’affiche dans la fenêtre spécifiée par la note de bas de page «> » de la rubrique, dans la fenêtre spécifiée par la commande :Base dans le fichier de contenu ou dans la fenêtre main. Si la fenêtre main est déjà ouverte dans un autre fichier d’aide lorsque vous appelez WinHelp, la fonction masque la fenêtre main lors de la recherche. Dans ce cas, l’annulation des boîtes de dialogue Rubriques trouvées et Rubriques d’aide ferme la fenêtre main.

Fenêtres d’aide secondaires

La fenêtre main de l’application Windows Help est appelée fenêtre principale. L’aide de Windows peut également afficher des rubriques d’aide dans une fenêtre secondaire. Contrairement à la fenêtre d’aide principale, une fenêtre secondaire ne contient pas de barre de menus. Vous pouvez inclure une barre de navigation dans une fenêtre secondaire et ajouter des boutons à la barre. Vous pouvez également choisir de faire en sorte que l’Aide de Windows ajuste automatiquement la hauteur de la fenêtre secondaire pour tenir compte de la rubrique.

Vous devez définir des fenêtres secondaires dans la section [WINDOWS] de votre fichier projet d’aide, en fournissant le nom et, éventuellement, la taille et la position initiales de chaque fenêtre. Vous pouvez indiquer à l’application d’aide Windows d’afficher une rubrique dans une fenêtre secondaire en ajoutant un crochet (>) et le nom que vous avez défini pour la fenêtre secondaire au nom du fichier d’aide. La chaîne résultante est ensuite passée à la fonction WinHelp .

Une application peut modifier la taille et la position d’une fenêtre primaire ou secondaire en spécifiant l’adresse d’une structure HELPWININFO et la commande HELP_SETWINPOS dans un appel à WinHelp. HELPWININFO spécifie le nom de la fenêtre, sa nouvelle taille et sa nouvelle position.

Aide carte formation

À l’aide de la formation carte de l’aide, une application peut afficher une séquence d’instructions pour guider l’utilisateur tout au long des étapes d’une tâche. Un carte d’entraînement se compose généralement de texte expliquant une étape particulière et de boutons associés aux macros TCard, qui permettent à l’utilisateur d’indiquer à l’application ce qu’il faut faire ensuite. Les cartes de formation ne peuvent être affichées que dans les fenêtres secondaires et ne doivent pas contenir de liens vers d’autres rubriques dans le fichier d’aide.

Une application lance l’carte instance d’entraînement de l’Aide windows en appelant la fonction WinHelp et en spécifiant la commande HELP_TCARD en combinaison avec une autre commande, telle que HELP_CONTEXT. Par la suite, lorsque l’utilisateur clique sur un bouton dans le carte d’apprentissage, clique sur un point chaud affecté à la macro TCard ou ferme le carte d’entraînement, l’Aide de Windows avertit l’application en lui envoyant un message WM_TCARD. Le paramètre wParam identifie le bouton ou l’action utilisateur, et le paramètre lParam contient des données supplémentaires, dont la signification dépend de la valeur de wParam.

Annulation de l’aide

L’aide de Windows nécessite qu’une application annule explicitement l’aide afin qu’elle puisse libérer toutes les ressources utilisées pour effectuer le suivi de l’application et de ses fichiers d’aide. L’application peut le faire à tout moment en appelant la fonction WinHelp et en spécifiant la commande HELP_QUIT. Notez que cela n’est pas vrai pour la fenêtre contextuelle instance de l’aide de Windows. Une application ne doit pas essayer de fermer une instance contextuelle.

Si une application a effectué des appels à WinHelp, elle doit annuler l’aide avant de fermer sa fenêtre de main (par exemple, en réponse au message WM_DESTROY dans la procédure de fenêtre main). Une application ne doit appeler WinHelp qu’une seule fois pour annuler l’aide, quel que soit le nombre de fichiers d’aide qu’elle a ouverts. L’aide de Windows reste en cours d’exécution jusqu’à ce que toutes les applications ou DLL aient annulé l’aide.

Pour fermer l’carte instance d’entraînement de l’Aide Windows, vous devez spécifier les commandes HELP_TCARD et HELP_QUIT lors de l’appel de WinHelp. Une application n’a pas besoin d’annuler l’carte instance d’entraînement de l’aide windows si l’utilisateur l’annule d’abord. L’aide de Windows avertit une application lorsque l’utilisateur annule la carte instance d’entraînement en envoyant le message WM_TCARD avec le paramètre wParam défini sur IDCLOSE.

Utilisation de l'aide

Cette section montre comment fournir une aide contextuelle pour une boîte de dialogue et comment définir l’apparence d’une fenêtre d’aide secondaire.

Aide dans une boîte de dialogue

Pour fournir une aide contextuelle dans une boîte de dialogue, vous devez créer un tableau composé de paires de valeurs DWORD . La première valeur de chaque paire est l’identificateur d’un contrôle dans la boîte de dialogue, et la seconde est l’identificateur de contexte de la rubrique d’aide pour le contrôle. Le tableau doit contenir une paire d’identificateurs pour chaque contrôle dans la boîte de dialogue.

La procédure de boîte de dialogue doit traiter les messages WM_HELP et WM_CONTEXTMENU . La procédure de boîte de dialogue reçoit WM_HELP lorsque l’utilisateur appuie sur la touche et WM_CONTEXTMENU lorsqu’il clique sur le bouton droit de la souris.

Le paramètre lParam de WM_HELP contient l’adresse d’une structure HELPINFO . Le membre hItemHandle de cette structure identifie le contrôle pour lequel l’utilisateur a demandé de l’aide. Vous devez passer ce handle à la fonction WinHelp avec la commande HELP_WM_HELP, le nom de votre fichier d’aide et un pointeur vers le tableau d’identificateurs. La fonction WinHelp recherche dans le tableau l’identificateur de contrôle du contrôle spécifié, puis récupère l’identificateur de contexte d’aide correspondant. Ensuite, la fonction transmet l’identificateur de contexte d’aide à l’aide de Windows, qui recherche la rubrique correspondante et l’affiche dans une fenêtre contextuelle. Si le contrôle a un identificateur de -1, le système recherche le contrôle suivant qui est un taquet de tabulation, puis utilise son identificateur pour rechercher l’identificateur de contexte d’aide. Pour cette raison, il est important de placer du texte statique avant les contrôles dans un fichier de ressources.

Lors de l’appel de la fonction WinHelp , le traitement des WM_CONTEXTMENU est similaire au traitement WM_HELP avec les deux exceptions suivantes :

  • Vous passez le paramètre wParam à partir de WM_CONTEXTMENU, qui est le handle au contrôle qui a envoyé le message.
  • Vous spécifiez la commande HELP_CONTEXTMENU au lieu de HELP_WM_HELP.

La commande HELP_CONTEXTMENU permet à l’Aide de Windows d’afficher un menu avant d’afficher la rubrique d’aide. Le menu est défini par le système. Il permet à l’utilisateur d’afficher de l’aide pour le contrôle ou d’afficher la boîte de dialogue Rubriques d’aide .

L’exemple suivant montre comment implémenter une aide contextuelle dans une boîte de dialogue.

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; 
}

Définition de l’apparence d’une fenêtre d’aide secondaire

Une application peut définir la taille, la position et l’état d’une fenêtre d’aide secondaire en passant la commande HELP_SETWINPOS et l’adresse d’une structure HELPWININFO à la fonction WinHelp . Les membres de HELPWININFO spécifient le nom de la fenêtre à modifier, ainsi que la nouvelle taille, la position et l’état d’affichage de la fenêtre.

L’exemple suivant définit l’apparence d’une fenêtre secondaire nommée « wnd_menu ». Le nom doit être défini dans la section [WINDOWS] du fichier projet d’aide.

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;
}