VC如何做类似QQ宠物一样的无边框播放Flash文件(在线等待。。会者不难)

hxx 2006-09-15 08:57:13
大家都知道,QQ宠物实际上是播放了一个Flash文件,只是这个播放器没有边框,早好几年我曾经下过一个VC做的播放Flash文件的例子,印象很深的,运行时,一个笑脸跳出来(像QQ宠物一样,没有看到播放器的痕迹),说了句“嗨,南茜。。。”,相信看到此程序者不在小数,但是我现在找不到这个代码了。所以小弟跪求代码!

在线等待。。。

有代码的就可以啊。。

分不够可以再加。。。
...全文
1742 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonkil 2006-11-08
  • 打赏
  • 举报
回复
呵呵,那是徐景周做的吧?
在VCKBASE上应该可以找到。
ToperRay 2006-11-08
  • 打赏
  • 举报
回复
mark
  • 打赏
  • 举报
回复
mark 有空要学
ringphone 2006-11-08
  • 打赏
  • 举报
回复
mark
b0126037 2006-11-08
  • 打赏
  • 举报
回复
我现在用appwised建了一个对话框的应用程序,直接用里面的FlashWnd.cpp和.h文件。不用里面的flash.h和.cpp文件。应该怎么改?

raymonzhao 2006-11-08
  • 打赏
  • 举报
回复
MARK
b0126037 2006-11-08
  • 打赏
  • 举报
回复
我想问一下上面几个兄弟说的在http://www.codeproject.com/useritems/flashcontrol.asp下个这个程序的源代码。当里面的flash文件播放完毕的时候如何关闭它。
请赐教!
hxx 2006-09-28
  • 打赏
  • 举报
回复
早好几年我曾经下过一个VC做的播放Flash文件的例子,印象很深的,运行时,一个笑脸跳出来(像QQ宠物一样,没有看到播放器的痕迹),说了句“嗨,南茜。。。”,相信看到此程序者不在小数,但是我现在找不到这个代码了。所以小弟跪求代码!
hxx 2006-09-28
  • 打赏
  • 举报
回复
http://www.codeproject.com/useritems/flashcontrol.asp上面有介绍了背景透明,但是程序编译通不过。

error C2065: 'IDirectDraw4' : undeclared identifier
error C2065: 'IID_IDirectDraw4' : undeclared identifier
error C2373: 'IID_IDirectDraw4' : redefinition; different type modifiers

等等,一系列错误。无法看到效果。
hxx 2006-09-28
  • 打赏
  • 举报
回复
seu07201213(【卐】〖汪洋中的一片叶子〗≈^︵^≈) 和jun_01(无名小卒) 的方法确实不错,
可是背景不透明啊....
郁闷...

coolzdp(unreal张师傅):
你的方法肯定不行,Flash画面中的内容一变化,又再获取背景?我怎么知道它播放的图片中9有什么变化?


所有讨论Ms Agent技术的都不符合我的要求啊。我知道MS Agent.可是类似与QQ宠物,它有很多动作,很多表情,很多的东西,我完全用MS Agent编写工程太大。而且不利于将来的扩充。用Flash,则只要美工设计好动画就行。不管什么表情,什么动作都可以,不再手Agent的属性限制!


我现在想知道如何让这Flash播放的图片的背景透明。而不是窗口透明。因为窗口透明和不规则窗口这个我也会做。MS Agent技术我也会。不要再讨论了。谢谢
折腾_苏州 2006-09-28
  • 打赏
  • 举报
回复
http://www.codeproject.com/useritems/flashcontrol.asp 上面的例子是可以的

至于编译通不过,那是因为你缺少DirectX SDK,可到
http://www.microsoft.com/downloads/details.aspx?familyid=1FD20DF1-DEC6-47D0-8BEF-10E266DFDAB8&displaylang=en
去下载

不过 wangk(倒之)胸 把DirectX SDK相关部分已单独提出,大可不必再去下DirectX SDK包了...
wangk 2006-09-28
  • 打赏
  • 举报
