分享
 
 
 

利用ATL制作程序多媒体封面组件

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

COM的优越就不多说,使用ATL开发COM方便而快捷,并且具有Size小,Dependency少的特点。VC++的import 编译支持更是对COM开发的巨大支持。闲话休说,这就开始吧。

一.Flash组件

1.ATL COM AppWizard创建新项目"ATLFlash",选择DLL类型。

2.加入ATL Object "Flash"

Insert -> New ATL Object

选择Object中的Simple Object,

Short Name:“FLash”

3.接口添加Method “Play”

参数为:[in]BSTR bstrFile,[in]long hInstance,[in]long hWnd

4.在CFlash类中加入:

private:

HWND m_hWnd;//视频窗口句柄

5. 实现Play方法。

STDMETHODIMP CFlash::Play(BSTR bstrFile, long hInstance, long hWnd)

{

try{

m_hMCIWnd=(HWND)hWnd;

_bstr_t file(bstrFile);

m_hMCIWnd=::MCIWndCreate((HWND)hWnd,(HINSTANCE)hInstance,

WS_POPUP¦WS_VISIBLE¦

MCIWNDF_NOPLAYBAR¦

MCIWNDF_NOMENU,

(char *)file);

RECT rect;

int sx,sy;

::GetWindowRect(m_hMCIWnd,&rect);

sx=(::GetSystemMetrics(SM_CXSCREEN)

-rect.right+rect.left)/2;

sy=(::GetSystemMetrics(SM_CYSCREEN)

-rect.bottom+rect.top)/2;

//窗口居中

::SetWindowPos(m_hMCIWnd,HWND_TOPMOST,sx,

sy,0,0,SWP_SHOWWINDOW¦SWP_NOSIZE);

g_nLength=MCIWndGetLength(m_hMCIWnd);

MCIWndPlay(m_hMCIWnd);

SetTimer(m_hMCIWnd,1,50,TimerProc);

}catch(...)

{

AtlTrace("error:%ul",::GetLastError());

}

return S_OK;

}

6.Flash.cpp中实现TimerProc,用于关闭视频窗口。

long g_nLength;

VOID CALLBACK TimerProc(

HWND hwnd, // handle of window for timer messages

UINT uMsg, // WM_TIMER message

UINT idEvent, // timer identifier

DWORD dwTime // current system time

)

{

long nLength;

BOOL bEscape=::GetKeyState(VK_ESCAPE)&0x0100;

nLength=MCIWndGetPosition(hwnd);

//视频放完,或点击ESC键,关闭视频窗口

if((nLength>=g_nLength)¦¦(bEscape)){

KillTimer(hwnd,idEvent);

MCIWndEnd(hwnd);

MCIWndClose(hwnd);

MCIWndDestroy(hwnd);

}

};

7.stdafx.h中加入

#include <vwf.h>

项目设置中加入“vwf32.lib”库,

打开项目设置中C++,C++language中的Enable Error Handling

编译,一切OK。

二,组件的使用。

1.创建一个MDI或SDI项目"FlashClient"

2.stdafx.h中加入

#import “ATLFlash.dll” no_namespace

FlashCient.cpp中加入

struct _InitCom{

_InitCom(){::CoInitialize(NULL);}

~_InitCom(){::CoUninitialize(); }

}__InitCom;

3.CFlashClientView加入

private:

IFlashPtr pFlashServer;

4.CFlashClent::OnInitialUpdate()加入

_bstr_t file("Sample.avi");

pFlashServer->Play( file,(long)::AfxGetInstanceHandle(),(long)this->GetSafeHwnd());

5.编译,一切OK。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有