sowas wie ein ie-modul



  • immernoch 37 fehler 😞



  • Zeig doch mal die ersten 10 bis 20 Zeilen deines Quelltextes an (nicht nur Ausschnitte) - vermutlich hast du da irgendwo den Fehler sitzen 🙄



  • Der letzte Fehler tritt in Zeile 32 auf (E:\Projects\ieplugin\ieplugin.cpp(32)), also poste mal die ersten 33 Zeilen Deines Quelltextes ungekürzt.

    Noch besser wäre, wenn Du per '//' Kommentar hinter den betroffenen Zeilen anzeigst, in welchen Zeilen die Fehler sitzen (dann muß man nicht mühselig nachzählen)...



  • ähm, das ist der ganze quelltext. und zeigen, wo der fehler sitzen, bringt ja auch nicht viel, ist ja in fast jeder zeile 🙂



  • oh oh, ich bin echt zu blöd für die welt! ich hab vergessen das ganze in WinMain zu machen!!!

    tut mir leid für euren unnötigen aufwand, schande über mich...



  • jetzt gibts noch 2 fehlermeldungen:

    1:

    E:\Projects\ieplugin\ieplugin.cpp(27) : error C2664: 'SysAllocString' : cannot convert parameter 1 from 'char [31]' to 'const unsigned short *'
    Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

    in der zeile steht

    var.bstrVal  = SysAllocString(TEXT("http://www.magiccreating.de.vu"));
    

    2.

    E:\Projects\ieplugin\ieplugin.cpp(30) : error C2664: 'long __thiscall ATL::CComDispatchDriver::Invoke1(long,struct tagVARIANT *,struct tagVARIANT *)' : cannot convert parameter 1 from 'char [9]' to 'long'
    This conversion requires a reinterpret_cast, a C-style cast or function-style cast

    dort steht

    pDisp.Invoke1(TEXT("Navigate"),&var);
    


  • Wenn du den Code so gelassen hättest wie in dem Beispiel hättest du diese Fehler wohl nicht bekommen :p :

    var.bstrVal  = SysAllocString((OLECHAR*)TEXT("http://www.magiccreating.de.vu")); 
    // [...]
    pDisp.Invoke1((LPCOLESTR)TEXT("Navigate"),&var);
    


  • oh, ich wusste gar nicht mehr, dass ich das entfernt hatte....

    jetzt hab ich's noch mal ganz neu gemacht, in ganz neuer form, und zwar so:

    #include <windows.h>
    // ... 
    // Für ActiveX 
    #include <atlbase.h> 
    CComModule _Module; 
    #include <atlcom.h> 
    #include <atlhost.h> 
    // ... 
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
    	_Module.Init(0,hInst); 
    	AtlAxWinInit();
    
    	static TCHAR szAppName[] = TEXT("test");
    	HWND		hWnd;
    	MSG			msg;
    	WNDCLASS	wndclass;
    
    	wndclass.style		= CS_HREDRAW | CS_VREDRAW;
    	wndclass.lpfnWndProc	= WndProc;
    	wndclass.cbClsExtra	= 0;
    	wndclass.cbWndExtra	= 0;
    	wndclass.hInstance	= hInst;
    	wndclass.hIcon		= LoadIcon(NULL, IDI_APPLICATION);
    	wndclass.hCursor	= LoadCursor(NULL, IDC_ARROW);
    	wndclass.hbrBackground	= (HBRUSH) GetStockObject(WHITE_BRUSH);
    	wndclass.lpszMenuName	= NULL;
    	wndclass.lpszClassName	= szAppName;
    
    	RegisterClass (&wndclass);
    
    	hWnd = CreateWindow(szAppName, TEXT("test"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL);
    
    	ShowWindow(hWnd, iCmdShow);
    	UpdateWindow(hWnd);
    
    	while (GetMessage(&msg, NULL, 0, 0))
    	{
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    	AtlAxWinTerm(); 
    	_Module.Term();
    	return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	HWND m_hBrowser;
    	HINSTANCE hInst;
    
    	switch (message)
    	{
    	case WM_CREATE:
    		hInst = ((LPCREATESTRUCT)lParam)->hInstance;
    		m_hBrowser = CreateWindowEx(0,TEXT("AtlAxWin"),TEXT("{8856F961-340A-11D0-A96B-00C04FD705A2}"),WS_CHILD | WS_BORDER | WS_VISIBLE,0,0,200,200,hWnd,(HMENU) 4003,hInst,0);  
    
    		IUnknown *pUnk = 0;  
    		AtlAxGetControl(m_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:
    		PostQuitMessage(0);
    		return 0;
    	}
    	return DefWindowProc(hWnd, message, wParam, lParam);
    }
    

    aber jetzt kommen die fehlermeldungen:

    E:\Projects\ieplugin\ieplugin.cpp(79) : error C2360: initialization of 'pDisp' is skipped by 'case' label
    E:\Projects\ieplugin\ieplugin.cpp(72) : see declaration of 'pDisp'
    E:\Projects\ieplugin\ieplugin.cpp(79) : error C2360: initialization of 'pUnk' is skipped by 'case' label
    E:\Projects\ieplugin\ieplugin.cpp(64) : see declaration of 'pUnk'

    in der 79. zeile ist beginnt der case-zweig zu WM_DESTROY.



  • case WM_CREATE:
    {
       ...
    }
    retrun 0;
    


  • Wenn du in einem switch Variable deklarierst musst du den entsprechenden cas-Block in { } einschließen - außerhalb dieses Blockes kannst du dann aber nicht mehr darauf zugreifen. Falls du das brauchst musst du sie in der WndProc static machen



  • oh, wusste ich gar nicht.

    jetzt wird das ganze zwar (endlich) kompiliert, aber es wird keine webseite angezeigt, nur ein schwarzer rahmen von dem childfenster und sonst nichts...



  • Greifst du evtl. in der WndProc an mehreren Stellen auf m_hBrowser oder hInst zu? Falls ja solltest du diese static machen, falls nein kannst du sie gleich in WM_CREATE deklarieren 😉



  • ich machs eben so, wie ich's oben gepostet habe 🙂

    tut mir leid wenn ich euch nerve



  • Sorry, aber man sollte doch wenigstens ansatzweise verstehen, was man da kopiert ...

    var.bstrVal  = SysAllocString((OLECHAR*)TEXT("http://www.magiccreating.de.vu"));
    

    Was soll denn das geben?

    pDisp.Invoke1((LPCOLESTR)TEXT("Navigate"),&var);
    

    Und was soll das geben?

    Du mußt UNICODE-Strings übergeben, blindes casten hilft hier nicht!



  • ja toll, ich hab das script so aus der faq. wenn es nicht funktioniert, dürfte es ja eigentlich nicht dort stehen, oder?



  • Herr-Vorragend schrieb:

    ich hab das script so aus der faq.

    Link bitte. Da wo ich in der FAQ schaue, steht was anderes.



  • Sorry, war wohl auch mit mein Fehler 🙄
    Evtl. sollte man aber mal den Code in den FAQ entsprechend korrigieren (ich weiß -King- weißt dort schon auf den Fehler hin), da sicher viele nicht bis zu Ende lesen (in diesem Fall gehöre ich ja sogar selbst mit dazu *schäm*)



  • flenders schrieb:

    Evtl. sollte man aber mal den Code in den FAQ entsprechend korrigieren

    😕 Was denn korrigieren?
    Ich schaute mir bislang immer diese FAQ an:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39402

    Da steht das richtig, nur halt nicht auf den Browser bezogen. Von welcher FAQ ist denn hier die Rede?

    /EDIT: Ihr werdet es nicht glauben, aber soeben habe die die Links auf der ersten Seite entdeckt. 🙄





  • Das ist a) nicht aus den FAQs und b) schlicht falsch. Aber Du weißt ja nun, was zu tun ist.


Anmelden zum Antworten