[VC++] De l'aide pour un prog qui affiche une page web !

De l'aide pour un prog qui affiche une page web ! [VC++] - Programmation

Marsh Posté le 03-04-2001 à 00:14:18    

AU SECOURS, je vais devenir fou :)
 
J'ai voulu me lancer dans la conception d'un petit programme tout bête qui contient un contrôle ActiveX IE5, pour afficher une page web...
Le problème c'est que je dois mettre ce programme sur un CD...et que la page n'est jamais trouvée.
Voici le code :
 
m_cExplorer1.Navigate("Cours\\Seismes.html", NULL, NULL, NULL, NULL);
 
Dans l'initialisation de la boite de dialogue : le dossier "Cours" se trouvera à la racine du CD, et le fichier "Seismes.html" à l'intérieur du dossier...je mettrai l'exe dans le même répertoire, mais il me met la page d'erreur IE5, et dans les propriétés, il affiche qu'il cherche a ouvrir "res://D:\WINNT\system32\shdoclc.dll/navcancl.htm#http://cours/Seismes.html" : je ne peux pas mettre de chemin prédéfini style "D:\cours\seismes.html" car je ne connais pas la lettre du cdrom sur lequel le programme sera exécuté...et pourtant, en faisant cela ça marche !!
 
AIDEZ-MOI, c'est très important pour moi !

Reply

Marsh Posté le 03-04-2001 à 00:14:18   

Reply

Marsh Posté le 03-04-2001 à 02:17:16    

Si Seismes.html et l'exe sont dans le même répertoire, je crois qu'il faudrait écrire :
 
m_cExplorer1.Navigate("Seismes.html", NULL, NULL, NULL, NULL);
 
Salutations

Reply

Marsh Posté le 03-04-2001 à 09:44:08    

Ouais, j'avais oublier de le préciser, ça ne marche pas non plus ça, ça me fait une DNS Error de IE5...

Reply

Marsh Posté le 03-04-2001 à 12:06:27    

Il faut recupperer le chemin du programme qui execute cette fonction et le rejouter au nom de fichier.
IE considere que s'il n'y a pas de lettre de lecteur, c'st une adresse internet.


---------------
[:seblamb] Moi aussi je veux grater dédé!!!
Reply

Marsh Posté le 03-04-2001 à 16:19:44    

C bien ce que je me disais, mais comment je fais pour récuperer le chemin...???
Je crois que je vais peter un plomb avec ce  :gun: programme !

Reply

Marsh Posté le 03-04-2001 à 16:29:32    

y'a un truc du genre GetCurrentDir qui marche bien ou meme une autre fonction dont je ne souvient plus du nom qui te donne le repertoire ou se trouve le programme en train de s'executer.
 
et ensuite
 
file://f|/...
 
f: lettre du lecteur
.... : chemin
 
et la si ca ne marche pasc'est qu'il y a une merde

Reply

Marsh Posté le 03-04-2001 à 22:58:23    

Justement, il y a la fonction GetCurrentDirectory(...,...), mais dans mon Buffer, elle ne me renvoit rien, voici le code fautif :
        char *pszPath = NULL;
 int iBuffer = 60;
 GetCurrentDirectory(iBuffer, pszPath);
 CString strChemin = pszPath;
 AfxMessageBox(strChemin); // CA C'EST VIDE !
Apres j'adapterai le resultat de strChemin pour la premier paramètre de ceci :
 m_cExplorer1.Navigate("Seismes.html", NULL, NULL, NULL, NULL);
 
Mais bon, pourquoi n'ai-je rien dans pszPath ???
Merci de votre aide :)

Reply

Marsh Posté le 03-04-2001 à 23:13:48    

Parce que tu fais n'importe quoi.
voir http://msdn.microsoft.com/library/ [...] o_6g6x.htm
 

Citation :


If the buffer pointed to by lpBuffer is not large enough, the return value specifies the required size of the buffer, including the number of bytes necessary for a terminating null character.

Reply

Marsh Posté le 03-04-2001 à 23:22:08    

