home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / startup / cmdshow.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-03  |  3.7 KB  |  138 lines

  1. /* ------------------------------------------------- */
  2. /*                    CMDSHOW.C                      */
  3. /* Windowsprogramm zur Demonstration von STARTUP.EXE */
  4. /*   zeigt die übergebenen Kommandozeilenparameter   */
  5. /*     in einer "Private Class Dialogbox" an.        */
  6. /*           (C) Kay Glahn & DMV-Verlag              */
  7. /* ------------------------------------------------- */
  8.  
  9. #include <windows.h>
  10.  
  11. #define ID_END 100
  12. #define ID_LISTBOX 101
  13.  
  14. int PASCAL WinMain(HANDLE, HANDLE, LPSTR, int);
  15. int FAR PASCAL WinDlg(HWND, WORD, WORD, DWORD);
  16. void CenterWnd(HWND, HWND);
  17.  
  18. HWND hDlg;
  19. LPSTR lpCommand;
  20.  
  21. int PASCAL WinMain(HANDLE hInst,HANDLE hPrevInst,
  22.   LPSTR lpCmdLine,int nCmdShow)
  23. {
  24.  
  25.   /* Wenn erste Instanz des Programmes, dann Fenster-
  26.      Klasse für Applikation anlegen */
  27.  
  28.   if(!hPrevInst)
  29.   {
  30.     WNDCLASS wndclass;
  31.  
  32.     wndclass.style = NULL;
  33.     wndclass.lpfnWndProc = DefDlgProc;
  34.     wndclass.cbClsExtra = 0;
  35.     wndclass.cbWndExtra = DLGWINDOWEXTRA;
  36.     wndclass.hInstance=hInst;
  37.     wndclass.hIcon=LoadIcon(hInst,"Icon");
  38.     wndclass.hCursor=LoadCursor(NULL, IDC_ARROW);
  39.     wndclass.hbrBackground = NULL;
  40.     wndclass.lpszMenuName = NULL;
  41.     wndclass.lpszClassName = "show";
  42.     RegisterClass(&wndclass);
  43.   }
  44.  
  45.   /* Oem-String von der Kommandozeile in Ansi-String
  46.      umwandeln */
  47.  
  48.   lpCommand=lpCmdLine;
  49.   OemToAnsi(lpCmdLine, lpCommand);
  50.  
  51.   /* Dialogboxfunktion initialisieren und Dialogbox
  52.      aufrufen */
  53.   return DialogBox(hInst, "cmdshow", NULL,
  54.     MakeProcInstance(WinDlg, hInst));
  55. }
  56.  
  57. int FAR PASCAL WinDlg(HWND hDialog, WORD message,
  58.   WORD wParam, DWORD lParam)
  59. {
  60.   int Counter1 = 0;
  61.   int Counter2 = 0;
  62.   char Parameter[255];
  63.  
  64.   hDlg=hDialog;
  65.   switch(message)
  66.   {
  67.     /* Dialogbox initialisieren */
  68.     case WM_INITDIALOG:
  69.  
  70.       /* Dialogbox zentrieren */
  71.       CenterWnd(hDlg, NULL);
  72.  
  73.       /* Parameter der Kommandozeile nacheinander in
  74.          die Listbox kopieren */
  75.       while(lpCommand[Counter1]!='\0')
  76.       {
  77.         while((lpCommand[Counter1]!=' ')
  78.           &&(lpCommand[Counter1]!='\0'))
  79.           Parameter[Counter2++]=lpCommand[Counter1++];
  80.         Parameter[Counter2]='\0';
  81.         if (lpCommand[Counter1]!='\0') Counter1++;
  82.         Counter2=0;
  83.         SendDlgItemMessage(hDlg, ID_LISTBOX,
  84.           LB_ADDSTRING, NULL, (LONG)(LPSTR) Parameter);
  85.       }
  86.       return TRUE;
  87.       break;
  88.     case WM_COMMAND:
  89.  
  90.       /* Wenn "Ende"-Knopf gedrückt wurde, die
  91.          Dialogbox schließen */
  92.       if (wParam == ID_END)
  93.       {
  94.         EndDialog(hDlg,NULL);
  95.         return TRUE;
  96.       }
  97.       break;
  98.     case WM_SYSCOMMAND:
  99.  
  100.       /* Wenn "Schließen" aus Systemmenü gewählt,
  101.          Message für "Ende"-Knopf gedrückt
  102.          abschicken */
  103.       if((wParam & 0xfff0) == SC_CLOSE)
  104.         return PostMessage(hDlg, WM_COMMAND, ID_END,
  105.         NULL);
  106.       break;
  107.   }
  108.   return FALSE;
  109. }
  110.  
  111. void CenterWnd(HWND hChange, HWND hRelat)
  112. {
  113.   RECT rChange, rRelat;
  114.  
  115.   /* Größe des zu verändernden Fensters holen */
  116.   GetWindowRect(hChange,&rChange);
  117.  
  118.   /* Wenn kein Bezugsfenster angegeben dann ist der
  119.      gesamte Bildschirm das Bezugsfenster */
  120.   if(!hRelat)
  121.     hRelat = GetDesktopWindow();
  122.  
  123.   /* Größe des Bezugsfensters holen */
  124.   GetWindowRect(hRelat,&rRelat);
  125.  
  126.   /* Neue Fensterposition auf die Mitte des
  127.      Bezugsfensters setzen */
  128.   SetWindowPos(hChange, NULL,
  129.     rRelat.left+((rRelat.right-rRelat.left)-
  130.     (rChange.right-rChange.left))/2,
  131.     rRelat.top +((rRelat.bottom-rRelat.top)-
  132.     (rChange.bottom-rChange.top))/2,
  133.     0, 0, SWP_NOSIZE);
  134. }
  135.  
  136. /* ------------------------------------------------- */
  137. /*                 Ende von CMDSHOW.C                */
  138.