初级视频编辑室|草蜢非编论坛|初级视编室|草蜢视频编辑|会声会影|威力导演|电子相册

 找回密码
 加入初编室
搜索
查看: 842|回复: 2
打印 上一主题 下一主题

[Director 多媒体爱好者] Xtra 开发技巧心得

[复制链接]

296

主题

1132

帖子

2万

积分

超级版主

Rank: 8Rank: 8

论坛版主精华帖勋章

跳转到指定楼层
楼主
发表于 2014-11-24 21:36:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
onekey onekey
1.如何判断是否在authoring环境下.

STDMETHODIMP_(MoaError) MoaCreate_TStdXtra (TStdXtra FAR * This)
{
This->pCallback->QueryInterface(&IID_IMoaAppInfo,(PPMoaVoid) &This->pAppInterface));//获得IMoaAppInfo接口
This->pAppInterface->GetInfo(kMoaAppInfo_RunMode,This->XtraInfo.AppType,32);//获得运行模式,如果AppType为"Projector",则为发布模式,"Author"则为编著模式.XtraInfo是我自己定义的结构,存放初始化检测的各种信息
This->pAppInterface->GetInfo(kMoaAppInfo_ProductName, This->XtraInfo.AppName, 32);//检测软件类型,"Director"就是Director了,"Authorware"说明是运行在Authorware下.
//还可以进行用户名,版本的检测,请参考XDK说明
...
}

2.如何获取StageWindow和播放器窗口句柄.

This->pCallback->QueryInterface(&IID_IMoaMmWndWin,(PPMoaVoid) &This->pWindowInterface);//获取Windows平台下的窗口操作接口.注意这里及上面的例子中我已将这些接口声明在Xtra头文件的EXTERN_BEGIN_DEFINE_CLASS_INSTANCE_VARS(TStdXtra)宏中了.
This->pWindowInterface->WinGetParent((MoaMmHInst*)&This->XtraInfo.InstanceHandle,(MoaMmHWnd*)&This->XtraInfo.WindowHandle);//获取主程序EXE的实例句柄和窗口句柄.在编著环境下就是Director的实例句柄和窗口句柄,在Projector模式下就是Projector的实例和窗口句柄(不是Dll的句柄,在编著环境下窗口句柄不是StageWindow的句柄).该调用不可放在
STDMETHODIMP_(MoaError) MoaCreate_TStdXtra (TStdXtra FAR * This)
中检测,原因是Projector模式下xtra载入时窗口还未建立,这时是检测不到窗口的(Authorware则不同,先建立窗口再载入xtra).所以最好随用随检测.
要在编著环境下获取StageWindow句柄,还要继续遍历子窗口,找窗口类为ASISubWndClass的窗口(Director客户区窗口)下面的窗口类为ImlWinCls的子窗口,这就是StageWindow了.

3.如何获取DLL的实例句柄

Xtra也是Dll,如果你要在其中用到资源或者要安装个局部钩子什么的,必须知道它,XDK将DllMain隐藏在头文件中,这在里将句柄赋给了全局变量gXtraFileRef,在要用到的文件中用extern HINSTANCE gXtraFileRef;声明一下就能用了.

4. 关于播放器窗口

在Projector模式下,看起来只有一个窗口,实际上有两个,StageWindow是一个,还有一个看不见,原因是坐标为很大的负值,在屏幕外面.这个窗口是StageWindow的Owner窗口,任务栏上的按钮就是它生成的,而不是StageWindow,这也是为什么Gray Smith的BuddyTray隐藏窗口后任务栏按钮不消失的原因.这让我想起了Delphi和C++Builder,主Form的Handle指向的不是真正的主窗口,真正的主窗口是Application->Handle指向的窗口,也是看不见的.不知道是谁偷谁的.;)
楼主热帖
河边已是一首歌
回复

使用道具 举报

206

主题

4455

帖子

7万

积分

初编室元帅

Rank: 14Rank: 14Rank: 14Rank: 14

活跃会员帅哥会员百帖纪念荣誉勋章论坛万元户

沙发
发表于 2014-11-24 22:00:38 | 只看该作者
谢谢楼主提供分享!!

131

主题

5678

帖子

11万

积分

初编室元帅

Rank: 14Rank: 14Rank: 14Rank: 14

帅哥会员活跃会员论坛万元户百帖纪念荣誉勋章

板凳
发表于 2015-1-21 11:49:18 | 只看该作者
阳春白雪,逛一逛,看一看,顶一顶。
您需要登录后才可以回帖 登录 | 加入初编室

本版积分规则

手机版|小黑屋|初级视频编辑室

GMT+8, 2024-6-9 17:54 , Processed in 0.080717 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表