Для того, чтобы динамически хостить различные ActiveX с помощью библиотеки ATL MSDN рекомендует пользоваться классом AtlAxWin80. Вот вариант его использования под MSVC++ 2005:

Код:
#define _ATL_APARTMENT_THREADED
#include <atlbase.h>
#include <atlwin.h>
#include <atlhost.h>
#define ATL_MIN_CRT
class CHostActiveXModule : public CAtlExeModuleT<CHostActiveXModule>
{
public :
CAxWindow m_wndMain;
// Create the Main window
HRESULT PreMessageLoop(int nCmdShow)
{
HRESULT hr = CAtlExeModuleT<CHostActiveXModule>::PreMessageLoop(nCmdShow);
if (SUCCEEDED(hr))
{
AtlAxWinInit();
hr = S_OK;
RECT rc;
rc.top = rc.left = 100;
rc.bottom = rc.right = 500;
m_wndMain.Create(NULL, rc, _T("ShockwaveFlash.ShockwaveFlash"),WS_OVERLAPPEDWINDOW );
//m_wndMain.Create(NULL, rc, _T("c:\\myMovie.swf"),WS_OVERLAPPEDWINDOW );
m_wndMain.ShowWindow(nCmdShow);
}
return hr;
}
// Clean up. App is exiting.
HRESULT PostMessageLoop()
{
AtlAxWinTerm();
return CAtlExeModuleT<CHostActiveXModule>::PostMessageLoop();
}
};
CHostActiveXModule _AtlModule;
int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
UNREFERENCED_PARAMETER(hInstance);
UNREFERENCED_PARAMETER(hPrevInstance);
return _AtlModule.WinMain(nCmdShow);
}
Для работы конкретно с флэш-контролом можно использовать директиву #import, которая создаст при компиляции оберточный класс для контрола, и далее использовать интерфейс этого класса.
По вашему примеру:
зачем указан стиль WS_CHILD?
wWindow - по смыслу хэндл родительского окна либо NULL, если окно самостоятельное. Ведь класс AtlAxWin - лишь окно-контейнер для контрола.
wInstance - хэндл инстанса приложения, типа не WinMain а один из передаваемых ей параметров, либо
просто GetModuleHandle(NULL);