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

📄 schmodule.h

📁 brew开发的日历程序 完全模仿mediaplayer的结构设计 值得初学者学习
💻 H
📖 第 1 页 / 共 2 页
字号:
/**
 * File Name    : schmodule.h                                                                 
 * Created      : 07/04/10                                                                       
 * Author       : ZhongNingLin@neusoft.com                                                                    
 * Model        : 05YOP                                                                           
 * Description  : [[CN]] 此文件的职责是: [[CN]]                           
**/
#ifndef _SCHMODULE_H
        #define _SCHMODULE_H

/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEEModGen.h"          // Module interface definitions
#include "AEEAppGen.h"          // Applet interface definitions
#include "AEEShell.h"           // Shell interface definitions
#include "AEEFile.h"			// File interface definitions
#include "AEEDB.h"				// Database interface definitions
#include "AEEstdlib.h"
#include "AEE.h"
#include "AEEDate.h"
#include "AEETime.h"
#include "AEEText.h"
#include "Schedule.bid"
#include "schedule.brh"



/*INTERFACE DEFINITION*/
typedef struct _IWindow  IWindow;
QINTERFACE(IWindow)
{
   /*Enables/Disables the window. Window controls will not process*/
   /*events if the window is disabled.*/
   void     (*Enable)(IWindow * po, boolean bEnable);

   /*Redraws the window if enabled*/
   void     (*Redraw)(IWindow * po);

   /*Handles the events routed to the window*/
   boolean  (*HandleEvent)(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam);

   /*Releases the window resources*/
   void     (*Delete)(IWindow * po);
};

#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)

//MACROS

#define SH_IWINDOW_SETVTBL(pVtbl, pfnEn, pfnRd, pfnHE, pfnDel) \
   (pVtbl)->Enable      = (pfnEn); \
   (pVtbl)->Redraw      = (pfnRd); \
   (pVtbl)->HandleEvent = (pfnHE); \
   (pVtbl)->Delete      = (pfnDel)

#define SH_RELEASEIF(p)                SH_FreeIF((IBase **)&(p))
#define SH_RELEASEWIN(p)               SH_FreeWin((IWindow **)&(p))
#define SH_WINERR_RETURN(p)            { SH_RELEASEWIN(p); return NULL; }

#define SH_DRAWHEADER(pme)             SH_DrawImage((pme)->m_pOwner->m_pHdrImage, &(pme)->m_pOwner->m_rectHdr, TRUE)

#define SH_ISEVTKEY(e)                 ((e) == EVT_KEY)
#define SH_ISCLR(e)                    (SH_ISEVTKEY(e) && wParam == AVK_CLR)
#define SH_ISEVTCMD(e)                 ((e) == EVT_COMMAND)
#define SH_ISCMD(e, c)                 (SH_ISEVTCMD(e) && (c) == wParam)

#define Schedule_CancelRedraw(p)   { CALLBACK_Cancel(&(p)->m_cbRedraw); (p)->m_bRedraw = FALSE; }
#define Schedule_DisableWin(p)     { IWINDOW_Disable((p)->m_pWin); Schedule_CancelRedraw(p); }

/*===========================================================================
                      PUBLIC DATA DECLARATIONS
===========================================================================*/

/*-------------------------------------------------------------------
            Defines
-------------------------------------------------------------------*/
#define MP_SPLASH_TIMER       750
#define EVT_CREATEMEDIA       EVT_USER
#define EVT_CREATEMEDIA_QCP   EVT_USER + 1

// Based on Menu style sheet:
#define MENU8_FT                  AEE_FT_NONE
#define MENU8_SELECT_FT           AEE_FT_RAISED
#define MENU8_RO                  AEE_RO_TRANSPARENT
#define MENU8_SELECT_RO           AEE_RO_TRANSPARENT
#define MENU8_COLOR_MASK 	      (MC_BACK | MC_SEL_BACK | MC_SEL_TEXT)
#define MENU8_BACKGROUND	      MAKE_RGB(255,255,204)
#define MENU8_SELECT_BACKGROUND	  MAKE_RGB(153, 204, 204)
#define RECT_BACKGROUND           MAKE_RGB(153, 204, 204)
#define MENU8_SELECT_TEXT	      RGB_BLACK

