Je d�veloppe actuellement une application en VC++ qui int�gre une aide en ligne qui a �t� engendr�e � partir d'un outil de gestion de documentation capable de fournir, en sortie, un fichier .CHM. Ce fichier int�gre des "ancres" destin�es � mettre en place une aide contextuelle: selon l'endroit o� on se trouve dans le programme (fen�tre ou boite de dialogue ou z�ne de saisie) on souhaite que quand on presse la touche F1 on ait un acc�s direct � l'information correspondante dans ce fichier d'aide en ligne.
Je constate que quand on presse F1 le fichier d'aide en ligne est bien ouvert mais le m�canisme "contectuel" ne fonctionne pas comme il devrait: l'aide en ligne s'ouvre toujours sur la page de bienvenue. Je recherche des explications sur la d�marche � suivre pour que �a fonctionne correctement. Je soup�onne qu'il y a une syntaxe particuli�re � respecter quand on �x�cute le programme hh.exe en lui passant comme param�tre le nom du fichier d'aide en ligne .CHM: peut �tre faut il rajouter un param�tre suppl�mentaire qui d�finirait l'ancre � acc�der ?
Voici comment j'ai mis en place cette aide en ligne:
Les "ancres" du fichier .CHM ont �t� g�n�r�es � l'aide du fichier .H suivant:
J'ai mis en place le petit bout de code suivant:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 #define IDH_HTMLHELP_BUG_BAIT 9999999999 #define Map_Prot_LR 0x200B4 (0xB4 étant la valeur du #define IDR_MAINFRAME pour lequel on veut une aide contextuelle). #define Block_Change_plugLR_sans 0x103EB (0x3EB étant la valeur du #define IDC_... pour lequel on veut une aide contextuelle).
dans la Classe (CDialog) concern�e par l'aide.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 ON_COMMAND(ID_HELP_FINDER, OnOnlineHelp) ON_COMMAND(ID_HELP, OnOnlineHelp) // Proceed with F1 keystroke ON_COMMAND(ID_CONTEXT_HELP, OnOnlineHelp) // Proceed with Shift + F1 keystroke ON_COMMAND(ID_DEFAULT_HELP, OnOnlineHelp)
et la fonction OnOnlineHelp() se pr�sente comme suit:
Merci d'avance pour toute information � ce sujet.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 Get_Executable_Path(LocBuf); strcat(LocBuf,"\\Help.chm"); i=GetWindowsDirectory((LPSTR)Help32ExeDir,sizeof(Help32ExeDir)); strcpy(lpCommandLine,Help32ExeDir); strcat(lpCommandLine,"\\hh.exe "); strcat(lpCommandLine,LocBuf); RunHelp(lpCommandLine,Help32ExeDir); // NO Wait
pense � mettre la balise code , Merci Farscape
Partager