Webseite im Programm anzeigen
-
Das funktioniert bei mir nicht da kommt eine unbehadelte Ausnahme.
-
Teste nach CreateWindow mal, ob das Fenster überhaupt korrekt erstellt wurde, sonst bekommst du unweigerlich diesen Ausnahmefehler.
M.T.
-
Danke für den Tip !
Ich habe herausgefunden das CreteWindow() NULL zurückgibt was ist den da falsch ???
"hWnd" und "hInstance" haben beide einen Wert.
-
Poste mal bitte ein Stück Code ...
M.T.
-
Hier ist das komplette Programm:
#include <windows.h> #include <stdio.h> #include <atlbase.h> #include <atlcom.h> #include <atlhost.h> CComModule _Module; HINSTANCE hinst_app=NULL; HWND hBrowser; LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow) { static char szClassName[]="Fensterklasse"; HBRUSH WindowBrush=CreateSolidBrush(RGB(255,255,255)); WNDCLASSEX winclass; MSG msg; winclass.cbClsExtra=0; winclass.cbSize=sizeof(WNDCLASSEX); winclass.cbWndExtra=0; winclass.hbrBackground=WindowBrush; winclass.hCursor=LoadCursor(NULL,IDC_ARROW); winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); winclass.hIconSm=LoadIcon(NULL,IDI_APPLICATION); winclass.hInstance=hInstance; winclass.lpfnWndProc=WindowProc; winclass.lpszClassName=szClassName; winclass.lpszMenuName=NULL; winclass.style=CS_HREDRAW | CS_VREDRAW; RegisterClassEx(&winclass); HWND hWnd=CreateWindowEx(NULL, szClassName, "Fenster", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 0,0,500,400, NULL, NULL, hInstance, NULL); ShowWindow(hWnd,iCmdShow); UpdateWindow(hWnd); while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } LRESULT CALLBACK WindowProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_CREATE: { hinst_app=((LPCREATESTRUCT)lParam)->hInstance; _Module.Init(0,hinst_app); AtlAxWinInit(); hBrowser=CreateWindowEx(0,TEXT("AtlAxWin"),TEXT("{8856F961-340A-11D0-A96B-00C04FD705A2}"),WS_CHILD | WS_BORDER | WS_VISIBLE,0,0,200,200,hWnd,(HMENU) NULL,hinst_app,0); IUnknown *pUnk=0; AtlAxGetControl(hBrowser,&pUnk); VARIANTARG var; VariantInit(&var); var.vt = VT_BSTR; var.bstrVal = SysAllocString((OLECHAR*)TEXT("http://www.magiccreating.de.vu")); CComDispatchDriver pDisp(pUnk); pDisp.Invoke1((LPCOLESTR)TEXT("Navigate"),&var); VariantClear(&var); pUnk->Release(); return 0; } case WM_DESTROY: { AtlAxWinTerm(); _Module.Term(); PostQuitMessage(0); return 0; } } return DefWindowProc(hWnd,msg,wParam,lParam); }
-
cpp_guy schrieb:
var.bstrVal = SysAllocString((OLECHAR*)TEXT("http://www.magiccreating.de.vu")); . . . pDisp.Invoke1((LPCOLESTR)TEXT("Navigate"),&var);
Was soll das denn werden? Die Funktion/ Methode benötigt einen UNICODE-String, das kannst Du doch nicht einfach zusammencasten!
cpp_guy schrieb:
case WM_DESTROY: { AtlAxWinTerm(); _Module.Term(); PostQuitMessage(0); return 0; }
In WM_DESTROY sind die Child-Windows noch nicht zerstört. Wenn Du jetzt einfach die Registrierung der Fensterklasse widerrufst, kommt es zum Crash. Das gehört frühestens in WM_NCDESTROY.
-
Jetzt habe ich das so geändert aber es funktioniert immer noch nicht.
case WM_CREATE: { OLECHAR *lpSite=L"C:\\seite.html"; LPCOLESTR lpNavigate=L"Navigate"; hinst_app=((LPCREATESTRUCT)lParam)->hInstance; _Module.Init(0,hinst_app); AtlAxWinInit(); hBrowser=CreateWindowEx(0,TEXT("AtlAxWin"),TEXT("{8856F961-340A-11D0-A96B-00C04FD705A2}"),WS_CHILD | WS_BORDER | WS_VISIBLE,0,0,200,200,hWnd,(HMENU) NULL,hinst_app,0); IUnknown *pUnk=0; AtlAxGetControl(hBrowser,&pUnk); VARIANTARG var; VariantInit(&var); var.vt = VT_BSTR; var.bstrVal = SysAllocString(lpSite); CComDispatchDriver pDisp(pUnk); pDisp.Invoke1(lpNavigate,&var); VariantClear(&var); pUnk->Release(); return 0; } case WM_NCDESTROY: { AtlAxWinTerm(); _Module.Term(); return 0; }
-
Kann mir mal bitte jemand helfen oder habt ihr selber keine Ahnung ?
-
Also ich muss dir leider gestehen, dass ich hier keine Ahnung habe
-
Wenn Du hiermit: http://www.codeguru.com/ieprogram/cwebpage.html nicht klar kommst, würd ich das Thema lieber sein lassen.