Html+dialog sans MFC

cs_Manson Messages postés 137 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 30 septembre 2004 - 2 oct. 2003 à 10:13
cs_Manson Messages postés 137 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 30 septembre 2004 - 2 oct. 2003 à 12:51
Salut,

voila j'essai d'integrer une page html dans une dialog, mais
sans MFC.

Par mfc c'est super simple. Mais sans ... ca devient plus dure.
J'ai integrer le controle ActiveX Web de Microsoft dans ma dialog, mais je ne peux plus afficher la fenetre.

j'ai donc fait un LoadLibrary de la dll : shdocvw.dll
et inclus : Exdisp.h
Mais toujours rien. Ma fenetre ne s'affiche pas.
j'ai donc fait un GetLastError, et un FormatMessage, et l'erreur est qu'il ne reconnais plus la classe de ma fenetre.

Voila le code :

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Exdisp.h>
#include "resource.h"

HINSTANCE	hinst;

IWebBrowser2 *my_web;

BOOL CALLBACK Main_Window(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
switch (mssg)
{
case WM_INITDIALOG:
SetClassLong(hdlg, GCL_HICON, (long)LoadIcon(hinst, (LPCSTR)IDI_APP));
return TRUE;
case WM_COMMAND:
switch(wParam)
{
case ID_EXIT:
EndDialog(hdlg, 0);
return (0);
}
return (0);
}
return (0);
}

void		show_error(char *file, int line)
{
LPVOID	lpMsgBuf;
char	title[1024];

sprintf(title, "Erreur dans fichier %s a la ligne %d", file, line);
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL);
MessageBox( NULL , (char *)lpMsgBuf, title, MB_OK|MB_ICONERROR );
LocalFree( lpMsgBuf ); 
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
  hinst = hInstance;

  HINSTANCE	Web	= NULL;

  Web = LoadLibrary("c:\\Winnt\\System32\\shdocvw.dll");
  if (Web == NULL)
  {
  MessageBox(NULL, "can't load", "Error", MB_OK);
  return (0);
  }
OutputDebugString("Malloc de my_web ...");
my_web = (IWebBrowser2 *)malloc(sizeof(IWebBrowser));
OutputDebugString(" [ok]\n");

  if ((DialogBoxParam(hInstance, (LPCTSTR)IDD_MAIN, NULL, Main_Window, 0)) == -1)
  {
  OutputDebugString("Creation de la fenetre ... [failed]\n");
  show_error(__FILE__, __LINE__);
  }
  return 0;
}


Si quelqu'un connais une autre methode, ou si vous avez une solution ... je suus preneur.

D'avance merci.

Arno

2 réponses

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
2 oct. 2003 à 12:39
En fait, c'est plus compliqué à utiliser que ca les composants COM, surtout pour ce que tu cherches à faire.

Je pense que ca va t'intéresser:
Embed an HTML control in your own window using plain C
Specifically shows how to embed a browser OLE object in your own window, and more generally demonstrates how to manipulate and create COM/OLE objects, in plain C (ie, no MFC, WTL, ATL, .NET, C#, nor even C++). The latter is applicable to many other uses, such as creating your own script engine.

Kaid - kaid.fr.st
0
cs_Manson Messages postés 137 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 30 septembre 2004
2 oct. 2003 à 12:51
Salut,

j'ai reussi a faire ce que je voulais a l'instant. Et je n'ai finalement pas utiliser le controle ActiveX implenter a la main, mais directement les class que le site dont tu m'as
donne le lien parle.

Ca marche tres bien.

Encore merci.

Arno
0
Rejoignez-nous