GetClassInfo should return global classes even if the hInstance
[wine] / programs / winemine / main.h
1 #include <windows.h>
2
3 #define BEGINNER_MINES        10
4 #define BEGINNER_COLS         8
5 #define BEGINNER_ROWS         8
6
7 #define ADVANCED_MINES        40
8 #define ADVANCED_COLS         16
9 #define ADVANCED_ROWS         16
10
11 #define EXPERT_MINES          99
12 #define EXPERT_COLS           30
13 #define EXPERT_ROWS           16
14
15 #define MAX_COLS        30
16 #define MAX_ROWS        24
17
18 #define BOTTOM_MARGIN 20
19 #define BOARD_WMARGIN 5
20 #define BOARD_HMARGIN 5
21
22 /* mine defines */
23 #define MINE_WIDTH       16
24 #define MINE_HEIGHT      16
25 #define LED_WIDTH        12
26 #define LED_HEIGHT       23
27 #define FACE_WIDTH       24
28 #define FACE_HEIGHT      24
29
30 typedef enum { SPRESS_BMP, COOL_BMP, DEAD_BMP, OOH_BMP, SMILE_BMP } FACE_BMP;
31
32 typedef enum { WAITING, PLAYING, GAMEOVER, WON } GAME_STATUS;
33
34 typedef enum {
35      MPRESS_BMP, ONE_BMP, TWO_BMP, THREE_BMP, FOUR_BMP, FIVE_BMP, SIX_BMP,
36      SEVEN_BMP, EIGHT_BMP, BOX_BMP, FLAG_BMP, QUESTION_BMP, EXPLODE_BMP,
37      WRONG_BMP, MINE_BMP, QPRESS_BMP
38 } MINEBMP_OFFSET;
39
40 typedef enum { BEGINNER, ADVANCED, EXPERT, CUSTOM } DIFFICULTY;
41
42 typedef struct tagBOARD
43 {
44     BOOL IsMarkQ;
45     HDC    hdc;
46     HINSTANCE hInst;
47     HWND    hWnd;
48     HBITMAP hMinesBMP;
49     HBITMAP hFacesBMP;
50     HBITMAP hLedsBMP;
51     RECT mines_rect;
52     RECT face_rect;
53     RECT timer_rect;
54     RECT counter_rect;    
55
56     unsigned width;
57     unsigned height;
58     POINT pos;
59
60     unsigned time;
61     unsigned num_flags;     
62     unsigned boxes_left;
63     unsigned num_mines;
64
65     /* difficulty info */
66     unsigned rows;
67     unsigned cols;
68     unsigned mines;
69     char best_name [3][16];
70     unsigned best_time [3];
71     DIFFICULTY difficulty;
72
73     POINT press;
74     
75     /* defines for mb */
76     #define MB_NONE 0
77     #define MB_LEFTDOWN 1
78     #define MB_LEFTUP 2
79     #define MB_RIGHTDOWN 3
80     #define MB_RIGHTUP 4
81     #define MB_BOTHDOWN 5
82     #define MB_BOTHUP 6
83     unsigned mb;
84     
85     FACE_BMP face_bmp;
86     GAME_STATUS status;
87     struct BOX_STRUCT
88     {
89         unsigned IsMine    : 1;
90         unsigned IsPressed : 1;
91         unsigned FlagType  : 2;
92         unsigned NumMines  : 4;
93     } box [MAX_COLS + 2] [MAX_ROWS + 2];
94
95     /* defines for FlagType */
96     #define NORMAL 0
97     #define QUESTION 1
98     #define FLAG 2
99     #define COMPLETE 3
100
101 } BOARD;
102
103 void ExitApp( int error );
104
105 void InitBoard( BOARD *p_board );
106
107 void LoadBoard( BOARD *p_board );
108
109 void SaveBoard( BOARD *p_board );
110
111 void DestroyBoard( BOARD *p_board );
112
113 void SetDifficulty( BOARD *p_board, DIFFICULTY difficulty );
114
115 void CheckLevel( BOARD *p_board );
116
117 void CreateBoard( BOARD *p_board );
118
119 void CreateBoxes( BOARD *p_board );
120
121 void TestBoard( HWND hWnd, BOARD *p_board, unsigned x, unsigned y, int msg );
122
123 void TestMines( BOARD *p_board, POINT pt, int msg );
124
125 void TestFace( BOARD *p_board, POINT pt, int msg );
126
127 void DrawBoard( HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board );
128
129 void DrawMines( HDC hdc, HDC hMemDC, BOARD *p_board );
130
131 void DrawMine( HDC hdc, HDC hMemDC, BOARD *p_board, unsigned col, unsigned row, BOOL IsPressed );
132
133 void AddFlag( BOARD *p_board, unsigned col, unsigned row );
134
135 void CompleteBox( BOARD *p_board, unsigned col, unsigned row );
136
137 void CompleteBoxes( BOARD *p_board, unsigned col, unsigned row );
138
139 void PressBox( BOARD *p_board, unsigned col, unsigned row );
140
141 void PressBoxes( BOARD *p_board, unsigned col, unsigned row );
142
143 void UnpressBox( BOARD *p_board, unsigned col, unsigned row );
144
145 void UnpressBoxes( BOARD *p_board, unsigned col, unsigned row );
146
147 void UpdateTimer( BOARD *p_board );
148
149 void DrawLeds( HDC hdc, HDC hMemDC, BOARD *p_board, int number, int x, int y);
150
151 void DrawFace( HDC hdc, HDC hMemDC, BOARD *p_board );
152
153 LRESULT WINAPI MainProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
154
155 BOOL CALLBACK CustomDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
156
157 BOOL CALLBACK CongratsDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
158
159 BOOL CALLBACK TimesDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
160
161 BOOL CALLBACK AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
162
163 /* end of header */