Windows: Update fs newcell and add VIOCNEWCELL2
[openafs.git] / src / WINNT / afsapplib / dialog.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 DIALOG_H
11 #define DIALOG_H
12
13 #include <commctrl.h>
14 #include <commdlg.h>
15 #include <WINNT/fastlist.h>
16
17 /*
18  * DEFINITIONS ________________________________________________________________
19  *
20  */
21
22 #ifndef THIS_HINST
23 #define THIS_HINST  (HINSTANCE)GetModuleHandle(NULL)
24 #endif
25
26 #ifndef EXPORTED
27 #define EXPORTED
28 #endif
29
30 #ifndef IDINIT
31 #define IDINIT  20
32 #endif
33 #ifndef IDAPPLY
34 #define IDAPPLY 21
35 #endif
36 #ifndef IDHELP
37 #define IDHELP   9
38 #endif
39
40 #ifndef limit
41 #define limit(_a,_x,_b)  min( max( (_x), (_a) ), (_b) )
42 #endif
43
44 #ifndef inlimit
45 #define inlimit(_a,_x,_b)  ( (((_x)>=(_a)) && ((_x)<=(_b))) ? TRUE : FALSE )
46 #endif
47
48 #ifndef Set2State
49 #define Set2State(_hDlg,_idc)  SendDlgItemMessage (_hDlg,_idc,BM_SETSTYLE,BS_AUTOCHECKBOX,MAKELPARAM(TRUE,0))
50 #endif
51
52 #ifndef Set3State
53 #define Set3State(_hDlg,_idc)  SendDlgItemMessage (_hDlg,_idc,BM_SETSTYLE,BS_AUTO3STATE,MAKELPARAM(TRUE,0))
54 #endif
55
56 #define CheckMenu(_hm,_id,_f)  CheckMenuItem(_hm,_id,MF_BYCOMMAND|((_f)?MF_CHECKED:MF_UNCHECKED))
57 #define EnableMenu(_hm,_id,_f) EnableMenuItem(_hm,_id,MF_BYCOMMAND|((_f)?MF_ENABLED:MF_GRAYED))
58
59 #ifndef cxRECT
60 #define cxRECT(_r)  ((_r).right - (_r).left)
61 #endif
62
63 #ifndef cyRECT
64 #define cyRECT(_r)  ((_r).bottom - (_r).top)
65 #endif
66
67 #define WM_INITDIALOG_SHEET             0x03FE
68 #define WM_DESTROY_SHEET                0x03FF
69
70 #ifndef IDC_PROPSHEET_TABCTRL
71 #define IDC_PROPSHEET_TABCTRL  0x3020
72 #endif
73
74
75 /*
76  * PROTOTYPES _________________________________________________________________
77  *
78  */
79
80
81 /*
82  *** PROPERTY SHEETS
83  *
84  */
85
86 typedef struct
87    {
88    PROPSHEETHEADER sh;
89    struct {
90       DLGPROC dlgproc;
91       LPARAM lpUser;
92       HWND hDlg;
93    } *aTabs;
94    size_t cTabs;
95    BOOL fMadeCaption;
96    LPARAM lpUser;
97    } PROPSHEET, *LPPROPSHEET;
98
99 EXPORTED LPPROPSHEET PropSheet_Create (int idsTitle, BOOL fContextHelp, HWND hParent = NULL, LPARAM lp = 0);
100 EXPORTED LPPROPSHEET PropSheet_Create (LPTSTR pszTitle, BOOL fContextHelp, HWND hParent = NULL, LPARAM lp = 0);
101 EXPORTED BOOL PropSheet_AddTab (LPPROPSHEET psh, int idsTitle, int idd, DLGPROC dlgproc, LPARAM lpUser, BOOL fHelpButton, BOOL fStartPage = FALSE);
102 EXPORTED BOOL PropSheet_AddTab (LPPROPSHEET psh, LPTSTR pszTitle, int idd, DLGPROC dlgproc, LPARAM lpUser, BOOL fHelpButton, BOOL fStartPage = FALSE);
103 EXPORTED BOOL PropSheet_ShowModal (LPPROPSHEET psh, void (*fnPump)(MSG*lpm) = 0);
104 EXPORTED HWND PropSheet_ShowModeless (LPPROPSHEET psh, int nCmdShow = SW_SHOW);
105 EXPORTED LPARAM PropSheet_FindTabParam (HWND hTab);
106 EXPORTED void PropSheet_Free (LPPROPSHEET psh);
107 EXPORTED HWND PropSheet_FindTabWindow (LPPROPSHEET psh, DLGPROC dlgproc);
108
109 EXPORTED void PropSheetChanged (HWND hDlg);
110
111 EXPORTED void TabCtrl_SwitchToTab (HWND hTab, int iTab);
112
113
114 /*
115  ** LIST, TREELIST, FASTLIST COLUMNS
116  *
117  */
118
119 #define nCOLUMNS_MAX    32  // maximum number of columns in a listview
120
121 typedef struct
122    {
123    LONG lvsView;
124    size_t nColsAvail;
125    size_t iSort;
126    int cxColumns[ nCOLUMNS_MAX ];
127    int idsColumns[ nCOLUMNS_MAX ];
128    size_t nColsShown;
129    size_t aColumns[ nCOLUMNS_MAX ];     // returns 0-based index into cxColumns
130    } VIEWINFO, *LPVIEWINFO;
131
132 #define COLUMN_JUSTMASK   0xF0000000    // cxColumns |=  to make right-just col
133 #define COLUMN_RIGHTJUST  0x80000000    // cxColumns |=  to make right-just col
134 #define COLUMN_CENTERJUST 0x40000000    // cxColumns |=  to make center-just col
135
136 #define COLUMN_SORTREV    0x80000000    // iSort |=  to sort descending
137
138 /*
139  ** FASTLISTS
140  *
141  */
142
143 EXPORTED LPARAM FL_StartChange (HWND hList, BOOL fReset = TRUE);
144 EXPORTED void FL_EndChange (HWND hList, LPARAM lpToSelect = 0);
145
146 EXPORTED void FL_GetColumns (HWND hList, WORD nCols, WORD *acx);
147 EXPORTED void FL_ResizeColumns (HWND hList, WORD nCols, WORD *acx);
148 EXPORTED void cdecl FL_SetColumns (HWND hList, WORD nCols, WORD *acx, ...);
149
150 EXPORTED HLISTITEM cdecl FL_AddItem (HWND hList, LPVIEWINFO lpvi, LPARAM lp, int iImage1, ...);
151 EXPORTED HLISTITEM cdecl FL_AddItem (HWND hList, WORD nCols, LPARAM lp, int iImage1, ...);
152 EXPORTED void FL_GetItemText (HWND hList, HLISTITEM hItem, int iCol, LPTSTR pszText);
153 EXPORTED void FL_SetItemText (HWND hList, HLISTITEM hItem, int iCol, LPCTSTR pszText);
154
155 EXPORTED HLISTITEM FL_GetSelected (HWND hList, HLISTITEM hItemSearch = NULL);
156 EXPORTED void FL_SetSelected (HWND hList, HLISTITEM hItem);
157
158 EXPORTED LPARAM FL_GetSelectedData (HWND hList);
159 EXPORTED void FL_SetSelectedByData (HWND hList, LPARAM lp);
160 EXPORTED HLISTITEM FL_GetFocused (HWND hList);
161
162 EXPORTED LPARAM FL_GetData (HWND hList, HLISTITEM hItem);
163 EXPORTED LPARAM FL_GetFocusedData (HWND hList);
164 EXPORTED HLISTITEM FL_GetIndex (HWND hList, LPARAM lp);
165
166 EXPORTED BOOL FL_HitTestForHeaderBar (HWND hList, POINT ptClient);
167
168 EXPORTED void FL_RestoreView (HWND hList, LPVIEWINFO lpvi);
169 EXPORTED void FL_StoreView (HWND hList, LPVIEWINFO lpvi);
170 EXPORTED void FL_SortView (HWND hList, LPVIEWINFO lpvi);
171
172 /*
173  ** LIST VIEWS
174  *
175  */
176
177 #define INDEX_SORT   (int)-1
178
179 EXPORTED LPARAM LV_StartChange (HWND hList, BOOL fReset = TRUE);
180 EXPORTED void LV_EndChange (HWND hList, LPARAM lpToSelect = (LPARAM)NULL);
181
182 EXPORTED void LV_GetColumns (HWND hList, WORD nCols, WORD *acx);
183 EXPORTED void LV_ResizeColumns (HWND hList, WORD nCols, WORD *acx);
184 EXPORTED void cdecl LV_SetColumns (HWND hList, WORD nCols, WORD *acx, ...);
185
186 EXPORTED void cdecl LV_AddItem (HWND hList, LPVIEWINFO lpvi, int idx, LPARAM lp, int iImage, ...);
187 EXPORTED void cdecl LV_AddItem (HWND hList, WORD nCols, int idx, LPARAM lp, int iImage, ...);
188 EXPORTED void cdecl LV_GetItemText (HWND hList, int inx, short col, LPTSTR pszText);
189 EXPORTED void cdecl LV_SetItemText (HWND hList, int idx, short col, LPCTSTR pszText);
190
191 EXPORTED int LV_GetSelected (HWND hList, int idx = -1);
192 EXPORTED void LV_SetSelected (HWND hList, int idx);
193
194 EXPORTED LPARAM LV_GetSelectedData (HWND hList);
195 EXPORTED void LV_SetSelectedByData (HWND hList, LPARAM lp);
196 EXPORTED int LV_GetFocused (HWND hList);
197
198 EXPORTED LPARAM LV_GetData (HWND hList, int idx);
199 EXPORTED LPARAM LV_GetFocusedData (HWND hList);
200 EXPORTED int LV_GetIndex (HWND hList, LPARAM lp);
201
202 EXPORTED BOOL LV_HitTestForHeaderBar (HWND hList, POINT ptClient);
203
204 EXPORTED void LV_RestoreView (HWND hList, LPVIEWINFO lpvi);
205 EXPORTED void LV_StoreView (HWND hList, LPVIEWINFO lpvi);
206 EXPORTED void LV_SortView (HWND hList, LPVIEWINFO lpvi);
207 EXPORTED int LV_PickInsertionPoint (HWND hList, LPTSTR pszNewItem, int (__stdcall *fnSort)(LPCTSTR, LPCTSTR) = 0);
208
209
210 /*
211  *** COMBO BOXES
212  *
213  */
214
215 EXPORTED LPARAM CB_StartChange (HWND hCombo, BOOL fReset = TRUE);
216 EXPORTED void CB_EndChange (HWND hCombo, LPARAM lpToSelect = (LPARAM)NULL);
217
218 EXPORTED UINT CB_AddItem (HWND hCombo, int nsz, LPARAM lp);
219 EXPORTED UINT CB_AddItem (HWND hCombo, LPCTSTR psz, LPARAM lp);
220
221 EXPORTED UINT CB_GetSelected (HWND hCombo);
222 EXPORTED void CB_SetSelected (HWND hCombo, UINT index);
223
224 EXPORTED LPARAM CB_GetSelectedData (HWND hCombo);
225 EXPORTED void CB_SetSelectedByData (HWND hCombo, LPARAM lp);
226
227 EXPORTED LPARAM CB_GetData (HWND hCombo, UINT index);
228 EXPORTED UINT CB_GetIndex (HWND hCombo, LPARAM lp);
229
230
231 /*
232  *** LIST BOXES
233  *
234  */
235
236 EXPORTED LPARAM LB_StartChange (HWND hList, BOOL fReset = TRUE);
237 EXPORTED void LB_EndChange (HWND hList, LPARAM lpToSelect = (LPARAM)NULL);
238
239 EXPORTED UINT LB_AddItem (HWND hList, int nsz, LPARAM lp);
240 EXPORTED UINT LB_AddItem (HWND hList, LPCTSTR psz, LPARAM lp);
241
242 EXPORTED void LB_EnsureVisible (HWND hList, UINT index);
243
244 EXPORTED UINT LB_GetSelected (HWND hList);
245 EXPORTED void LB_SetSelected (HWND hList, UINT index);
246
247 EXPORTED LPARAM LB_GetSelectedData (HWND hList);
248 EXPORTED void LB_SetSelectedByData (HWND hList, LPARAM lp);
249
250 EXPORTED LPARAM LB_GetData (HWND hList, UINT index);
251 EXPORTED UINT LB_GetIndex (HWND hList, LPARAM lp);
252
253 EXPORTED void LB_EnableHScroll (HWND hList);
254
255 /*
256  *** TREEVIEWS
257  *
258  */
259
260 EXPORTED LPARAM TV_StartChange (HWND hTree, BOOL fReset);
261 EXPORTED void TV_EndChange (HWND hTree, LPARAM lpToSelect = (LPARAM)NULL);
262
263 EXPORTED LPARAM TV_GetData (HWND hTree, HTREEITEM hti);
264 EXPORTED LPARAM TV_GetSelectedData (HWND hTree);
265
266 EXPORTED HTREEITEM TV_RecursiveFind (HWND hTree, HTREEITEM htiRoot, LPARAM lpToFind);
267
268
269 /*
270  *** COMMDLG      
271  *
272  */
273
274 EXPORTED BOOL Browse_Open (HWND hParent, LPTSTR pszFilename, LPTSTR pszLastDirectory, int idsFilter, int iddTemplate = 0, LPOFNHOOKPROC lpfnHook = NULL, DWORD lCustData = 0);
275 EXPORTED BOOL Browse_Save (HWND hParent, LPTSTR pszFilename, LPTSTR pszLastDirectory, int idsFilter, int iddTemplate = 0, LPOFNHOOKPROC lpfnHook = NULL, DWORD lCustData = 0);
276
277
278 /*
279  *** MISCELLANEOUS
280  *
281  */
282
283 EXPORTED void StartHourGlass (void);
284 EXPORTED void StopHourGlass (void);
285
286 EXPORTED void DisplayContextMenu (HMENU hm, POINT ptScreen, HWND hParent);
287
288 EXPORTED size_t CountChildren (HWND hParent, LPTSTR pszClass);
289
290 EXPORTED WORD NextControlID (HWND hParent);
291
292 EXPORTED BOOL IsAncestor (HWND hParent, HWND hChild);
293
294 EXPORTED HWND GetTabChild (HWND hTab);
295
296 EXPORTED HWND GetLastDlgTabItem (HWND hDlg);
297
298 EXPORTED BOOL IsPropSheet (HWND hSheet);
299
300
301 #endif
302