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

📄 dialog.h

📁 ct952 source code use for Digital Frame Photo
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef __DIALOG_H__
#define __DIALOG_H__

//#include "colordef.h"
#include "menu.h"

#define MAX_SUPPORT_DIALOG_HANDLE_NUM		        5

//define invlide dialog handle
#define DIALOG_HANDLE_INVALID				        0xFF

#define DIALOG_HANDLE_FREE					        0xFE

//define the height of the title
#define DIALOG_TITLE_HEIGHT					        32

//define the height of the button
#define DIALOG_BUTTON_HEIGHT                        26

//define the height of the separator
#define DIALOG_SEPARATOR_HEIGHT                     4

//define the thickness of the frame
#define DIALOG_FRAME_THICKNESS                      4

//define the distance between the title background and the string
#define DIALOG_TITLE_BACKGROUND_STRING_DISTANCE_H   4

//define the distance between the button
#define DIALOG_BUTTON_BUTTON_DISTANCE		        24		

#define DIALOG_BUTTON_ARC                           15
#define DIALOG_TITLE_REGION_ARC                     19
#define DIALOG_CONTENT_REGION_ARC                   19

//define the distance between the button and the bottom of the dialog box
#define DIALOG_BUTTON_DISTANCE_V                    12		

#define DIALOG_BUTTON_STRING_OPTIMIZED_DISTANCE_H   8

//Define the return status for DIALOG_ProcessKey
#define DIALOG_ACTION_DONE					        0
#define DIALOG_ACTION_BUTTON_PRESSED		        0x100
#define DIALOG_ACTION_NONE                          0xFFFF

//define the attribute of the button
#define DIALOG_BUTTON_START_X_OPTIMIZED		        0xFFFF
#define DIALOG_BUTTON_START_Y_OPTIMIZED		        0xFFFF
#define DIALOG_BUTTON_WIDTH_OPTIMIZED		        0xFF

//define the alignment of the title string
#define DIALOG_TITLE_STRING_ALIGNMENT_LEFT          0
#define DIALOG_TITLE_STRING_ALIGNMENT_CENTER        1
#define DIALOG_TITLE_STRING_ALIGNMENT_RIGHT         2

//define the type of the button
#define DIALOG_BUTTON_TYPE_NORMAL                   0
#define DIALOG_BUTTON_TYPE_HIGHLIGHT                1

//Dialog action
#define DLG_ACTION_DONE					        0
#define DLG_ACTION_EXIT_RECOVER_NENU            1
#define DLG_ACTION_EXIT_NEW_NENU                2
#define DLG_ACTION_CHANGE_DLG                   3
#define DLG_ACTION_FORCE_EXIT                   4

//define the handle of the dialog
typedef BYTE HDIALOG;

typedef struct tagDLG_BUTTON
{
	WORD *pwButtonText;	
	BYTE bID;
	WORD wStartX;
} DLG_BUTTON, *PDLG_BUTTON;

// The dialog structure
typedef struct tagDIALOG
{
    WORD wStartX;               
    WORD wStartY;
    WORD wWidth;
	WORD wHeight;
	WORD *pwTitleText;
	BYTE bTitleAlignment;
	BYTE bButtonNum;
	BYTE bDefaultButtonID;	//If there is button in the dialog, need to set the default button to draw the cursor.
	BYTE bButtonWidth;
    WORD wButtonStartY;
	DLG_BUTTON *pButton;		//point to buttons. NULL==> no button.
} DIALOG, *PDIALOG;

//define the palette entry
#define DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_BEGIN					GDI_DIALOG_COMPONENT_PALETTE_INDEX_START
#define DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_RESERVE_NUM              15
#define DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_BEGIN					(DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_BEGIN+DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_RESERVE_NUM)
#define DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_RESERVE_NUM           15


typedef enum tagDIALOG_NORMAL_BUTTON_PALETTE
{
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_0 = DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_BEGIN,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_3,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_7,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_8,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_10,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_11,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_12,
} DIALOG_NORMAL_BUTTON_PALETTE;

typedef enum tagDIALOG_HIGHLIGHT_BUTTON_PALETTE
{
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_0 = DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_BEGIN,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_1,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_2,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_3,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_4,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_5,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_6,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_7,
    DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_8,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_9,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_10,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_11,
	DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_PALETTE_12
} DIALOG_HIGHLIGHT_BUTTON_PALETTE;

#define DIALOG_PALETTE_ENTRY_BEGIN									(DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_BEGIN+DIALOG_PALETTE_ENTRY_HIGHLIGHT_BUTTON_RESERVE_NUM)
#define DIALOG_PALETTE_ENTRY_FRAME						            (DIALOG_PALETTE_ENTRY_BEGIN)
#define DIALOG_PALETTE_ENTRY_TITLE_BACKGROUND			            (DIALOG_PALETTE_ENTRY_BEGIN+1)
#define DIALOG_PALETTE_ENTRY_TITLE_TEXT					            (DIALOG_PALETTE_ENTRY_BEGIN+2)
#define DIALOG_PALETTE_ENTRY_CONTENT_BACKGROUND			            (DIALOG_PALETTE_ENTRY_BEGIN+3)
#define DIALOG_PALETTE_ENTRY_CONTENT_TEXT                           (DIALOG_PALETTE_ENTRY_BEGIN+4)	
#define DIALOG_PALETTE_ENTRY_TITLE_SEPARATOR_PALETTE0_1             (DIALOG_PALETTE_ENTRY_BEGIN+5)
#define DIALOG_PALETTE_ENTRY_TITLE_SEPARATOR_PALETTE1_1             (DIALOG_PALETTE_ENTRY_BEGIN+6)
#define DIALOG_PALETTE_ENTRY_BUTTON_STRING                          (DIALOG_PALETTE_ENTRY_BEGIN+7)


