Flash als GUI



  • Hallo,

    ich möchte gerne eine Flash-Datei (*.swf) als GUI in mein Windows Fenster integrieren. Das ganze läuft as reines Win32 API Projekt ohne MFC oder .NET

    Mein aktueller Stand sieht so aus. CWindowEx ist meine eigene Wrapper Klasse für ein Windows Fenster mit Win32 API Befehlen.

    int
    _tmain( int argc, _TCHAR* argv[] )
    {
        CWindowEx xWnd;
        CWindowEx::PRESENT_PARAMETERS  xPresentParams;
        xPresentParams.m_dwStyle = WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX;
        xPresentParams.m_dwStyleEx		= 0;
        xPresentParams.m_iClientWidth	= 800;
        xPresentParams.m_iClientHeight	= 600;
        xPresentParams.m_pcCaption		= "Simple Window";
    
        HRESULT             hr      = NULL;
        IShockwaveFlash*    flash   = NULL;
        IViewObjectEx*      view    = NULL;
    
        void* pAtlaxWinInit         = GetProcAddress(LoadLibrary("atl"),"AtlAxWinInit");
        LPAtlAxAttachControl pAtlAxAttachControl   = (LPAtlAxAttachControl)GetProcAddress(LoadLibrary("atl"),"AtlAxAttachControl");
        _asm call pAtlaxWinInit;
    
        HWND ctrl = CreateWindowEx(0,"AtlAxWin",0,0,0,0,800,600,0,0,0,0);
    
        if( true == xWnd.Create( xPresentParams ) )
        {
            hr = CoCreateInstance(__uuidof(ShockwaveFlash),0,CLSCTX_ALL, __uuidof(IShockwaveFlash), (void **)&flash); 
            hr = flash->put_WMode(L"transparent");
    
            hr = pAtlAxAttachControl(flash,xWnd.GetWindow(),0);
    
            hr = flash->QueryInterface(__uuidof(IViewObjectEx),(void **)&view);
            hr = flash->put_Movie(L"C:\\Software Entwicklung\\Flash Projekte\\Test02.swf");
    
            xWnd.SetVisible(true);
    
            do
            {
                xWnd.Run();
                view->Draw(DVASPECT_CONTENT, 0, 0, 0, 0, xWnd.GetDC(), 0, 0, 0, 0);
            }
            while( NULL != xWnd.GetWindow() );
        }
    
        return 0;
    }
    

    Eine Frage zu den AtlAx Befehlen. Wenn ich die Funktionen so aufrufe AtlAxWinInit(); ( CreateWindowEx funktioniert dann nicht ) wird eine anderer Code ausgeführt wie bei meiner Variante über den assembler call .
    - Weiß jemand wie es dazu kommt?

    - Hatt jemand schon Erfahrungen damit gemacht Flash als GUI einzusetzen ?
    - Suche nach einer umfangreichen Hilfe zum IShockwaveFlash interface.
    - Das rendering von Flash in meinem Windows-Fenster ist sehr zäh - gibt es alternativen um das zu beschleunigen?

    Danke für eure Hilfe !

    PS: bitte keine "GidF" und "mach doch was anderes" Kommentare 😉


Anmelden zum Antworten