#define TB8_BACKGROUND	          MAKE_RGB(192,192,192)
#define TB8_SELECT_BACKGROUND	  MAKE_RGB(192, 192, 192)

//MAIN WINDOW MACROS
#define UP                    1
#define DOWN                  2
#define LEFT                  3
#define RIGHT                 4
#define BANNER_DISPLAY_TIMER  750
//CREATE EVENT WINDWO MACROS
#define MAX_DESC_SIZE         30
#define CTL_TAB_LEFT          0  // The wParam value of a left key press in an EVT_CTL_TAB event
#define CTL_TAB_RIGHT         1  // The wParam value of a right key press in an EVT_CTL_TAB event

/*===========================================================================
                      ENUM TYPE DECLARATIONS
===========================================================================*/
/*窗口的类型*/
typedef enum _WinTypeType
{
	APP_NONE,
	APP_MAIN_WIN,            //主窗口   used
	APP_DATESEL_WIN,         //选择日期窗口 used
	APP_WEEKDATEDISP_WIN,    //星期窗口 used
	APP_STATE_ONEDAYDISP,    //一日事件窗口 used
	APP_STATE_MENUDISP,      //目录窗口 used date select /event view /event creat
	APP_STATE_EVTTYPE,       //事件类型目录窗口calandar /memo /other
	APP_STATE_CREATEVT,      //create event used
	APP_STATE_EVTLIST        //事件列表窗口
}WinType;

/*程序事件状态*/
typedef enum _AppStateType
{
	APP_STATE_MAIN,          //主窗口
	APP_STATE_DATEDISP
}AppStateType;


//===========================EXAMINE EVENT ENUM TYPE=========================
typedef enum _MenuStateType
{
    APP_MENU_MAIN,
	APP_MENU_OPTION,
	APP_MENU_SELECT,
	APP_MENU_VIEWD
}MenuState;



//===========================CREATE EVENT WINDOW ENUM TYPE===================
typedef enum _AppState
{
	APP_MEMO,             //备忘录
	APP_MEMO_ALARM,       //备忘录闹钟
	APP_MEMO_ALARMTIME,   //备忘录闹钟时间
	APP_BRITHDATY_ALARM,  //生日状态下的闹钟设置
    APP_BRITHDATY_DATE,   //生日出生年份
	APP_BRITHDATY_ALARMTIME,//生日状态下的闹钟时间设置
	APP_TELPHON,          //通话
	APP_TELPHON_NAME,     //通话姓名
	APP_TELPHON_TIME,     //通话时间
	APP_TELPHON_ALARM,    //通话闹钟
	APP_BRITHDATY,        //生日
	APP_OTHER,            //其他
}AppState;
/*===========================================================================
                      STRUCTURE TYPE DECLARATIONS
===========================================================================*/
typedef struct Schedule       Schedule;
/*扩展接口的宏*/
#define INHERIT_CWindow(iname) \
   DECLARE_VTBL(iname) \
   Schedule * m_pOwner; \
   IShell *       m_pIShell; \
   IDisplay *     m_pIDisplay; \
   flg            m_bActive:1

/*定义一个抽象窗口*/
typedef struct CWindow
{
   INHERIT_CWindow(IWindow);
}CWindow;
//===========================MAIN WINDOW STRUCTURE============================
typedef struct _ScheExt
{
	AEERect                 m_rRect1;			// Screen Rect
	AEERect                 m_rRect2;			// Screen Rect
	AEERect                 m_rRect3;			// Screen Rect
}ScheExt;
// Main window: Displays main canlandar.
typedef struct _CMainWin
{
   INHERIT_CWindow(IWindow); 
   
   AEERect        m_rGridRect;
	int           v_distance;
	int           h_distance;
	int           h_startPos;
	int           v_startPos;
	int           h_count;
	int           v_count;
	int           m_firstPos;
	int           m_days;
	flg           m_bAbout:1;
	ScheExt*      set;
}CMainWin;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -