⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vdjapp.h

📁 这是我写一个完成的Brew小程序
💻 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 + -