4 * Copyright 1996 Ulrich Schmid
5 * Copyright 2002 Sylvain Petreolle
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
23 * PROJECT: ReactOS Program Manager
24 * COPYRIGHT: GPL - See COPYING in the top level directory
25 * FILE: base/shell/progman/progman.h
26 * PURPOSE: ProgMan header
27 * PROGRAMMERS: Ulrich Schmid
29 * Hermes Belusca-Maito (hermes.belusca@sfr.fr)
38 #define WIN32_NO_STATUS
50 #define MAX_STRING_LEN 255
51 #define MAX_PATHNAME_LEN 1024
52 #define MAX_LANGUAGE_NUMBER (PM_LAST_LANGUAGE - PM_FIRST_LANGUAGE)
57 #define DEFAULTICON OIC_WINLOGO
59 #define DEF_GROUP_WIN_XPOS 100
60 #define DEF_GROUP_WIN_YPOS 100
61 #define DEF_GROUP_WIN_WIDTH 300
62 #define DEF_GROUP_WIN_HEIGHT 200
66 * windowsx.h extensions
68 #define EnableDlgItem(hDlg, nID, bEnable) \
69 EnableWindow(GetDlgItem((hDlg), (nID)), (bEnable))
75 typedef struct _PROGRAM PROGRAM
, *PPROGRAM
;
76 typedef struct _PROGGROUP PROGGROUP
, *PPROGGROUP
;
93 LPWSTR hWorkDir
; /* Extension 0x8101 */
94 INT nHotKey
; /* Extension 0x8102 */
95 INT nCmdShow
; /* Extension 0x8103 */
96 BOOL bNewVDM
; /* Extension 0x8104 */
100 }; // PROGRAM, *PPROGRAM;
102 typedef enum _GROUPFORMAT
105 NT_Ansi
= 0x1, // 0x02
106 NT_Unicode
= 0x2, // 0x03
116 HIMAGELIST hListLarge
;
117 HIMAGELIST hDragImageList
;
124 // BOOL bFileNameModified;
125 BOOL bOverwriteFileOk
;
137 PROGRAM
* hActiveProgram
;
141 }; // PROGGROUP, *PPROGGROUP;
144 typedef struct _GLOBALS
153 HICON hPersonalGroupIcon
;
154 HICON hCommonGroupIcon
;
163 HKEY hKeyPMCommonGroups
;
164 HKEY hKeyPMAnsiGroups
;
165 HKEY hKeyPMUnicodeGroups
;
167 HKEY hKeyUnicodeGroups
;
168 HKEY hKeyCommonGroups
;
174 PROGGROUP
* hActiveGroup
;
177 // PROGGROUP* field_79;
178 } GLOBALS
, *PGLOBALS
;
180 extern GLOBALS Globals
;
181 extern WCHAR szTitle
[256];
185 * Memory management functions
188 Alloc(IN DWORD dwFlags
,
192 Free(IN PVOID lpMem
);
195 ReAlloc(IN DWORD dwFlags
,
200 AppendToBuffer(IN PVOID pBuffer
,
201 IN PSIZE_T pdwBufferSize
,
203 IN SIZE_T dwDataSize
);
206 INT
MAIN_MessageBoxIDS(UINT ids_text
, UINT ids_title
, WORD type
);
207 INT
MAIN_MessageBoxIDS_s(UINT ids_text
, LPCWSTR str
, UINT ids_title
, WORD type
);
208 VOID
MAIN_ReplaceString(LPWSTR
* string
, LPWSTR replace
);
210 DWORD
GRPFILE_ReadGroupFile(LPCWSTR lpszPath
, BOOL bIsCommonGroup
);
211 BOOL
GRPFILE_WriteGroupFile(PROGGROUP
* hGroup
);
213 ATOM
GROUP_RegisterGroupWinClass(VOID
);
214 PROGGROUP
* GROUP_AddGroup(GROUPFORMAT format
, BOOL bIsCommonGroup
, LPCWSTR lpszName
, LPCWSTR lpszGrpFile
,
215 INT left
, INT top
, INT right
, INT bottom
, INT xMin
, INT yMin
, INT nCmdShow
,
216 WORD cxIcon
, WORD cyIcon
, BOOL bOverwriteFileOk
,
217 /* FIXME shouldn't be necessary */
218 BOOL bSuppressShowWindow
);
219 VOID
GROUP_NewGroup(GROUPFORMAT format
, BOOL bIsCommonGroup
);
220 VOID
GROUP_ModifyGroup(PROGGROUP
* hGroup
);
221 VOID
GROUP_DeleteGroup(PROGGROUP
* hGroup
);
222 /* FIXME shouldn't be necessary */
223 VOID
GROUP_ShowGroupWindow(PROGGROUP
* hGroup
);
224 PROGGROUP
* GROUP_ActiveGroup(VOID
);
226 PROGRAM
* PROGRAM_AddProgram(PROGGROUP
* hGroup
, HICON hIcon
, LPCWSTR lpszName
,
227 INT x
, INT y
, LPCWSTR lpszCmdLine
, LPCWSTR lpszIconFile
, INT nIconIndex
,
228 LPCWSTR lpszWorkDir
, INT nHotKey
, INT nCmdShow
, BOOL bNewVDM
);
229 VOID
PROGRAM_NewProgram(PROGGROUP
* hGroup
);
230 VOID
PROGRAM_ModifyProgram(PROGRAM
* hProgram
);
231 VOID
PROGRAM_CopyMoveProgram(PROGRAM
* hProgram
, BOOL bMove
);
232 VOID
PROGRAM_DeleteProgram(PROGRAM
* hProgram
, BOOL bUpdateGrpFile
);
233 VOID
PROGRAM_ExecuteProgram(PROGRAM
* hProgram
);
234 PROGRAM
* PROGRAM_ActiveProgram(PROGGROUP
* hGroup
);
236 BOOL
DIALOG_New(INT nDefault
, PINT pnResult
);
237 PROGGROUP
* DIALOG_CopyMove(PROGRAM
* hProgram
, BOOL bMove
);
238 BOOL
DIALOG_Delete(UINT ids_text_s
, LPCWSTR lpszName
);
239 BOOL
DIALOG_GroupAttributes(GROUPFORMAT format
, LPWSTR lpszTitle
, LPWSTR lpszGrpFile
, INT nSize
);
240 BOOL
DIALOG_ProgramAttributes(LPWSTR lpszTitle
, LPWSTR lpszCmdLine
, LPWSTR lpszWorkDir
, LPWSTR lpszIconFile
,
241 HICON
* lphIcon
, INT
* lpnIconIndex
, INT
* lpnHotKey
, INT
* lpnCmdShow
, BOOL
* lpbNewVDM
, INT nSize
);
242 VOID
DIALOG_Execute(VOID
);
244 VOID
STRING_LoadStrings(VOID
);
245 VOID
STRING_LoadMenus(VOID
);
248 #define STRING_MAIN_WIN_CLASS_NAME L"PMMain"
249 #define STRING_GROUP_WIN_CLASS_NAME L"PMGroup"
251 #endif /* PROGMAN_H */