#define DIALOG_PALETTE_COLOR_CONTENT_BACKGROUND_1			        0x9BB9D1
#define DIALOG_PALETTE_COLOR_CONTENT_TEXT_1                       	0x423789
#define DIALOG_PALETTE_COLOR_TITLE_BACKGROUND_1			            0x423789
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE0_1             0x7B76A2
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE1_1             0x8C9AA6

#define DIALOG_PALETTE_COLOR_CONTENT_BACKGROUND_2			        0xECC47C
#define DIALOG_PALETTE_COLOR_CONTENT_TEXT_2                       	0x860706
#define DIALOG_PALETTE_COLOR_TITLE_BACKGROUND_2			            0xCC643C
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE0_2             0x9C8050
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE1_2             0xDBB47B

#define DIALOG_PALETTE_COLOR_CONTENT_BACKGROUND_3			        0xDBB28D
#define DIALOG_PALETTE_COLOR_CONTENT_TEXT_3                       	0x2A2694
#define DIALOG_PALETTE_COLOR_TITLE_BACKGROUND_3			            0x6DB4CF
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE0_3             0x987A67
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE1_3             0xB29073

#define DIALOG_PALETTE_COLOR_CONTENT_BACKGROUND_4			        0xE1CB86
#define DIALOG_PALETTE_COLOR_CONTENT_TEXT_4                       	0x546791
#define DIALOG_PALETTE_COLOR_TITLE_BACKGROUND_4			            0x546791
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE0_4             0x8C7F54
#define DIALOG_PALETTE_COLOR_TITLE_SEPARATOR_PALETTE1_4             0xAA9965

#define DIALOG_PALETTE_COLOR_TITLE_TEXT					            0xFFFFFF
#define DIALOG_PALETTE_COLOR_FRAME						            0x423789
#define DIALOG_PALETTE_COLOR_BUTTON_STRING                          0xFFFFFF


//Export APIs
HDIALOG DIALOG_CreateDialog(DIALOG *pDialog, BYTE bUIStyle);
void DIALOG_ShowDialog(HDIALOG hDialog, BYTE bBackgroundColor, BYTE bShowCursor);
void DIALOG_SetCursor(HDIALOG hDialog, BYTE bButtonID);
void DIALOG_ClearCursor(HDIALOG hDialog);
WORD DIALOG_Processkey(HDIALOG hDialog, BYTE bKey);
void DIALOG_DeleteDialog(HDIALOG hDialog, BYTE bClearBackground);
void DIALOG_InitializeGDI(BYTE bUIStyle);
void DIALOG_ShowMessage(HDIALOG hDialog, WORD wStartX, WORD wStartY, WORD *pwString);

//Internal functions.
HDIALOG _DIALOG_GetDialogHandle(void);
BYTE _DIALOG_GetButtonWidth(HDIALOG hDialog);
WORD _DIALOG_GetButtonStartX(HDIALOG hDialog, BYTE bButtonIndex);
WORD _DIALOG_GetButtonStartY(HDIALOG hDialog);
void _DIALOG_DrawButton(HDIALOG hDialog, BYTE bButtonIndex, BYTE bType);

#ifdef DIALOG_MAIN_FILE

BYTE _bDIALOGSeparatorPalette1[DIALOG_SEPARATOR_HEIGHT] = {DIALOG_PALETTE_ENTRY_TITLE_SEPARATOR_PALETTE0_1, DIALOG_PALETTE_ENTRY_TITLE_SEPARATOR_PALETTE0_1, DIALOG_PALETTE_ENTRY_TITLE_SEPARATOR_PALETTE1_1, DIALOG_PALETTE_ENTRY_TITLE_SEPARATOR_PALETTE1_1};

BYTE _bDIALOGNormalButtonPalette1[DIALOG_BUTTON_HEIGHT] = 
{
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_0,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_3,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_7,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_8,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_10, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_10, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_10, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_10,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_8,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_7,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_3,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_0
};

BYTE _bDIALOGNormalButtonPalette2[DIALOG_BUTTON_HEIGHT] = 
{
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_0,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_3,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_3,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1
};

/*
BYTE _bDIALOGNormalButtonPalette3[DIALOG_BUTTON_HEIGHT] = 
{
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_0,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_1,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_2,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_3,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_4,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_5,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_7, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_7,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_8, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_8,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_9,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_8, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_8,
    DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_7, DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_7,
	DIALOG_PALETTE_ENTRY_NORMAL_BUTTON_PALETTE_6,

⌨️ 快捷键说明

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