lien entre une fenêtre et son aide associée

Le
ringo973
Bonjour je vous explique mon problème, je programme sous visual c++ et
lorsque j'exécute mon programme un utilisateur a accés à une
interface. Lorsqu'il clique sur un onglet dans le menu une fenêtre
s'affiche lorqu'il appuie sur la touche F12 il est redirigé vers un
manuel d'utilisateur (qui était en .doc que j'ai converti en page
web). Le problème c'est que je voudrais que l'utilisateur soit
redirigé vers le chapitre concernant la bonne fenêtre dans le manuel,
alors j'ai essayé de faire des "ancres nommées" (ici j'ai pris
Préconiser) dans le code html de mon manuel mais lorsque je fais cette
ligne de code en C++ :
TCHAR szPath[MAX_PATH];
GetModuleFileName( NULL, szPath, MAX_PATH );
CString temp( szPath );

temp.Format( "C:\Opti_plage\Manuel Utilisateur.htm#Préconiser",
temp.Left( temp.ReverseFind( '\' ) + 1 ) );
ShellExecute(NULL, "open", temp, NULL, NULL, SW_SHOWNORMAL);

rien ne s'affiche et dès que j'enlève "#Préconiser" la page web
s'affiche, quelqu'un peut-il m'aider?Merci beaucoup.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #19326621
On 13 mai, 11:45, wrote:
Bonjour je vous explique mon problème, je programme sous visual c++ et
lorsque j'exécute mon programme un utilisateur a accés à une
interface. Lorsqu'il clique sur un onglet dans le menu une fenêtre
s'affiche lorqu'il appuie sur la touche F12 il est redirigé vers un
manuel d'utilisateur (qui était en .doc que j'ai converti en page
web). Le problème c'est que je voudrais que l'utilisateur soit
redirigé vers le chapitre concernant la bonne fenêtre dans le manuel,
alors j'ai essayé de faire des "ancres nommées" (ici j'ai pris
Préconiser) dans le code html de mon manuel mais lorsque je fais cette
ligne de code en C++ :
TCHAR szPath[MAX_PATH];
GetModuleFileName( NULL, szPath, MAX_PATH );
CString temp( szPath );

temp.Format( "C:\Opti_plage\Manuel Utilisateur.htm#Préconiser",
temp.Left( temp.ReverseFind( '\' ) + 1 ) );
ShellExecute(NULL, "open", temp, NULL, NULL, SW_SHOWNORMAL);

rien ne s'affiche et dès que j'enlève "#Préconiser" la page web
s'affiche, quelqu'un peut-il m'aider?Merci beaucoup.



Ca marche notamment avec IWebBrowser2::Navigate()
On peut aussi faire un .chm et appeler HtmlHelp() (HH_DISPLAY_TOPIC
ou autre)
ringo973
Le #19331881
Merci mais comme je suis débutante pourriez-vous me donner davantage
d'explications?Merci beaucoup.
Christian ASTOR
Le #19332181
On 14 mai, 11:03, wrote:
Merci mais comme je suis débutante pourriez-vous me donner davantage
d'explications?Merci beaucoup.



Un test rapide en Win32 Console :

#include #include #include
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
BSTR bstrURL;
IWebBrowser2 *pWebBrowser;
hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance (CLSID_InternetExplorer, NULL,
CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (LPVOID *)&pWebBrowser);
if (SUCCEEDED(hr))
{
bstrURL = SysAllocString(L"C:\test\test.htm#link");
VARIANT var;
var.vt = VT_EMPTY;
pWebBrowser->Navigate(bstrURL, &var, &var, &var, &var);
SysFreeString(bstrURL);
VARIANT_BOOL vb = TRUE;
pWebBrowser->put_Visible(vb);
pWebBrowser->Release();
}

}
return 0;
}
ringo973
Le #19332251
Merci mais lorsque j'insére votre méthode dans mon code j'ai le
message d'erreur suivant : error C2601: 'main' : local function
definitions are illegal.

void CDlg_Preconiser::OnAide()
{
// TODO: Add your control notification handler code here
/*
TCHAR szPath[MAX_PATH];
GetModuleFileName( NULL, szPath, MAX_PATH );
CString temp( szPath );

temp.Format( "C:\Opti_plage\Manuel Utilisateur.htm", temp.Left
( temp.ReverseFind( '\' ) + 1 ) );
ShellExecute(NULL, "open", temp, NULL, NULL, SW_SHOWNORMAL);*/
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
BSTR bstrURL;
IWebBrowser2 *pWebBrowser;
hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance (CLSID_InternetExplorer, NULL,
CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (LPVOID *)&pWebBrowser);
if (SUCCEEDED(hr))
{
bstrURL = SysAllocString(L"C:\Opti_plage
Manuel Utilisateur.htm");
VARIANT var;
var.vt = VT_EMPTY;
pWebBrowser->Navigate(bstrURL, &var, &var,
&var, &var);
SysFreeString(bstrURL);
VARIANT_BOOL vb = TRUE;
pWebBrowser->put_Visible(vb);
pWebBrowser->Release();
}


}

return 0;

}

}
Christian ASTOR
Le #19332981
On 14 mai, 11:55, wrote:
Merci mais lorsque j'insére votre méthode dans mon code j'ai le
message d'erreur suivant : error C2601: 'main' : local function
definitions are illegal.

void CDlg_Preconiser::OnAide()
....
int _tmain(int argc, _TCHAR* argv[])



Il ne faut pas copier le main() !!
ringo973
Le #19333101
Cela doit donner ça ? Merci.

void CDlg_Preconiser::OnAide()
{
// TODO: Add your control notification handler code here

HRESULT hr;
BSTR bstrURL;
IWebBrowser2 *pWebBrowser;
hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance (CLSID_InternetExplorer, NULL,
CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (LPVOID *)&pWebBrowser);
if (SUCCEEDED(hr))
{
bstrURL = SysAllocString(L"C:\test
test.htm#link");
VARIANT var;
var.vt = VT_EMPTY;
pWebBrowser->Navigate(bstrURL, &var, &var,
&var, &var);
SysFreeString(bstrURL);
VARIANT_BOOL vb = TRUE;
pWebBrowser->put_Visible(vb);
pWebBrowser->Release();
}


}
return 0;
Christian ASTOR
Le #19334811
On 14 mai, 14:56, wrote:
Cela doit donner ça ? Merci.



Oui, à toi d'adapter avec ton fichier HTML
(et #include
ringo973
Le #19338601
Super ça fonctionne c'est génial merci merci beaucoup.
ringo973
Le #19467381
On 15 mai, 09:23, wrote:
Super ça fonctionne c'est génial merci merci beaucoup. Mais j'ai enco re une petite question j'ai fais ce code pour en fait récupérer le chem in précis de mon manuel dans une variable temp et lorsque je l'appelle co mme ceci bstrURL = SysAllocString(L"temp"); internet explorer se charge m ais essai d'ouvrir http://temp et évidemment ne le trouve pas, comment pu is-je faire afficher mon temp sachant que je veux toujours garder mes ancre s et que ShellExecute ne les prend pas en compte? Merci.



void CDlg_Preconiser::OnAide()
{

TCHAR szPath[MAX_PATH];
GetModuleFileName( NULL, szPath, MAX_PATH );
CString temp( szPath );

temp.Format( "%sManuel Utilisateur.htm", temp.Left( temp.ReverseFind
( '\' ) + 1 ) );
ShellExecute(NULL, "open", temp, NULL, NULL, SW_SHOWNORMAL);




HRESULT hr;
BSTR bstrURL;
IWebBrowser2 *pWebBrowser;
hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance (CLSID_InternetExplorer, NULL,
CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (LPVOID *)&pWebBrowser);
if (SUCCEEDED(hr))
{
bstrURL = SysAllocString(L"temp");
VARIANT var;
var.vt = VT_EMPTY;
pWebBrowser->Navigate(bstrURL, &var, &var, &var, &var);
SysFreeString(bstrURL);
VARIANT_BOOL vb = TRUE;
pWebBrowser->put_Visible(vb);
pWebBrowser->Release();
}
}

return ;

}
Christian ASTOR
Le #19468181
On 2 juin, 09:13, wrote:
On 15 mai, 09:23, wrote:

> Super ça fonctionne c'est génial merci merci beaucoup. Mais j'ai en core une petite question j'ai fais ce code pour en fait récupérer le ch emin précis de mon manuel dans une variable temp et lorsque je l'appelle comme ceci bstrURL = SysAllocString(L"temp"); internet explorer se charge mais essai d'ouvrirhttp://tempet évidemment ne le trouve pas, comment pu is-je faire afficher mon temp sachant que je veux toujours garder mes ancre s et que ShellExecute ne les prend pas en compte? Merci.



Si tu utilises un CString, il faut utiliser ::AllocSysString() =>
BSTR bstrURL = temp.AllocSysString();
Publicité
Poster une réponse
Anonyme