回复
http://www.codeproject.com/useritems/flashcontrol.asp
在工程的stdafx.h里
在// C RunTime Header Files之前加上
//declare type for IDirectDraw4 interface
struct __declspec(uuid("9C59509A-39BD-11D1-8C4A-00C04FD930C5")) IDirectDraw4;


然后在FlashWnd.h里
#import "c:\\windows\\system32\\macromed\\flash\\flash.ocx" named_guids之后加上
_COM_SMARTPTR_TYPEDEF(IDirectDraw4, __uuidof(IDirectDraw4));

#if defined( _WIN32 ) && !defined( _NO_COM )
#undef INTERFACE
#define INTERFACE IDirectDraw4
DECLARE_INTERFACE_( IDirectDraw4, IUnknown )
{
/*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/*** IDirectDraw methods ***/
STDMETHOD(Compact)(THIS) PURE;
STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER FAR*, IUnknown FAR * ) PURE;
STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE FAR*, IUnknown FAR * ) PURE;
STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE FAR *, IUnknown FAR *) PURE;
STDMETHOD(DuplicateSurface)( THIS_ LPDIRECTDRAWSURFACE, LPDIRECTDRAWSURFACE FAR * ) PURE;
STDMETHOD(EnumDisplayModes)( THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK ) PURE;
STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID,LPDDENUMSURFACESCALLBACK ) PURE;
STDMETHOD(FlipToGDISurface)(THIS) PURE;
STDMETHOD(GetCaps)( THIS_ LPDDCAPS, LPDDCAPS) PURE;
STDMETHOD(GetDisplayMode)( THIS_ LPDDSURFACEDESC) PURE;
STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD, LPDWORD ) PURE;
STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE FAR *) PURE;
STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL ) PURE;
STDMETHOD(Initialize)(THIS_ GUID FAR *) PURE;
STDMETHOD(RestoreDisplayMode)(THIS) PURE;
STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD) PURE;
STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE ) PURE;
};
#endif

接着在CFlashWnd::OnAfterShowingContent()
里面改变swf测试文件的路径,执行即可。
如果不要显示主窗口那么LoadMovie之前加上ShowWindow(m_hWndParent , SW_HIDE );
就会只看见透明播放的swf了。
lixiaosan 2006-09-15
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msagent/pacontrol_7qng.asp
lixiaosan 2006-09-15
  • 打赏
  • 举报
回复
http://www.codeproject.com/tips/msagentctrl.asp
折腾_苏州 2006-09-15
  • 打赏
  • 举报
回复
只要flash背景透明可以了,用
void* init = GetProcAddress(LoadLibrary("atl"),"AtlAxWinInit");
_asm call init;
CreateWindow("AtlAxWin", "C:\\TDdownload\\fish.swf", WS_VISIBLE|WS_POPUP,0,0,800,600,0,0,0,0);
其实做那东西,MS agent 也是不错的选择
cndeer 2006-09-15
  • 打赏
  • 举报
回复
标记一下...............
hxx 2006-09-15
  • 打赏
  • 举报
回复
..........
jun_01 2006-09-15
  • 打赏
  • 举报
回复
不用楼上的那些那么麻烦!

新建一个工程,把这几行代码放进去,如果播放不了你大我,如果播放出来有边框你也打我!

#include <windows.h>

int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show) {
MSG msg={0}; void* init = GetProcAddress(LoadLibrary("atl"),"AtlAxWinInit"); _asm call init;
CreateWindow("AtlAxWin", "Flash文件名.swf", WS_VISIBLE|WS_POPUP,0,0,200,200);
while (GetMessage(&msg,0,0,0)) DispatchMessage(&msg);
};
hxx 2006-09-15
  • 打赏
  • 举报
回复
1。要求是播放Flash的文件啊。
2。不是wangk(倒之)兄提供的,不仅是Flash播放,很多这类的代码和资料,而且是中文的。
我想做的是QQ宠物之类的东西。。

请继续帮忙啊。。
jixingzhong 2006-09-15
  • 打赏
  • 举报
回复
用 Flash 控件
加载更多回复(8)

15,981

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