none
MFC Javascript Error in HTML-Dialog App RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich versuche zurzeit eine HTML-Dialog-App mit MFC in Visual Studio 2012 zu programmieren.

    Immer wenn ich das Programm starte, bekomme ich folgende Fehlermelung im Log:

    "First-chance exception at 0x760CC41F in Ondine Launcher 2014.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x003CCE28"

    Mit allen Ausnahmen in den Debugger-Settings aktiviert hab ich heruasgefunden, dass die Exception hier entsteht:

    BOOL COleControlSite::OnEvent(AFX_EVENT* pEvent)
    {
    	// If this control has a proxy CWnd, look for a matching ON_*_REFLECT
    	// entry for this event in its event map.
    	if ((m_pWndCtrl != NULL) &&
    		m_pWndCtrl->OnCmdMsg(m_nID, CN_EVENT, pEvent, NULL))
    	{
    		return TRUE;
    	}
    
    	// Proxy CWnd isn't interested, so pass the event along to the container.
    	ENSURE(m_pCtrlCont!=NULL && m_pCtrlCont->m_pWnd!=NULL);
    	return m_pCtrlCont->m_pWnd->OnCmdMsg(m_nID, CN_EVENT, pEvent, NULL);
    }

    Das ENSURE() wirft eine Exception, weil (laut dem Debugger) der this Pointer 0x00000000 ist. (Irgendwie komisch)

    EDIT: Hier der Debug-Log:

    "Ondine Launcher 2014.exe" (Win32): "E:\Projekte\Ondine Launcher 2014\Debug\Ondine Launcher 2014.exe" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ntdll.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\kernel32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\KernelBase.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\user32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\gdi32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\lpk.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\usp10.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msvcrt.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\advapi32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\sechost.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\rpcrt4.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\sspicli.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\cryptbase.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msimg32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\winspool.drv" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\shell32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\shlwapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\uxtheme.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ole32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\oleaut32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\oledlg.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\urlmon.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-ole32-l1-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-shlwapi-l1-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-advapi32-l1-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-user32-l1-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-version-l1-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\version.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-normaliz-l1-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\normaliz.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\iertutil.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\wininet.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7601.18120_none_72d2e82386681b36\GdiPlus.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\wsock32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ws2_32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\nsi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\oleacc.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\imm32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msctf.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\winmm.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\apphelp.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\AppPatch\AcLayers.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\userenv.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\profapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\mpr.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Program Files (x86)\TeamViewer\Version8\tv_w32.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\crtdll.dll" geladen. Das Modul wurde ohne Symbole erstellt.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\kernel32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\kernel32.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\advapi32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\advapi32.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dwmapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\clbcatq.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ieframe.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-shell32-l1-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-shlwapi-l2-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\secur32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\api-ms-win-downlevel-advapi32-l2-1-0.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\winhttp.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\webio.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\winhttp.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\webio.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\mswsock.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\IPHLPAPI.DLL" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\winnsi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\wship6.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\propsys.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\mshtml.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ole32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ole32.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dnsapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dhcpcsvc6.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\netprofm.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\nlaapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dhcpcsvc.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\WSHTCPIP.DLL" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\cryptsp.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\rasadhlp.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\mshtml.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\mshtml.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\rsaenh.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\FWPUCLNT.DLL" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\RpcRtRemote.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\npmproxy.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\mlang.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msimtf.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\jscript9.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\crypt32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msasn1.dll" geladen. Symbole wurden geladen.
    First-chance exception at 0x760CC41F in Ondine Launcher 2014.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x001DD150.
    First-chance exception at 0x760CC41F in Ondine Launcher 2014.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x001DD150.
    First-chance exception at 0x760CC41F in Ondine Launcher 2014.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x001DB520.
    First-chance exception at 0x760CC41F in Ondine Launcher 2014.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x001DB520.
    First-chance exception at 0x760CC41F in Ondine Launcher 2014.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x001DCF68.
    First-chance exception at 0x760CC41F in Ondine Launcher 2014.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x001DCF68.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msls31.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\d2d1.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\DWrite.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dxgi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dxgidebug.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\setupapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\cfgmgr32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\devobj.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\wintrust.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\setupapi.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\devobj.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\cfgmgr32.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\d3d11.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\d3d10warp.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\setupapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\cfgmgr32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\devobj.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\setupapi.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\devobj.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\cfgmgr32.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\WindowsCodecs.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msxml3.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ws2_32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ws2_32.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\setupapi.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\cfgmgr32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\devobj.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ntmarta.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\Wldap32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\wininet.dll" geladen. PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\wininet.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\WindowsCodecsExt.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msxml6.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dxtrans.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\atl.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ddrawex.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ddraw.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dciman32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dxtmsft.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\sxs.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\kernel32.dll" geladen. Symbole wurden geladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\kernel32.dll" wurde entladen.
    Der Thread 0x1c88 hat mit Code 0 (0x0) geendet.
    Der Thread 0x2538 hat mit Code 0 (0x0) geendet.
    Der Thread 0xdb4 hat mit Code 0 (0x0) geendet.
    Der Thread 0x21a4 hat mit Code 0 (0x0) geendet.
    Der Thread 0x26c8 hat mit Code 0 (0x0) geendet.
    Der Thread 0x29fc hat mit Code 0 (0x0) geendet.
    Der Thread 0x2af0 hat mit Code 0 (0x0) geendet.
    Der Thread 0x21e0 hat mit Code 0 (0x0) geendet.
    Der Thread 0x2624 hat mit Code 0 (0x0) geendet.
    Der Thread 0x1808 hat mit Code 0 (0x0) geendet.
    Der Thread 0x210c hat mit Code 0 (0x0) geendet.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\d3d10warp.dll" wurde entladen.
    Der Thread 0x1934 hat mit Code 0 (0x0) geendet.
    Der Thread 0x1114 hat mit Code 0 (0x0) geendet.
    Der Thread 0x26a0 hat mit Code 0 (0x0) geendet.
    Der Thread 0xcb0 hat mit Code 0 (0x0) geendet.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msxml3.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dxtmsft.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\dxtrans.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\atl.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\ddrawex.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\msxml6.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\WindowsCodecsExt.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\WindowsCodecs.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\npmproxy.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\netprofm.dll" wurde entladen.
    "Ondine Launcher 2014.exe" (Win32): "C:\Windows\SysWOW64\nlaapi.dll" wurde entladen.
    Der Thread 0x24d8 hat mit Code 0 (0x0) geendet.
    Der Thread 0x21c0 hat mit Code 0 (0x0) geendet.
    Der Thread 0x2818 hat mit Code 0 (0x0) geendet.
    Der Thread 0x2844 hat mit Code 0 (0x0) geendet.
    Der Thread 0x86c hat mit Code 0 (0x0) geendet.
    Der Thread 0x17a0 hat mit Code 0 (0x0) geendet.
    Der Thread 0xe94 hat mit Code 0 (0x0) geendet.
    Der Thread 0x2014 hat mit Code 0 (0x0) geendet.
    Der Thread 0x738 hat mit Code 0 (0x0) geendet.
    Der Thread 0xf4c hat mit Code 0 (0x0) geendet.
    Der Thread 0x202c hat mit Code 0 (0x0) geendet.
    Der Thread 0x2ac0 hat mit Code 0 (0x0) geendet.
    Der Thread 0x28f0 hat mit Code 0 (0x0) geendet.
    Das Programm "[8392] Ondine Launcher 2014.exe" wurde mit Code 0 (0x0) beendet.

    Hier sind die wichtigsten Teile meiner App:

    // App.h
    
    // Die App-Klasse, Einstiegspunkt des Programms
    class CLauncherApp : public CWinApp
    {
    public:
    	// Konstruktor
    	CLauncherApp();
    
    protected:
    	// Startup und Cleanup Funktion
    	virtual BOOL InitInstance();
    	virtual int ExitInstance();
    
    	// Message-Map
    	DECLARE_MESSAGE_MAP()
    
    public:
    	std::wstring m_sUserHash;
    
    	// Hauptdialog
    	CMainDlg* m_pMainDlg;
    };
    
    
    
    // App.cpp
    
    #include "stdafx.h"
    
    #include <urlmon.h>
    
    #include "App.h"
    #include "MainDlg.h"
    #include "AdminPannelDlg.h"
    #include "CommandLineParser.h"
    
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    // Globales App-Objekt
    CLauncherApp theApp;
    
    
    // Message-Map für die App
    BEGIN_MESSAGE_MAP(CLauncherApp, CWinApp)
    END_MESSAGE_MAP()
    
    
    /*
    	Konstruktor - wird nicht verwendet,
    	alle Initialisierungen sind in InitInstance()
    */
    CLauncherApp::CLauncherApp()
    	: m_sUserHash(L"0x0000000000000000") // User-Hash ist immer am Anfang 0x0000000000000000
    {
    
    }
    
    /*
    	Wird aufgerufen, wenn die App erstellt wird.
    */
    BOOL CLauncherApp::InitInstance()
    {
    	// Im Debug-Modus wird eine Konsole angelegt.
    #ifdef _DEBUG
    	AllocConsole();
    	FILE* f;
    	freopen_s(&f,"CONOUT$","w",stdout);
    	// Wenn die Konsole geschlossen wird, das Fenster zerstören.
    	SetConsoleCtrlHandler( [](DWORD dwEvent) -> BOOL
    	{
    		AfxGetApp()->m_pMainWnd->PostMessageW(WM_CLOSE);
    		Sleep(100);
    		return TRUE;
    	}, TRUE);
    #endif
    
    	// CummonControls initialisieren, wird für die erweiterten
    	// Controls im Dialog benötigt.
    	INITCOMMONCONTROLSEX InitCtrls;
    	InitCtrls.dwSize = sizeof(InitCtrls);
    	InitCtrls.dwICC = ICC_WIN95_CLASSES;
    	InitCommonControlsEx(&InitCtrls);
    
    	// InitInstance() der Basisklasse aufrufen
    	CWinApp::InitInstance();
    
    	// Command-Line Argumente auswerten ( setzt ggf. den Userhash )
    	CCommandLineParser CmdParser;
    	ParseCommandLine(CmdParser);
    
    	// Afx-Sockets initialisieren ( sind einfacher als winapi Sockets... )
    	if (!AfxSocketInit())
    	{
    		AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
    		return FALSE;
    	}
    
    	// Die (bekloppten) Navigations-Sounds des Internet-Explorers deaktivieren
    	// ( für die HTML-Dialoge )
    	CoInternetSetFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS,SET_FEATURE_ON_PROCESS,TRUE);
    
    	//AfxEnableControlContainer();
    	//SetRegistryKey(_T("Vom lokalen Anwendungs-Assistenten generierte Anwendungen"));
    
    	// Hauptfenster erstellen: Den Launcher-Dialog
    	m_pMainWnd = m_pMainDlg = new CMainDlg();
    	// Admin-Pannel Dialog erstellen
    	m_pAdminPannelDlg = new CAdminPannelDlg();
    
    	// Hauptdialog erstellen
    	m_pMainDlg->Create();
    
    
    	// Message-Loop starten
    	return TRUE;
    }
    
    
    /*
    	Aufräumen
    */
    int CLauncherApp::ExitInstance()
    {
    	// Hauptdialog löschen
    	delete m_pMainDlg;
    	m_pMainDlg = 0;
    	// Admin-Pannel löschen
    	delete m_pAdminPannelDlg;
    	m_pAdminPannelDlg = 0;
    
    	// Rückgabewert des MessageLoops als Exitcode für den Prozess verwenden.
    	return CWinApp::ExitInstance();
    }
    
    
    
    
    // MainDlg.h
    
    // Hauptdialog der Anwendung
    class CMainDlg : public CDHtmlDialog
    {
    
    public:
    	// Konstruktor
    	CMainDlg();
    
    	// Wird von der App aufgerufen, wenn das Fenster erstellt werden soll.
    	void Create();
    
    	// Die ID der Dialog-Resource
    	enum { IDD = IDD_ONDINELAUNCHER2014_DIALOG };
    
    private:
    	// Browser-Hook, um den white-flash beim zeichnen des Browsers zu verhindern
    	struct BrushEntry
    	{
    		HWND   hWnd;
    		HBRUSH hOldBrush;
    		HBRUSH hNewBrush;
    	};
    	std::list<BrushEntry> m_BrowserBrushes;
    	void HookBrowserBrushes();
    	void UnhookBrowserBrushes();
    
    	// Einen Javascript-Befehl ausführen
    	VARIANT InvokeJavaScript(LPCWSTR Command);
    
    
    protected:
    	// Icon des Fensters
    	HICON m_hIcon;
    
    	// Event-Maps deklarieren
    	DECLARE_MESSAGE_MAP()
    	DECLARE_DHTML_EVENT_MAP()
    
    	// Message Events
    	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
    	afx_msg void OnDestroy();
    	afx_msg void OnClose();
    };
    
    
    
    // MainDlg.cpp
    
    #include "stdafx.h"
    #include "App.h"
    #include "MainDlg.h"
    #include "AdminPannelDlg.h"
    #include "afxdialogex.h"
    
    
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #endif
    
    // Message-Events
    BEGIN_MESSAGE_MAP(CMainDlg, CDHtmlDialog)
    	ON_WM_ERASEBKGND()
    	ON_WM_DESTROY()
    	ON_WM_CLOSE()
    END_MESSAGE_MAP()
    
    // Html-Events
    BEGIN_DHTML_EVENT_MAP(CMainDlg)
    	
    END_DHTML_EVENT_MAP()
    
    
    /*
    	Konstruktor
    */
    CMainDlg::CMainDlg()
    	: CDHtmlDialog()
    {
    	// Icon für den Dialog laden
    	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
    
    	// Titel des HTML-Dokuments als Fenster-Titel verwenden
    	m_bUseHtmlTitle = TRUE;
    }
    
    /*
    	Wird aufgerufen, wenn das Fenster erstellt und angezeigt werden soll.
    */
    void CMainDlg::Create()
    {
    	// Dialog erstellen
    	CDHtmlDialog::Create(CMainDlg::IDD);
    
    	SetIcon(m_hIcon, TRUE);
    	SetIcon(m_hIcon, FALSE);
    
    	// Fenster auf dem Bildschirm zentrieren
    	int centerX = GetSystemMetrics(SM_CXFULLSCREEN)/2 - 800/2;
    	int centerY = GetSystemMetrics(SM_CYFULLSCREEN)/2 - 600/2;
    	MoveWindow(centerX, centerY, 800,600,FALSE);
    
    	// Browser auf Launcher-Site umleiten ( User-ID wird an URL angehängt )
    	std::wstring str(L"http://update.ondine-server.com/Launcher/?user_id=");
    	str += theApp.m_sUserHash;
    	Navigate(str.c_str());
    
    	// Die EraseBackground-Methode der Browser-Componenten überschreiben um einen
    	// white-flash zu verhindern und Fenster anzeigen.
    	HookBrowserBrushes();
    	ShowWindow(SW_NORMAL);
    }
    
    /*
    	Hilfsfunktion, um einen Javascript-Befehl im Browser auszuführen.
    */
    VARIANT CMainDlg::InvokeJavaScript(LPCWSTR Command)
    {
    	// HTML-Document-Interface des Browser abfragen
    	IHTMLDocument2* pDocument = 0;
    	if( GetDHtmlDocument(&pDocument) != S_OK )
    	{
    		std::cout << "InvokeJavaScript() : GetDHtmlDocument() failed" << std::endl;
    		VARIANT v;
    		v.vt = VT_NULL;
    		return v;
    	}
    	// Das Fenster geben, dass das HTML-Document beinhaltet
    	IHTMLWindow2* pWindow = 0;
    	if( pDocument->get_parentWindow(&pWindow) != S_OK )
    	{
    		pDocument->Release();
    		std::cout << "InvokeJavaScript() : get_parentWindow() failed" << std::endl;
    		VARIANT v;
    		v.vt = VT_NULL;
    		return v;
    	}
    
    	// Script ausführen
    	VARIANT retVal;
    	pWindow->execScript(_bstr_t(Command),L"JScript",&retVal);
    
    	// Interfaces wieder freigeben
    	pDocument->Release();
    	pWindow->Release();
    
    	return retVal;
    }
    
    /*
    	Setzt den Hintergrund aller Browserkomponenten uaf schwarz,
    	um den typischen IE-"White flash" zu vermeiden.
    */
    void CMainDlg::HookBrowserBrushes()
    {
    	// Für jedes der Browser-Fenster einen neuen Brush erzeugen,
    	// und den alten speichern
    	EnumChildWindows(m_hWnd, [](HWND hWnd,LPARAM lParam) -> BOOL
    	{
    		BrushEntry e;
    		e.hWnd = hWnd;
    		e.hNewBrush = CreateSolidBrush(RGB(0,0,0));
    
    		e.hOldBrush = (HBRUSH)SetClassLongPtr(hWnd,GCLP_HBRBACKGROUND,(LONG)e.hNewBrush);
    
    		((CMainDlg*)lParam)->m_BrowserBrushes.push_back(e);
    
    		return TRUE;
    	},(LPARAM)this);
    }
    
    /*
    	Setzt den Hintergrund aller Browserkomponenten wieder auf ihren
    	vorherigen Wert.
    */
    void CMainDlg::UnhookBrowserBrushes()
    {
    	// Alte Hintergrundfarben wiederherstellen, die neu erstellten löschen
    	for( BrushEntry e : m_BrowserBrushes )
    	{
    		SetClassLongPtr(e.hWnd,GCLP_HBRBACKGROUND,(LONG)e.hOldBrush);
    		DeleteObject( e.hNewBrush );
    	}
    	// Liste leeren
    	m_BrowserBrushes.clear();
    }
    
    
    /*
    	Anstatt der Standard-Dialog Hintergrundfarbe (grau),
    	wird schwarz verwendet.
    */
    BOOL CMainDlg::OnEraseBkgnd(CDC* pDC)
    {
    	CDHtmlDialog::OnEraseBkgnd(pDC);
    	CRect r;
    	GetClientRect(r);
    	pDC->FillRect(r,&CBrush(RGB(0,0,0)));
    	return TRUE;
    }
    
    /*
    	Bevor der Dialog zerstört wird,
    	müssen noch die Browser-Brushes wiederhergestellt werden.
    	( Sonst gibt's ne Exception )
    */
    void CMainDlg::OnDestroy()
    {
    	UnhookBrowserBrushes();
    
    	CDHtmlDialog::OnDestroy();
    }
    
    /*
    	WM_CLOSE macht den Dialog nur unsichtbar,zerstört ihn aber nicht.
    */
    void CMainDlg::OnClose()
    {
    	CDHtmlDialog::OnClose();
    
    	// Dialog explizit zerstören
    	DestroyWindow();
    }

    Danke für die Hilfe :D

    MfG, Turtlefight


    • Bearbeitet Turtlefight Samstag, 4. Januar 2014 21:23
    • Typ geändert Ionut DumaModerator Dienstag, 14. Januar 2014 11:16 Keine Rueckmeldung des Fragenstellender
    Samstag, 4. Januar 2014 20:41

Alle Antworten