AHahahah, t'es un marrant toi :)
Je fais n'importe quoi, je m'en doutais un peu, sinon, je poserai pas la question...je suis désolé, moi je suis pas né avec la science infuse !
Alors au lieu de me filer l'adresse d'une page que j'ai dans la bibliothèque MSDN, et que de toute façon j'ai bien compris, dis moi plutôt concrètement ce qui ne vas pas dans le code...Je débute moi, désolé :(

 

[edit]--Message édité par Rebel--[/edit]

Reply

Marsh Posté le 03-04-2001 à 23:53:54    

Salut Rebel,
 
J'ai pas encore trouvé pourquoi GetCurrentDirectory déconne mais j'ai testé le code suivant et il fonctionne :
 
CString sFileName, sFileDir;
GetModuleFileName(AfxGetInstanceHandle(), sFileName.GetBuffer(256), 256);
sFileName.ReleaseBuffer();
int nPos = sFileName.ReverseFind('\\');
if (nPos != -1)
{
 sFileDir = sFileName.Left(nPos);
 MessageBox(sFileDir);
}
 
Voilà.  J'espère que ca aide en attendant mieux !
 
Flying

Reply

Marsh Posté le 03-04-2001 à 23:53:54   

Reply

Marsh Posté le 03-04-2001 à 23:56:17    

Les smileys trafiquent le code ... faut remplacer le petit bonhomme jaune par "parenthèse fermée".
 
:(
 
Flying

Reply

Marsh Posté le 04-04-2001 à 00:07:16    

J'ai trouvé ca aussi :
 
TCHAR szName[_MAX_PATH];  
::GetCurrentDirectory(_MAX_PATH, szName);
MessageBox(szName);
 
qui fonctionne mais ne retourne le chemin que jusqu'au répertoire parent !!! bizarre bizarre !!!
 
Flying

Reply

Marsh Posté le 04-04-2001 à 00:20:14    

On peut aussi faire comme ca :
 
TCHAR szFullPath[MAX_PATH];
TCHAR szDir[_MAX_DIR];
TCHAR szDrive[_MAX_DRIVE];
::GetModuleFileName(NULL,szFullPath,MAX_PATH);
_splitpath(szFullPath,szDrive,szDir,NULL,NULL);
CString path = szDrive;
path = path + szDir;
MessageBox(path);
 
On utilise la macro _splitpath à la place de Find du premier exemple.
Dans le premier cas, on a / pour finir le chemin, ici pas.
 
Bon je crois que je m'arrête pour ce soir :)
 
Flying

Reply

Marsh Posté le 04-04-2001 à 00:45:11    

Le dernier des derniers, maintenant je vais pieuter :
 
CString sPath;
int nLen = 255;
GetCurrentDirectory(nLen, sPath.GetBuffer(256));
sPath.ReleaseBuffer();
MessageBox(sPath);
 
Encore une fois, ca retourne jusqu'au répertoire parent...
 
Bye
Flying

 

[edit]--Message édité par Flying--[/edit]

Reply

Marsh Posté le 04-04-2001 à 02:33:24    

Rebel a écrit a écrit :

AHahahah, t'es un marrant toi :)
Je fais n'importe quoi, je m'en doutais un peu, sinon, je poserai pas la question...je suis désolé, moi je suis pas né avec la science infuse !
Alors au lieu de me filer l'adresse d'une page que j'ai dans la bibliothèque MSDN, et que de toute façon j'ai bien compris, dis moi plutôt concrètement ce qui ne vas pas dans le code...Je débute moi, désolé :(




 
Si tu connaissais le C (et l'anglais) tu aurais vu ton erreur rapidement. La fonction GetCurrentDirectory a besoin d'un pointeur sur un emplacement mémoire pour stocker le chemin.
Donc il faut lui en donner un. Flying a donner diverses méthodes (un tableau suffisamment grand de caractère, le buffer d'un objet Cstring) pour y arriver.
 
Je pense qu'il faut que tu bosses les bases du C avant de te lancer dans la prog windows sinon tu vas galérer. Et si tu veux faire de la prog win immédiatement, essaie plutôt Visual Basic.

Reply

Marsh Posté le 04-04-2001 à 08:10:43    

Si tu connaissais le C (et l'anglais)
 
Tu t'es leve du pied gauche ce matin? On dirait du nofret :)
A+,

Reply

Marsh Posté le 04-04-2001 à 08:15:15    

En ligne de commande, le répertoire courant est ".", c'est peut etre une connerie, mais ça ne marcherai pas en mettant :
m_cExplorer1.Navigate(".\Seismes.html" ...
 
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

Marsh Posté le 04-04-2001 à 08:51:04    

Je vous remercie tous de me filer un coup de main, surtout Flying, qui a du chercher toute la nuit pour moi ;) et aussi Verdoux, Combi, et les autres...
Simplement, Verdoux, sache que je maîtrise tout de même relativement bien l'anglais, mais qu'en C, je suis nul, je le sais, je débute, comme je l'ai déjà dit...il faut bien passer par là pour apprendre, alors j'expérimente...rapppelle toi quand tu as débuté, c'était surement pareil :) Bon, sans rancunes !
Allez, je vais tester tous les codes que vous me proposez, merci encore...

 

[edit]--Message édité par Rebel--[/edit]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed