我想做一个东西,使用C++运算,flash做界面。之前我找了些文章成功在MFC里调用flash,但是需要有两个文件,一个mfc的exe,一个是flash的swf。1.我现在想把swf嵌入到MFC里,不知道怎么做。
2.而且,如何保证,客户端一定能播放?
3.或者有什么方法用这个mfc的exe强制给客户端装上插件?
4.如果要装的话,又是什么插件?谢谢各位~谢谢大家~
2.而且,如何保证,客户端一定能播放?
3.或者有什么方法用这个mfc的exe强制给客户端装上插件?
4.如果要装的话,又是什么插件?谢谢各位~谢谢大家~
这是个教程
http://www.vckbase.com/document/viewdoc/?id=1201
================
将swf文件作为资源加入到EXE文件中,然后在使用时先将资源释放成一个临时文件用Flash控件播放就行了。
至于自定义资源的用法,下面是一个介绍:
一、前言 在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。默认的皮肤压缩包或语言包。一些支持换肤的软件特别是一些媒体播放器常常有自定义的皮肤文件(你可以尝试将Media Player或千千静听等软件的Skins目录下的文件的扩展名改为.zip,然后使用WinZip打开看一下),但为了防止Skin文件丢失导致软件无法显示,他们常常会在EXE文件中内置一套Skin作为默认的皮肤文件。同样,一些支持多语言的EXE文件中存在默认语言包也是这个道理(当然也可以使用"String Table"资源类型);
做为一些病毒/木马程序的寄生方式。如果不小心执行了带有病毒/木马的程序,它们会在你运行时释放出病毒/木马文件。当然许多病毒是将自身写入PE文件头来实现;
合并EXE与它所需要的DLL文件。出于某些原因程序作者有时可能需要将DLL文件嵌入到可执行的EXE文件中,这可以通过使用自定义资源来实现;
其它需要在程序中播放一个AVI动画等等,都可以通过将二进制的数据文件作为自定义资源加入到可执行文件中来实现;
二、添加 添加资源时选择自定义,IDE会为你生成一个新的二进制资源,然后你就可以将你已经存在的二进制文件作为自定义的资源类型导入到项目中来了。三、使用 要使用自定义资源,我们可能要用到的几个API函数有FindResource、LoadResource和LockResource等,这里每一个函数的返回值分别作为下一个函数的参数,我来简要介绍一下。FindResource用来在一个指定的模块中定位所指定的资源:
HRSRC FindResource(
HMODULE hModule, //包含所需资源的模块句柄,如果是程序本身,可以置为NULL
LPCTSTR lpName, //可以是资源名称或资源ID
LPCTSTR lpType //资源类型,在这里也就是我们自己指定的资源类型
);
LoadResource用来将所指定的资源加载到内存当中; HGLOBAL LoadResource(
HMODULE hModule, //模块句柄,同上
HRSRC hResInfo //需要加载的资源句柄,这里也就是FindResource的返回值
);
LockResource用来锁定内存中的资源数据块,它的返回值也就是我们要使用的直系指向资源数据的内存指针; LPVOID LockResource(
HGLOBAL hResData //指向内存中要锁定的资源数据块,这里也就是LoadResource的返回值
);
另外我们还需要用SizeofResource来确定资源的尺寸,我们在操作资源时要用到它。在资源使用完毕后我们不需要使用UnlockResource和FreeResource来手动地释放资源,因为它们都是16位Windows遗留下来的,在Win32中,在使用完毕后系统会自动回收。它们的使用很简单,大致上是这个样子的: BOOL UseCustomResource()
{
//定位我们的自定义资源,这里因为我们是从本模块定位资源,所以将句柄简单地置为NULL即可
HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(ITEMID), TEXT("MyType"));
if (NULL == hRsrc)
return FALSE;
//获取资源的大小
DWORD dwSize = SizeofResource(NULL, hRsrc);
if (0 == dwSize)
return FALSE;
//加载资源
HGLOBAL hGlobal = LoadResource(NULL, hRsrc);
if (NULL == hGlobal)
return FALSE;
//锁定资源
LPVOID pBuffer = LockResource(hGlobal);
if (NULL == pBuffer)
return FALSE;
//我们用刚才得到的pBuffer和dwSize来做一些需要的事情。可以直接在内存中使
//用,也可以写入到硬盘文件。这里我们简单的写入到硬盘文件,如果我们的自定
//义资源是作为嵌入DLL来应用,情况可能要复杂一些。
BOOL bRt = FALSE;
FILE* fp = _tfopen(_T("demo.exe"), _T("wb"));
if (fp != NULL)
{
if (dwSize == fwrite(pBuffer, sizeof(char), dwSize, fp))
bRt = TRUE;
fclose(fp);
}
//FreeResource(hGlobal);
return bRt;
}
// CShockwaveFlashclass CShockwaveFlash : public CWnd
{
protected:
DECLARE_DYNCREATE(CShockwaveFlash)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xD27CDB6E, 0xAE6D, 0x11CF, { 0x96, 0xB8, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID);
} BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd,
UINT nID, CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{
return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey);
}// 属性
public:// 操作
public: long get_ReadyState()
{
long result;
InvokeHelper(DISPID_READYSTATE, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
long get_TotalFrames()
{
long result;
InvokeHelper(0x7c, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
BOOL get_Playing()
{
BOOL result;
InvokeHelper(0x7d, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void put_Playing(BOOL newValue)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x7d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
long get_Quality()
{
long result;
InvokeHelper(0x69, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void put_Quality(long newValue)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x69, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
long get_ScaleMode()
{
long result;
InvokeHelper(0x78, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void put_ScaleMode(long newValue)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x78, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
long get_AlignMode()
{
long result;
InvokeHelper(0x79, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void put_AlignMode(long newValue)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x79, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
long get_BackgroundColor()
{
long result;
InvokeHelper(0x7b, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void put_BackgroundColor(long newValue)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x7b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
BOOL get_Loop()
{
BOOL result;
InvokeHelper(0x6a, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void put_Loop(BOOL newValue)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x6a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_Movie()
{
CString result;
InvokeHelper(0x66, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_Movie(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x66, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
long get_FrameNum()
{
long result;
InvokeHelper(0x6b, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void put_FrameNum(long newValue)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x6b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
void SetZoomRect(long left, long top, long right, long bottom)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 VTS_I4 ;
InvokeHelper(0x6d, DISPATCH_METHOD, VT_EMPTY, NULL, parms, left, top, right, bottom);
}
void Zoom(long factor)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x76, DISPATCH_METHOD, VT_EMPTY, NULL, parms, factor);
}
void Pan(long x, long y, long mode)
{
static BYTE parms[] = VTS_I4 VTS_I4 VTS_I4 ;
InvokeHelper(0x77, DISPATCH_METHOD, VT_EMPTY, NULL, parms, x, y, mode);
}
void Play()
{
InvokeHelper(0x70, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void Stop()
{
InvokeHelper(0x71, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void Back()
{
InvokeHelper(0x72, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void Forward()
{
InvokeHelper(0x73, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void Rewind()
{
InvokeHelper(0x74, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void StopPlay()
{
InvokeHelper(0x7e, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void GotoFrame(long FrameNum)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x7f, DISPATCH_METHOD, VT_EMPTY, NULL, parms, FrameNum);
}
long CurrentFrame()
{
long result;
InvokeHelper(0x80, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
BOOL IsPlaying()
{
BOOL result;
InvokeHelper(0x81, DISPATCH_METHOD, VT_BOOL, (void*)&result, NULL);
return result;
}
long PercentLoaded()
{
long result;
InvokeHelper(0x82, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
BOOL FrameLoaded(long FrameNum)
{
BOOL result;
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0x83, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, FrameNum);
return result;
}
long FlashVersion()
{
long result;
InvokeHelper(0x84, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
CString get_WMode()
{
CString result;
InvokeHelper(0x85, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_WMode(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x85, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_SAlign()
{
CString result;
InvokeHelper(0x86, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_SAlign(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x86, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
BOOL get_Menu()
{
BOOL result;
InvokeHelper(0x87, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void put_Menu(BOOL newValue)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x87, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_Base()
{
CString result;
InvokeHelper(0x88, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_Base(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x88, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_Scale()
{
CString result;
InvokeHelper(0x89, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_Scale(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x89, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
{
BOOL result;
InvokeHelper(0x8a, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void put_DeviceFont(BOOL newValue)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x8a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
BOOL get_EmbedMovie()
{
BOOL result;
InvokeHelper(0x8b, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void put_EmbedMovie(BOOL newValue)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0x8b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_BGColor()
{
CString result;
InvokeHelper(0x8c, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_BGColor(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x8c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_Quality2()
{
CString result;
InvokeHelper(0x8d, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_Quality2(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x8d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
void LoadMovie(long layer, LPCTSTR url)
{
static BYTE parms[] = VTS_I4 VTS_BSTR ;
InvokeHelper(0x8e, DISPATCH_METHOD, VT_EMPTY, NULL, parms, layer, url);
}
void TGotoFrame(LPCTSTR target, long FrameNum)
{
static BYTE parms[] = VTS_BSTR VTS_I4 ;
InvokeHelper(0x8f, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target, FrameNum);
}
void TGotoLabel(LPCTSTR target, LPCTSTR label)
{
static BYTE parms[] = VTS_BSTR VTS_BSTR ;
InvokeHelper(0x90, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target, label);
}
long TCurrentFrame(LPCTSTR target)
{
long result;
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x91, DISPATCH_METHOD, VT_I4, (void*)&result, parms, target);
return result;
}
CString TCurrentLabel(LPCTSTR target)
{
CString result;
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x92, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, target);
return result;
}
void TPlay(LPCTSTR target)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x93, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target);
}
void TStopPlay(LPCTSTR target)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x94, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target);
}
void SetVariable(LPCTSTR name, LPCTSTR value)
{
static BYTE parms[] = VTS_BSTR VTS_BSTR ;
InvokeHelper(0x97, DISPATCH_METHOD, VT_EMPTY, NULL, parms, name, value);
}
CString GetVariable(LPCTSTR name)
{
CString result;
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x98, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, name);
return result;
}
void TSetProperty(LPCTSTR target, long property, LPCTSTR value)
{
static BYTE parms[] = VTS_BSTR VTS_I4 VTS_BSTR ;
InvokeHelper(0x99, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target, property, value);
}
CString TGetProperty(LPCTSTR target, long property)
{
CString result;
static BYTE parms[] = VTS_BSTR VTS_I4 ;
InvokeHelper(0x9a, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, target, property);
return result;
}
void TCallFrame(LPCTSTR target, long FrameNum)
{
static BYTE parms[] = VTS_BSTR VTS_I4 ;
InvokeHelper(0x9b, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target, FrameNum);
}
void TCallLabel(LPCTSTR target, LPCTSTR label)
{
static BYTE parms[] = VTS_BSTR VTS_BSTR ;
InvokeHelper(0x9c, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target, label);
}
void TSetPropertyNum(LPCTSTR target, long property, double value)
{
static BYTE parms[] = VTS_BSTR VTS_I4 VTS_R8 ;
InvokeHelper(0x9d, DISPATCH_METHOD, VT_EMPTY, NULL, parms, target, property, value);
}
double TGetPropertyNum(LPCTSTR target, long property)
{
double result;
static BYTE parms[] = VTS_BSTR VTS_I4 ;
InvokeHelper(0x9e, DISPATCH_METHOD, VT_R8, (void*)&result, parms, target, property);
return result;
}
double TGetPropertyAsNumber(LPCTSTR target, long property)
{
double result;
static BYTE parms[] = VTS_BSTR VTS_I4 ;
InvokeHelper(0xac, DISPATCH_METHOD, VT_R8, (void*)&result, parms, target, property);
return result;
}
CString get_SWRemote()
{
CString result;
InvokeHelper(0x9f, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_SWRemote(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x9f, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_FlashVars()
{
CString result;
InvokeHelper(0xaa, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_FlashVars(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xaa, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_AllowScriptAccess()
{
CString result;
InvokeHelper(0xab, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_AllowScriptAccess(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xab, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_MovieData()
{
CString result;
InvokeHelper(0xbe, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_MovieData(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xbe, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
LPUNKNOWN get_InlineData()
{
LPUNKNOWN result;
InvokeHelper(0xbf, DISPATCH_PROPERTYGET, VT_UNKNOWN, (void*)&result, NULL);
return result;
}
void put_InlineData(LPUNKNOWN newValue)
{
static BYTE parms[] = VTS_UNKNOWN ;
InvokeHelper(0xbf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
BOOL get_SeamlessTabbing()
{
BOOL result;
InvokeHelper(0xc0, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void put_SeamlessTabbing(BOOL newValue)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0xc0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
void EnforceLocalSecurity()
{
InvokeHelper(0xc1, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
BOOL get_Profile()
{
BOOL result;
InvokeHelper(0xc2, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void put_Profile(BOOL newValue)
{
static BYTE parms[] = VTS_BOOL ;
InvokeHelper(0xc2, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_ProfileAddress()
{
CString result;
InvokeHelper(0xc3, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_ProfileAddress(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xc3, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
long get_ProfilePort()
{
long result;
InvokeHelper(0xc4, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void put_ProfilePort(long newValue)
{
static BYTE parms[] = VTS_I4 ;
InvokeHelper(0xc4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString CallFunction(LPCTSTR request)
{
CString result;
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xc6, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, request);
return result;
}
void SetReturnValue(LPCTSTR returnValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xc7, DISPATCH_METHOD, VT_EMPTY, NULL, parms, returnValue);
}
void DisableLocalSecurity()
{
InvokeHelper(0xc8, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
CString get_AllowNetworking()
{
CString result;
InvokeHelper(0xc9, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_AllowNetworking(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xc9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
CString get_AllowFullScreen()
{
CString result;
InvokeHelper(0xca, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_AllowFullScreen(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0xca, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
};这是从swf播放器中生成的一个.h文件, 用它就可以在mfc里嵌入flash播放了, 从哪个文件里的来的我忘记了……
在里面找到CShockwaveFlash object(2)这时你在工程里面会发现多了这个CShockwaveFlash 类
在该对话框的需要使用该类的地方,定义
CShockwaveFlash m_flashplay;
(3) m_flashplay.loadmove(swf的路径);
m_flashflay.play();这时你的对话框上面CShockwaveFlash object控件里面,就可以播放你的flash了。
有一种情况,就是用户没有安装flashplayer无法使用该功能,比如你查看一下注册表,
看用户是否安装了flashplayer,如果没有安装你可以在你的程序下面,附加一个flashplayer.exe
经过用户同意后,帮助用户安装上该flashplayer.exe,再重启程序就可以了