1,451
社区成员
发帖
与我相关
我的任务
分享
搂主看一下下面的代码是不是对你有帮助:
下面我就简单的来讲一下如何引用一个ActiveX控件,我以Flash控件为例:
这里我就不一步一步讲了,有兴趣的话就下载源代码吧:)
点击这里下载工程源代码
// 首先要包含几个COM头文件
// 因为要用到ATL容器窗口,所以需要初始化一个CComModule以及包含atlwin.h头文件
#include
CComModule _Module;
#include
#include
#pragma comment(lib,"atl")
// 引入FLASH控件,这里的路径为自己计算机上的FLASH控件的实际路径
#import "C:\WINNT\system32\Macromed\Flash\Flash.ocx"
using namespace ShockwaveFlashObjects;
// 在WinMain中做初始化
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
CoInitialize(NULL);
AtlAxWinInit();
.
.
.
CoUninitialize();
return msg.wParam;
}
// 开始创建ATL容器窗口,并通过QueryControl()方法获得FLASH控件对象
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static CAxWindow WinContainer;
static CComPtr pFlash;
switch(message)
{
case WM_CREATE:
RECT rc;
GetClientRect(hWnd,&rc);
WinContainer.Create(hWnd,&rc,LPCTSTR("ShockwaveFlash.ShockwaveFlash"),WS_CHILD | WS_VISIBLE);
HRESULT hr;
hr = WinContainer.QueryControl(__uuidof(IShockwaveFlash),(void**)&pFlash);
if(FAILED(hr))return -1L;
hr = pFlash->put_Movie(CComBSTR(L".\\sample.swf"));
if(SUCCEEDED(hr))pFlash->Play();
break;
.
.
.
case WM_DESTROY:
pFlash.Release();
WinContainer.DestroyWindow();
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0L;
}
好了,终于我也可以在我的程序中播放FLASH动画了,高兴啊:)