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. 🙂


Anmelden zum Antworten