- PeekMessage C 64-bit
- // Main message loop:
- bool noQuit = true;
- while (noQuit)
- {
- if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- if (msg.message == WM_QUIT)
- noQuit = false;
- }
- else
- {
- DrawFrame();
- }
- }
- CFlashDXPlayer::CFlashDXPlayer(HMODULE flashDLL, unsigned int width, unsigned int height)
- {
- m_userData = NULL;
- m_flashInterface = NULL;
- m_oleObject = NULL;
- m_windowlessObject = NULL;
- m_lastMouseX = 0;
- m_lastMouseY = 0;
- m_lastMouseButtons = 0;
- m_dirtyFlag = false;
- m_width = width;
- m_height = height;
- m_controlSite.Init(this);
- m_controlSite.AddRef();
- m_alphaBlackDC = NULL;
- m_alphaBlackBitmap = NULL;
- m_alphaBlackBuffer = NULL;
- m_alphaWhiteDC = NULL;
- m_alphaWhiteBitmap = NULL;
- m_alphaWhiteBuffer = NULL;
- HRESULT hr;
- typedef HRESULT (__stdcall *DllGetClassObjectFunc)(REFCLSID rclsid, REFIID riid, LPVOID * ppv);
- if (flashDLL != NULL)
- {
- IClassFactory* aClassFactory = NULL;
- DllGetClassObjectFunc aDllGetClassObjectFunc = (DllGetClassObjectFunc) GetProcAddress(flashDLL, "DllGetClassObject");
- hr = aDllGetClassObjectFunc(CLSID_ShockwaveFlash, IID_IClassFactory, (void**)&aClassFactory);
- if (FAILED(hr))
- return;
- aClassFactory->CreateInstance(NULL, IID_IOleObject, (void**)&m_oleObject);
- aClassFactory->Release();
- }
- else
- {
- hr = CoCreateInstance(CLSID_ShockwaveFlash, NULL, CLSCTX_INPROC_SERVER, IID_IOleObject, (void**)&m_oleObject);
- if (FAILED(hr))
- return;
- }
- IOleClientSite* pClientSite = NULL;
- hr = m_controlSite.QueryInterface(__uuidof(IOleClientSite), (void**)&pClientSite);
- if (FAILED(hr))
- return;
- hr = m_oleObject->SetClientSite(pClientSite);
- if (FAILED(hr))
- return;
- hr = m_oleObject->QueryInterface(__uuidof(IShockwaveFlash), (void**)&m_flashInterface);
- if (FAILED(hr))
- return;
- m_flashInterface->DisableLocalSecurity();
- m_flashInterface->PutEmbedMovie(FALSE);
- m_flashInterface->PutAllowScriptAccess(L"always");
- SetTransparencyMode(IFlashDXPlayer::TMODE_OPAQUE);
- SetQuality(IFlashDXPlayer::QUALITY_HIGH);
- hr = m_oleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, pClientSite, 0, NULL, NULL);
- assert(SUCCEEDED(hr));
- pClientSite->Release();
- hr = m_oleObject->QueryInterface(__uuidof(IOleInPlaceObjectWindowless), (void**)&m_windowlessObject);
- assert(SUCCEEDED(hr));
- m_flashSink.Init(this);
- m_flashSink.AddRef();
- // Resize player
- ResizePlayer(width, height);
- }
- m_flashLibHandle = LoadLibrary(L"Flash11e.ocx");