📄 dialog.h
字号:
#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 + -