|
在stdafx.h中国入
#include <atlbase.h>
extern CComModule _Module;
#include <atlcom.h>
#include <xcgui.h>
在主程序如下
#include "StdAfx.h"
#import "C:\WINDOWS\system32\Macromed\Flash\Flash32_11_9_900_117.ocx" rename_namespace("Flash")
#pragma warning(default:4146)
using namespace Flash;
typedef BOOL (*_AtlAxWinInit)();
typedef void (*_AtlAxGetControl)(HWND h,IUnknown** ppv);
typedef struct _ATLAXLIB{
HMODULE hMod;
_AtlAxWinInit AtlAxWinInit;
_AtlAxGetControl AtlAxGetControl;
}ATLAXLIB;
BOOL InitAtlaxLib(ATLAXLIB* lib){
lib->hMod=LoadLibrary("atl.dll");
if(lib->hMod==NULL) return 0;
lib->AtlAxWinInit=(_AtlAxWinInit)GetProcAddress(lib->hMod,"AtlAxWinInit");
lib->AtlAxGetControl=(_AtlAxGetControl)GetProcAddress(lib->hMod,"AtlAxGetControl");
return 1;
}
//void SSLWnd_Init(char *SS);
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
::CoInitialize(NULL);
XInitXCGUI();
//创建窗口
HWINDOW hWindow=XWnd_CreateWindow(400,200,800,900,L"炫彩界面库-窗口");
XWnd_ShowWindow(hWindow,SW_SHOW);
ATLAXLIB lib;
InitAtlaxLib(&lib);
lib.AtlAxWinInit();
HWND hEle=XWnd_GetHWnd(hWindow);
RECT rc;
GetWindowRect(hEle,&rc);
HWND x= CreateWindowEx(0,"AtlAxWin","{D27CDB6E-AE6D-11cf-96B8-444553540000}",WS_CHILD | WS_VISIBLE
,rc.top,rc.left,rc.right,rc.bottom,hEle,0,hInstance,0);
HRESULT hr;
CComPtr<IUnknown> spUnk;
CComPtr<IShockwaveFlash> m_sp;
hr = AtlAxGetControl(x, &spUnk);
if (SUCCEEDED(hr))
{
hr = spUnk ->QueryInterface(__uuidof(IShockwaveFlash), (void **)&m_sp);
m_sp->LoadMovie(0,_T("d:\\flash2.swf"));
m_sp->Play();
}
XRunXCGUI();
spUnk.Release();//可能会有问题,指针引用对象为空
m_sp.Release();
CoUninitialize();
return 0;
}
主要是运用atl加载activex控件,那一串guid,接口呀是用oleview看的
参考atl加载控件,gridreport的例子
|
|