~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/programs/progman/dialog.c

Version: ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * Program Manager
  3  *
  4  * Copyright 1996 Ulrich Schmid
  5  * Copyright 2002 Sylvain Petreolle
  6  * Copyright 2002 Andriy Palamarchuk
  7  *
  8  * This library is free software; you can redistribute it and/or
  9  * modify it under the terms of the GNU Lesser General Public
 10  * License as published by the Free Software Foundation; either
 11  * version 2.1 of the License, or (at your option) any later version.
 12  *
 13  * This library is distributed in the hope that it will be useful,
 14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 16  * Lesser General Public License for more details.
 17  *
 18  * You should have received a copy of the GNU Lesser General Public
 19  * License along with this library; if not, write to the Free Software
 20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 21  */
 22 
 23 #define WIN32_LEAN_AND_MEAN
 24 
 25 #include "windows.h"
 26 #include "commdlg.h"
 27 #include "progman.h"
 28 
 29 
 30 /***********************************************************************
 31  *
 32  *           DIALOG_Browse
 33  */
 34 
 35 static BOOL DIALOG_Browse(HWND hDlg, LPCSTR lpszzFilter,
 36                           LPSTR lpstrFile, INT nMaxFile)
 37 
 38 {
 39     OPENFILENAME openfilename;
 40 
 41     CHAR szDir[MAX_PATH];
 42     CHAR szDefaultExt[] = "exe";
 43 
 44     ZeroMemory(&openfilename, sizeof(openfilename));
 45 
 46     GetCurrentDirectory(sizeof(szDir), szDir);
 47 
 48     openfilename.lStructSize       = sizeof(openfilename);
 49     openfilename.hwndOwner         = Globals.hMainWnd;
 50     openfilename.hInstance         = Globals.hInstance;
 51     openfilename.lpstrFilter       = lpszzFilter;
 52     openfilename.lpstrFile         = lpstrFile;
 53     openfilename.nMaxFile          = nMaxFile;
 54     openfilename.lpstrInitialDir   = szDir;
 55     openfilename.Flags             = 0;
 56     openfilename.lpstrDefExt       = szDefaultExt;
 57     openfilename.lpstrCustomFilter = 0;
 58     openfilename.nMaxCustFilter    = 0;
 59     openfilename.nFilterIndex      = 0;
 60     openfilename.lpstrFileTitle    = 0;
 61     openfilename.nMaxFileTitle     = 0;
 62     openfilename.lpstrInitialDir   = 0;
 63     openfilename.lpstrTitle        = 0;
 64     openfilename.nFileOffset       = 0;
 65     openfilename.nFileExtension    = 0;
 66     openfilename.lCustData         = 0;
 67     openfilename.lpfnHook          = 0;
 68     openfilename.lpTemplateName    = 0;
 69 
 70     return GetOpenFileName(&openfilename);
 71 }
 72 
 73 /***********************************************************************
 74  *
 75  *           DIALOG_AddFilterItem
 76  */
 77 
 78 static VOID DIALOG_AddFilterItem(LPSTR *p, UINT ids, LPCSTR filter)
 79 {
 80   LoadString(Globals.hInstance, ids, *p, MAX_STRING_LEN);
 81   *p += strlen(*p) + 1;
 82   lstrcpy(*p, filter);
 83   *p += strlen(*p) + 1;
 84   **p = '\0';
 85 }
 86 
 87 /***********************************************************************
 88  *
 89  *           DIALOG_BrowsePrograms
 90  */
 91 
 92 static BOOL DIALOG_BrowsePrograms(HWND hDlg, LPSTR lpszFile, INT nMaxFile)
 93 {
 94   CHAR  szzFilter[2 * MAX_STRING_LEN + 100];
 95   LPSTR p = szzFilter;
 96 
 97   DIALOG_AddFilterItem(&p, IDS_PROGRAMS,  "*.exe;*.pif;*.com;*.bat");
 98   DIALOG_AddFilterItem(&p, IDS_ALL_FILES, "*.*");
 99 
100   return(DIALOG_Browse(hDlg, szzFilter, lpszFile, nMaxFile));
101 }
102 
103 /***********************************************************************
104  *
105  *           DIALOG_BrowseSymbols
106  */
107 
108 static BOOL DIALOG_BrowseSymbols(HWND hDlg, LPSTR lpszFile, INT nMaxFile)
109 {
110   CHAR  szzFilter[5 * MAX_STRING_LEN + 100];
111   LPSTR p = szzFilter;
112 
113   DIALOG_AddFilterItem(&p, IDS_SYMBOL_FILES,  "*.ico;*.exe;*.dll");
114   DIALOG_AddFilterItem(&p, IDS_PROGRAMS,      "*.exe");
115   DIALOG_AddFilterItem(&p, IDS_LIBRARIES_DLL, "*.dll");
116   DIALOG_AddFilterItem(&p, IDS_SYMBOLS_ICO,   "*.ico");
117   DIALOG_AddFilterItem(&p, IDS_ALL_FILES,     "*.*");
118 
119   return(DIALOG_Browse(hDlg, szzFilter, lpszFile, nMaxFile));
120 }
121 
122 static struct
123 {
124   INT nDefault;
125 } New;
126 
127 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
128  *
129  *           DIALOG_NEW_DlgProc
130  */
131 static INT_PTR CALLBACK DIALOG_NEW_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
132 {
133   switch (msg)
134     {
135     case WM_INITDIALOG:
136       CheckRadioButton(hDlg, PM_NEW_GROUP, PM_NEW_PROGRAM, New.nDefault);
137       break;
138 
139     case WM_COMMAND:
140       switch (wParam)
141         {
142         case PM_NEW_GROUP:
143         case PM_NEW_PROGRAM:
144           CheckRadioButton(hDlg, PM_NEW_GROUP, PM_NEW_PROGRAM, wParam);
145           return TRUE;
146 
147         case IDOK:
148           EndDialog(hDlg, IsDlgButtonChecked(hDlg, PM_NEW_GROUP) ?
149                     PM_NEW_GROUP : PM_NEW_PROGRAM);
150           return TRUE;
151 
152         case IDCANCEL:
153           EndDialog(hDlg, IDCANCEL);
154           return TRUE;
155         }
156     }
157   return FALSE;
158 }
159 
160 /***********************************************************************
161  *
162  *           DIALOG_New
163  */
164 INT DIALOG_New(INT nDefault)
165 {
166   DLGPROC lpfnDlg = MakeProcInstance(DIALOG_NEW_DlgProc, Globals.hInstance);
167   INT ret;
168 
169   New.nDefault = nDefault;
170 
171   ret = DialogBox(Globals.hInstance,  STRING_NEW,
172                   Globals.hMainWnd, lpfnDlg);
173   FreeProcInstance(lpfnDlg);
174   return ret;
175 }
176 
177 
178 static struct
179 {
180   LPCSTR lpszProgramName, lpszFromGroupName;
181   HLOCAL hToGroup;
182 } CopyMove;
183 
184 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
185  *
186  *           DIALOG_COPY_MOVE_DlgProc
187  */
188 static INT_PTR CALLBACK DIALOG_COPY_MOVE_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
189 {
190   HLOCAL hGroup;
191 
192   switch (msg)
193     {
194     case WM_INITDIALOG:
195       /* List all group names */
196       for (hGroup = GROUP_FirstGroup(); hGroup; hGroup = GROUP_NextGroup(hGroup))
197         SendDlgItemMessage(hDlg, PM_TO_GROUP, CB_ADDSTRING, 0,
198                            (LPARAM) GROUP_GroupName(hGroup));
199 
200       SetDlgItemText(hDlg, PM_PROGRAM,    CopyMove.lpszProgramName);
201       SetDlgItemText(hDlg, PM_FROM_GROUP, CopyMove.lpszFromGroupName);
202       break;
203 
204     case WM_COMMAND:
205       switch (wParam)
206         {
207         case IDOK:
208         {
209           /* Get selected group */
210           INT nCurSel    = SendDlgItemMessage(hDlg, PM_TO_GROUP, CB_GETCURSEL, 0, 0);
211           INT nLen       = SendDlgItemMessage(hDlg, PM_TO_GROUP, CB_GETLBTEXTLEN, nCurSel, 0);
212           HLOCAL hBuffer = LocalAlloc(LMEM_FIXED, nLen + 1);
213           LPSTR   buffer = LocalLock(hBuffer);
214 
215           SendDlgItemMessage(hDlg, PM_TO_GROUP, CB_GETLBTEXT, nCurSel, (LPARAM)buffer);
216           for (hGroup = GROUP_FirstGroup(); hGroup; hGroup = GROUP_NextGroup(hGroup))
217             if (!lstrcmp(buffer, GROUP_GroupName(hGroup))) break;
218           LocalFree(hBuffer);
219 
220           CopyMove.hToGroup = hGroup;
221           EndDialog(hDlg, IDOK);
222           return TRUE;
223         }
224 
225         case IDCANCEL:
226           EndDialog(hDlg, IDCANCEL);
227           return TRUE;
228         }
229     }
230   return FALSE;
231 }
232 
233 /***********************************************************************
234  *
235  *           DIALOG_CopyMove
236  */
237 HLOCAL DIALOG_CopyMove(LPCSTR lpszProgramName, LPCSTR lpszFromGroupName,
238                      BOOL bMove)
239 {
240   DLGPROC lpfnDlg = MakeProcInstance(DIALOG_COPY_MOVE_DlgProc, Globals.hInstance);
241   INT ret;
242 
243   CopyMove.lpszProgramName   = lpszProgramName;
244   CopyMove.lpszFromGroupName = lpszFromGroupName;
245   CopyMove.hToGroup          = 0;
246 
247   ret = DialogBox(Globals.hInstance,
248                   bMove ? STRING_MOVE : STRING_COPY,
249                   Globals.hMainWnd, lpfnDlg);
250   FreeProcInstance(lpfnDlg);
251 
252   return((ret == IDOK) ? CopyMove.hToGroup : 0);
253 }
254 
255 /***********************************************************************
256  *
257  *           DIALOG_Delete
258  */
259 
260 BOOL DIALOG_Delete(UINT ids_text_s, LPCSTR lpszName)
261 {
262   return (IDYES == MAIN_MessageBoxIDS_s(ids_text_s, lpszName, IDS_DELETE,
263                                         MB_YESNO | MB_DEFBUTTON2));
264 }
265 
266 
267 static struct
268 {
269   LPSTR lpszTitle, lpszGrpFile;
270   INT   nSize;
271 } GroupAttributes;
272 
273 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
274  *
275  *           DIALOG_GROUP_DlgProc
276  */
277 static INT_PTR CALLBACK DIALOG_GROUP_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
278 {
279   switch (msg)
280     {
281     case WM_INITDIALOG:
282       SetDlgItemText(hDlg, PM_DESCRIPTION, GroupAttributes.lpszTitle);
283       SetDlgItemText(hDlg, PM_FILE, GroupAttributes.lpszGrpFile);
284       break;
285 
286     case WM_COMMAND:
287       switch (wParam)
288         {
289         case IDOK:
290           GetDlgItemText(hDlg, PM_DESCRIPTION, GroupAttributes.lpszTitle,
291                          GroupAttributes.nSize);
292           GetDlgItemText(hDlg, PM_FILE, GroupAttributes.lpszGrpFile,
293                          GroupAttributes.nSize);
294           EndDialog(hDlg, IDOK);
295           return TRUE;
296 
297         case IDCANCEL:
298           EndDialog(hDlg, IDCANCEL);
299           return TRUE;
300         }
301     }
302   return FALSE;
303 }
304 
305 /***********************************************************************
306  *
307  *           DIALOG_GroupAttributes
308  */
309 BOOL DIALOG_GroupAttributes(LPSTR lpszTitle, LPSTR lpszGrpFile, INT nSize)
310 {
311   DLGPROC lpfnDlg = MakeProcInstance(DIALOG_GROUP_DlgProc, Globals.hInstance);
312   INT ret;
313 
314   GroupAttributes.nSize       = nSize;
315   GroupAttributes.lpszTitle   = lpszTitle;
316   GroupAttributes.lpszGrpFile = lpszGrpFile;
317 
318   ret = DialogBox(Globals.hInstance,  STRING_GROUP,
319                   Globals.hMainWnd, lpfnDlg);
320   FreeProcInstance(lpfnDlg);
321   return(ret == IDOK);
322 }
323 
324 
325 static struct
326 {
327   LPSTR  lpszIconFile;
328   INT    nSize;
329   HICON  *lphIcon;
330   INT    *lpnIconIndex;
331 } Symbol;
332 
333 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
334  *
335  *           DIALOG_SYMBOL_DlgProc
336  */
337 static INT_PTR CALLBACK DIALOG_SYMBOL_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
338 {
339   switch (msg)
340     {
341     case WM_INITDIALOG:
342       SetDlgItemText(hDlg, PM_ICON_FILE, Symbol.lpszIconFile);
343       SendDlgItemMessage(hDlg, PM_SYMBOL_LIST, CB_SETITEMHEIGHT, 0, (LPARAM) 32);
344       SendDlgItemMessage(hDlg, PM_SYMBOL_LIST, CB_ADDSTRING, 0, (LPARAM)*Symbol.lphIcon);
345       SendDlgItemMessage(hDlg, PM_SYMBOL_LIST, CB_ADDSTRING, 0, (LPARAM)Globals.hDefaultIcon);
346       SendDlgItemMessage(hDlg, PM_SYMBOL_LIST, CB_SETCURSEL, 0, 0);
347       return TRUE;
348 
349     case WM_MEASUREITEM:
350       {
351         PMEASUREITEMSTRUCT measure = (PMEASUREITEMSTRUCT) lParam;
352         measure->itemWidth = 32;
353         measure->itemHeight = 32;
354         return TRUE;
355       }
356 
357     case WM_DRAWITEM:
358       {
359         PDRAWITEMSTRUCT dis = (PDRAWITEMSTRUCT) lParam;
360         DrawIcon(dis->hDC, dis->rcItem.left, dis->rcItem.top, (HICON)dis->itemData);
361         return TRUE;
362       }
363 
364     case WM_COMMAND:
365       switch (wParam)
366         {
367         case PM_BROWSE:
368           {
369             CHAR filename[MAX_PATHNAME_LEN];
370             filename[0] = 0;
371             if (DIALOG_BrowseSymbols(hDlg, filename, sizeof(filename)))
372               SetDlgItemText(hDlg, PM_ICON_FILE, filename);
373             return TRUE;
374           }
375 
376         case PM_HELP:
377           MAIN_MessageBoxIDS(IDS_NOT_IMPLEMENTED, IDS_ERROR, MB_OK);
378           return TRUE;
379 
380         case IDOK:
381           {
382             INT nCurSel = SendDlgItemMessage(hDlg, PM_SYMBOL_LIST, CB_GETCURSEL, 0, 0);
383 
384             GetDlgItemText(hDlg, PM_ICON_FILE, Symbol.lpszIconFile, Symbol.nSize);
385 
386             *Symbol.lphIcon = (HICON)SendDlgItemMessage(hDlg, PM_SYMBOL_LIST,
387                                                         CB_GETITEMDATA,
388                                                         (WPARAM) nCurSel, 0);
389 #if 0
390             *Symbol.lphIcon = CopyIcon(*Symbol.lphIcon);
391 #endif
392 
393             EndDialog(hDlg, IDOK);
394             return TRUE;
395           }
396 
397         case IDCANCEL:
398           EndDialog(hDlg, IDCANCEL);
399           return TRUE;
400         }
401     }
402   return FALSE;
403 }
404 
405 /***********************************************************************
406  *
407  *           DIALOG_Symbol
408  */
409 static VOID DIALOG_Symbol(HICON *lphIcon, LPSTR lpszIconFile,
410                    INT *lpnIconIndex, INT nSize)
411 {
412   DLGPROC lpfnDlg = MakeProcInstance(DIALOG_SYMBOL_DlgProc, Globals.hInstance);
413 
414   Symbol.nSize = nSize;
415   Symbol.lpszIconFile = lpszIconFile;
416   Symbol.lphIcon = lphIcon;
417   Symbol.lpnIconIndex = lpnIconIndex;
418 
419   DialogBox(Globals.hInstance, STRING_SYMBOL,
420             Globals.hMainWnd, lpfnDlg);
421   FreeProcInstance(lpfnDlg);
422 }
423 
424 
425 static struct
426 {
427   LPSTR lpszTitle, lpszCmdLine, lpszWorkDir, lpszIconFile, lpszTmpIconFile;
428   INT   nSize;
429   INT   *lpnCmdShow;
430   INT   *lpnHotKey;
431   HWND  hSelGroupWnd;
432   HICON *lphIcon, hTmpIcon;
433   INT   *lpnIconIndex, nTmpIconIndex;
434 } ProgramAttributes;
435 
436 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
437  *
438  *           DIALOG_PROGRAM_DlgProc
439  */
440 static INT_PTR CALLBACK DIALOG_PROGRAM_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
441 {
442   CHAR buffer[MAX_STRING_LEN];
443   switch (msg)
444     {
445     case WM_INITDIALOG:
446       SetDlgItemText(hDlg, PM_DESCRIPTION, ProgramAttributes.lpszTitle);
447       SetDlgItemText(hDlg, PM_COMMAND_LINE, ProgramAttributes.lpszCmdLine);
448       SetDlgItemText(hDlg, PM_DIRECTORY, ProgramAttributes.lpszWorkDir);
449       if (!*ProgramAttributes.lpnHotKey)
450         {
451           LoadString(Globals.hInstance, IDS_NO_HOT_KEY, buffer, sizeof(buffer));
452           SetDlgItemText(hDlg, PM_HOT_KEY, buffer);
453         }
454 
455       CheckDlgButton(hDlg, PM_SYMBOL,
456                      (*ProgramAttributes.lpnCmdShow == SW_SHOWMINIMIZED));
457       SendDlgItemMessage(hDlg, PM_ICON, STM_SETICON,
458                          (WPARAM) ProgramAttributes.hTmpIcon, 0);
459       break;
460 
461     case WM_COMMAND:
462       switch (wParam)
463         {
464         case PM_SYMBOL:
465           CheckDlgButton(hDlg, PM_SYMBOL, !IsDlgButtonChecked(hDlg, PM_SYMBOL));
466           return TRUE;
467 
468         case PM_BROWSE:
469           {
470             CHAR filename[MAX_PATHNAME_LEN];
471             filename[0] = 0;
472             if (DIALOG_BrowsePrograms(hDlg, filename, sizeof(filename)))
473               SetDlgItemText(hDlg, PM_COMMAND_LINE, filename);
474             return TRUE;
475           }
476 
477         case PM_OTHER_SYMBOL:
478           {
479             DIALOG_Symbol(&ProgramAttributes.hTmpIcon,
480                           ProgramAttributes.lpszTmpIconFile,
481                           &ProgramAttributes.nTmpIconIndex,
482                           MAX_PATHNAME_LEN);
483 
484             SendDlgItemMessage(hDlg, PM_ICON, STM_SETICON,
485                                (WPARAM) ProgramAttributes.hTmpIcon, 0);
486             return TRUE;
487           }
488 
489         case IDOK:
490           GetDlgItemText(hDlg, PM_DESCRIPTION,
491                          ProgramAttributes.lpszTitle,
492                          ProgramAttributes.nSize);
493           GetDlgItemText(hDlg, PM_COMMAND_LINE,
494                          ProgramAttributes.lpszCmdLine,
495                          ProgramAttributes.nSize);
496           GetDlgItemText(hDlg, PM_DIRECTORY,
497                          ProgramAttributes.lpszWorkDir,
498                          ProgramAttributes.nSize);
499 
500           if (ProgramAttributes.hTmpIcon)
501             {
502 #if 0
503               if (*ProgramAttributes.lphIcon)
504                 DestroyIcon(*ProgramAttributes.lphIcon);
505 #endif
506               *ProgramAttributes.lphIcon = ProgramAttributes.hTmpIcon;
507               *ProgramAttributes.lpnIconIndex = ProgramAttributes.nTmpIconIndex;
508               lstrcpyn(ProgramAttributes.lpszIconFile,
509                        ProgramAttributes.lpszTmpIconFile,
510                        ProgramAttributes.nSize);
511             }
512 
513           *ProgramAttributes.lpnCmdShow =
514             IsDlgButtonChecked(hDlg, PM_SYMBOL) ?
515             SW_SHOWMINIMIZED : SW_SHOWNORMAL;
516           EndDialog(hDlg, IDOK);
517           return TRUE;
518 
519         case IDCANCEL:
520           EndDialog(hDlg, IDCANCEL);
521           return TRUE;
522         }
523       return FALSE;
524     }
525   return FALSE;
526 }
527 
528 /***********************************************************************
529  *
530  *           DIALOG_ProgramAttributes
531  */
532 BOOL DIALOG_ProgramAttributes(LPSTR lpszTitle, LPSTR lpszCmdLine,
533                               LPSTR lpszWorkDir, LPSTR lpszIconFile,
534                               HICON *lphIcon, INT *lpnIconIndex,
535                               INT *lpnHotKey, INT *lpnCmdShow, INT nSize)
536 {
537   CHAR szTmpIconFile[MAX_PATHNAME_LEN];
538   DLGPROC lpfnDlg = MakeProcInstance(DIALOG_PROGRAM_DlgProc, Globals.hInstance);
539   INT ret;
540 
541   ProgramAttributes.nSize = nSize;
542   ProgramAttributes.lpszTitle = lpszTitle;
543   ProgramAttributes.lpszCmdLine = lpszCmdLine;
544   ProgramAttributes.lpszWorkDir = lpszWorkDir;
545   ProgramAttributes.lpszIconFile = lpszIconFile;
546   ProgramAttributes.lpnCmdShow = lpnCmdShow;
547   ProgramAttributes.lpnHotKey = lpnHotKey;
548   ProgramAttributes.lphIcon = lphIcon;
549   ProgramAttributes.lpnIconIndex = lpnIconIndex;
550 
551 #if 0
552   ProgramAttributes.hTmpIcon = 0;
553 #else
554   ProgramAttributes.hTmpIcon = *lphIcon;
555 #endif
556   ProgramAttributes.nTmpIconIndex = *lpnIconIndex;
557   ProgramAttributes.lpszTmpIconFile = szTmpIconFile;
558   lstrcpyn(ProgramAttributes.lpszTmpIconFile, lpszIconFile, MAX_PATHNAME_LEN);
559 
560   ret = DialogBox(Globals.hInstance,  STRING_PROGRAM,
561                   Globals.hMainWnd, lpfnDlg);
562   FreeProcInstance(lpfnDlg);
563 
564   return(ret == IDOK);
565 }
566 
567 
568 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
569  *
570  *           DIALOG_EXECUTE_DlgProc
571  */
572 static INT_PTR CALLBACK DIALOG_EXECUTE_DlgProc(HWND hDlg, UINT msg,
573                                       WPARAM wParam, LPARAM lParam)
574 {
575   switch (msg)
576     {
577     case WM_COMMAND:
578       switch (wParam)
579         {
580         case PM_SYMBOL:
581           CheckDlgButton(hDlg, PM_SYMBOL, !IsDlgButtonChecked(hDlg, PM_SYMBOL));
582           return TRUE;
583 
584         case PM_BROWSE:
585           {
586             CHAR filename[MAX_PATHNAME_LEN];
587             filename[0] = 0;
588             if (DIALOG_BrowsePrograms(hDlg, filename, sizeof(filename)))
589               SetDlgItemText(hDlg, PM_COMMAND, filename);
590             return TRUE;
591           }
592 
593         case PM_HELP:
594           MAIN_MessageBoxIDS(IDS_NOT_IMPLEMENTED, IDS_ERROR, MB_OK);
595           return TRUE;
596 
597         case IDOK:
598           {
599             CHAR cmdline[MAX_PATHNAME_LEN];
600             GetDlgItemText(hDlg, PM_COMMAND, cmdline, sizeof(cmdline));
601 
602             WinExec(cmdline, IsDlgButtonChecked(hDlg, PM_SYMBOL) ?
603                     SW_SHOWMINIMIZED : SW_SHOWNORMAL);
604             if (Globals.bMinOnRun) CloseWindow(Globals.hMainWnd);
605 
606             EndDialog(hDlg, IDOK);
607             return TRUE;
608           }
609 
610         case IDCANCEL:
611           EndDialog(hDlg, IDCANCEL);
612           return TRUE;
613         }
614     }
615   return FALSE;
616 }
617 
618 /***********************************************************************
619  *
620  *           DIALOG_Execute
621  */
622 
623 VOID DIALOG_Execute(void)
624 {
625   INT_PTR z;
626   DLGPROC lpfnDlg = MakeProcInstance(DIALOG_EXECUTE_DlgProc, Globals.hInstance);
627   z=DialogBox(Globals.hInstance, STRING_EXECUTE,
628               Globals.hMainWnd, lpfnDlg);
629               FreeProcInstance(lpfnDlg);
630 }
631 
632 /* Local Variables:    */
633 /* c-file-style: "GNU" */
634 /* End:                */
635 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.