51ef7c5c38cf765e765fd6d46c351aa36362096f
[openafs.git] / src / WINNT / afsapplib / al_wizard.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #ifndef AL_WIZARD_H
11 #define AL_WIZARD_H
12
13 #include <WINNT/TaLocale.h>
14 #include <WINNT/subclass.h>
15
16 #ifndef EXPORTED
17 #define EXPORTED
18 #endif
19
20
21 /*
22  * DEFINITIONS ________________________________________________________________
23  *
24  */
25
26 #ifndef THIS_HINST
27 #define THIS_HINST   (HINSTANCE)GetModuleHandle(NULL)
28 #endif
29
30 #define IDC_WIZARD   898  // WM_COMMAND,IDC_WIZARD: HIWORD(wp)=WIZARD_COMAMND
31
32 typedef class EXPORTED WIZARD WIZARD, *LPWIZARD;
33
34
35 /*
36  * WIZARD CLASS _______________________________________________________________
37  *
38  */
39
40 typedef enum
41    {
42    wcSTATE_ENTER,       // now entering state (even w/o display)
43    wcSTATE_LEAVE,       // now leaving state (even w/o display)
44    wcIS_STATE_DISABLED, // return TRUE if state disabled
45    } WIZARD_COMMAND;
46
47 typedef struct
48    {
49    int st;      // numeric state identifier
50    int idd;     // dialog template for wizard pane
51    DLGPROC dlgproc;     // dialog procedure for this state
52    LPARAM lp;   // lparam for dialog initialization
53    } WIZARD_STATE, *LPWIZARD_STATE;
54
55 #define BACK_BUTTON    0x0001
56 #define NEXT_BUTTON    0x0002
57
58 class EXPORTED WIZARD
59    {
60    public:
61
62       WIZARD (void);
63       ~WIZARD (void);
64
65       static LPWIZARD GetWizard (HWND hWnd);
66       HWND GetWindow (void);
67
68       void SetDialogTemplate (int iddTemplate, int idcLeftPane, int idcRightPane, int idcBack, int idcNext);
69       void SetGraphic (int idbGraphic16, int idbGraphic256);
70       void SetStates (LPWIZARD_STATE aStates, size_t cStates);
71       void SetGraphicCallback (void (CALLBACK *pfnCallback)(LPWIZARD pWiz, HDC hdcTarget, LPRECT prTarget, HPALETTE hPal));
72
73       int GetState (void);
74       void SetState (int stNew, BOOL fForce = FALSE);
75       BOOL Show (BOOL fShow = TRUE);
76
77       void SetBackground (int iddBackground, BOOL fBlue = TRUE, DLGPROC dlgproc = NULL);
78       void SetBackgroundText (LPTSTR pszText, HFONT hfText = NULL);
79       void SetBackgroundText (int idsText, HFONT hfText = NULL);
80       BOOL ShowBackground (BOOL fShow = TRUE);
81       HWND GetBackgroundWindow (void);
82
83       void EnableButton (int idcButton, BOOL fEnable);
84       void EnableButtons (DWORD dwButtonFlags = BACK_BUTTON | NEXT_BUTTON);
85       void SetButtonText (int idcButton, int idsText);
86       void SetDefaultControl (int idc);
87
88       BOOL SendStateCommand (int st, WIZARD_COMMAND wc);
89
90    private:
91
92       void Refresh (DWORD dwRefFlags);
93       HWND GetRightHandWindow (void);
94       void GeneratePalette (RGBQUAD *pargb = NULL);
95       LPWIZARD_STATE FindState (int stFind);
96
97       static BOOL CALLBACK Background_DlgProc (HWND hBkg, UINT msg, WPARAM wp, LPARAM lp);
98       static BOOL CALLBACK Background_PaintHook (HWND hBkg, UINT msg, WPARAM wp, LPARAM lp);
99       void Background_OnInitDialog (HWND hBkg);
100       void Background_OnSize (void);
101       void Background_OnDestroy (void);
102       void Background_OnClose (void);
103       BOOL Background_OnPaint (void);
104
105       static BOOL CALLBACK Template_DlgProc (HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
106       static BOOL CALLBACK Template_LeftPaneHook (HWND hLHS, UINT msg, WPARAM wp, LPARAM lp);
107       BOOL Template_ForwardMessage (HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
108       void Template_OnInitDialog (HWND hWnd);
109       BOOL Template_OnPaintLHS (HWND hLHS);
110
111       int m_iddTemplate;
112       int m_idcLeftPane;
113       int m_idcRightPane;
114       int m_idcBack;
115       int m_idcNext;
116       int m_idbGraphic16;
117       HBITMAP m_bmpGraphic16;
118       int m_idbGraphic256;
119       HBITMAP m_bmpGraphic256;
120       HPALETTE m_palGraphic;
121       LPWIZARD_STATE m_aStates;
122       size_t m_cStates;
123       int m_stCurrent;
124       BOOL m_fShowing;
125       HWND m_hWnd;
126
127       int m_iddBackground;
128       BOOL m_fBlue;
129       HWND m_hBkg;
130       DLGPROC m_fnBackground;
131       TCHAR m_szBackground[ cchRESOURCE ];
132       HBITMAP m_bmpBackground;
133       HFONT m_hfBackground;
134       HBITMAP m_bmpBuffer;
135       RECT m_rBuffer;
136
137       void (CALLBACK *m_pfnCallback)(LPWIZARD pWiz, HDC hdcTarget, LPRECT prTarget, HPALETTE hPal);
138    };
139
140
141 #endif
142