📄 vdjapp.h
字号:
/*
* VideoDJ视频编辑主程序头文件,主要定义了CVDJApp和CWindow
* 创建人 : 张毅
* 创建时间: 2006-09-02
*/
#include "AEEAppGen.h" // Applet interface definitions
#include "AEEStdLib.h"
#include "AEEFile.h"
#include "AEEMenu.h"
#include "AEEImage.h"
#include "AEEImageCtl.h"
//程序窗口类型
typedef enum
{
WINID_NONE,
WINID_VDJMAIN,
WINID_VDJEDIT,
WINID_LAST
} WINID;
typedef struct CVDJApp CVDJApp;
typedef struct CWindow CWindow;
typedef struct CVDJMain CVDJMain;
typedef struct CVDJEdit CVDJEdit;
typedef struct _IWindow IWindow;
struct _IWindow
{
struct IWindowVtbl *pvt;
};
typedef struct IWindowVtbl IWindowVtbl;
struct IWindowVtbl
{
void (*Enable)(IWindow * po, boolean bEnable);
void (*Redraw)(IWindow * po);
boolean (*HandleEvent)(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam);
void (*Delete)(IWindow * po);
};
/*
#define INHERIT_IWindow(iname) \
void (*Enable)(IWindow * po, boolean bEnable);\
void (*Redraw)(IWindow * po);\
boolean (*HandleEvent)(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam);\
void (*Delete)(IWindow * po)
QINTERFACE(IWindow)
{
INHERIT_IWindow(IWindow);
};
*/
/*
#define IWINDOW_Enable(p) GET_PVTBL(p, IWindow)->Enable(p, TRUE)
#define IWINDOW_Disable(p) GET_PVTBL(p, IWindow)->Enable(p, FALSE)
#define IWINDOW_Redraw(p) GET_PVTBL(p, IWindow)->Redraw(p)
#define IWINDOW_HandleEvent(p, e, w, dw) GET_PVTBL(p, IWindow)->HandleEvent(p, e, w, dw)
#define IWINDOW_Delete(p) GET_PVTBL(p, IWindow)->Delete(p)
*/
#define IWINDOW_Enable(p) ((IWindow *)p)->pvt->Enable(p, TRUE)
#define IWINDOW_Disable(p) ((IWindow *)p)->pvt->Enable(p, FALSE)
#define IWINDOW_Redraw(p) ((IWindow *)p)->pvt->Redraw(p)
#define IWINDOW_HandleEvent(p, e, w, dw) ((IWindow *)p)->pvt->HandleEvent(p, e, w, dw)
#define IWINDOW_Delete(p) ((IWindow *)p)->pvt->Delete(p)
#define CVDJAPP_IWINDOW_SETVTBL(pVtbl, pfnEn, pfnRd, pfnHE, pfnDel) \
(pVtbl)->Enable = (pfnEn); \
(pVtbl)->Redraw = (pfnRd); \
(pVtbl)->HandleEvent = (pfnHE); \
(pVtbl)->Delete = (pfnDel)
#define CVDJAPP_RELEASEIF(p) CVDJApp_FreeIF((IBase **)&(p))
#define CVDJAPP_RELEASEWIN(p) CVDJApp_FreeWin((IWindow **)&(p))
#define CVDJApp_CancelRedraw(p) { CALLBACK_Cancel(&(p)->m_cbRedraw); (p)->m_bRedraw = FALSE; }
/*
#define INHERIT_CWindow(iname) \
DECLARE_VTBL(iname) \
CVDJApp *m_pOwner; \
IShell *m_pIShell; \
IDisplay *m_pIDisplay
*/
struct CWindow
{
//INHERIT_CWindow(IWindow);
IWindow vtIWindow;
CVDJApp *m_pOwner;
IShell *m_pIShell;
IDisplay *m_pIDisplay;
};
struct CVDJMain
{
//INHERIT_CWindow(IWindow);
IWindow vtIWindow;
CVDJApp *m_pOwner;
IShell *m_pIShell;
IDisplay *m_pIDisplay;
IImage *m_pHeadImage;
IImage *m_pLogoImage;
IMenuCtl *m_pMainMenu;
flg m_bAbout:1;
};
struct CVDJEdit
{
//INHERIT_CWindow(IWindow);
IWindow vtIWindow;
CVDJApp *m_pOwner;
IShell *m_pIShell;
IDisplay *m_pIDisplay;
IMenuCtl *m_pVDJMenu;
IImage *m_pVDJImage;
IImageCtl *m_pVideo;
IImageCtl *m_pText;
IImageCtl *m_pAudio;
};
/*
结构体CVDJApp的大小为48字节
*/
//定义应用程序全局数据
struct CVDJApp
{
AEEApplet a; //36字节
WINID m_eActiveWinID; // Active window (窗体类型)
WINID m_eSuspendWinID; // Suspended window (窗体类型)
//当前的窗体指针:可能是VDJMAIN或VDJEDIT
IWindow *m_pIActiveWin;
boolean m_bShowSplash;
IImage *m_pSplashImage;
AEECallback m_cbRedraw;
flg m_bRedraw:1; // Processing redraw
};
//外部声明
extern IWindow * CVDJMain_New(CVDJApp * pVDJApp);
extern void CVDJMain_Enable(IWindow * po, boolean bEnable);
extern void CVDJMain_Delete(IWindow * po);
extern void CVDJMain_Redraw(IWindow * po);
extern boolean CVDJMain_HandleEvent(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam);
extern IWindow * CVDJEdit_New(CVDJApp * pVDJApp);
extern void CVDJEdit_Enable(IWindow * po, boolean bEnable);
extern void CVDJEdit_Delete(IWindow * po);
extern void CVDJEdit_Redraw(IWindow * po);
extern boolean CVDJEdit_HandleEvent(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -