home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------- */
- /* CMDSHOW.C */
- /* Windowsprogramm zur Demonstration von STARTUP.EXE */
- /* zeigt die übergebenen Kommandozeilenparameter */
- /* in einer "Private Class Dialogbox" an. */
- /* (C) Kay Glahn & DMV-Verlag */
- /* ------------------------------------------------- */
-
- #include <windows.h>
-
- #define ID_END 100
- #define ID_LISTBOX 101
-
- int PASCAL WinMain(HANDLE, HANDLE, LPSTR, int);
- int FAR PASCAL WinDlg(HWND, WORD, WORD, DWORD);
- void CenterWnd(HWND, HWND);
-
- HWND hDlg;
- LPSTR lpCommand;
-
- int PASCAL WinMain(HANDLE hInst,HANDLE hPrevInst,
- LPSTR lpCmdLine,int nCmdShow)
- {
-
- /* Wenn erste Instanz des Programmes, dann Fenster-
- Klasse für Applikation anlegen */
-
- if(!hPrevInst)
- {
- WNDCLASS wndclass;
-
- wndclass.style = NULL;
- wndclass.lpfnWndProc = DefDlgProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = DLGWINDOWEXTRA;
- wndclass.hInstance=hInst;
- wndclass.hIcon=LoadIcon(hInst,"Icon");
- wndclass.hCursor=LoadCursor(NULL, IDC_ARROW);
- wndclass.hbrBackground = NULL;
- wndclass.lpszMenuName = NULL;
- wndclass.lpszClassName = "show";
- RegisterClass(&wndclass);
- }
-
- /* Oem-String von der Kommandozeile in Ansi-String
- umwandeln */
-
- lpCommand=lpCmdLine;
- OemToAnsi(lpCmdLine, lpCommand);
-
- /* Dialogboxfunktion initialisieren und Dialogbox
- aufrufen */
- return DialogBox(hInst, "cmdshow", NULL,
- MakeProcInstance(WinDlg, hInst));
- }
-
- int FAR PASCAL WinDlg(HWND hDialog, WORD message,
- WORD wParam, DWORD lParam)
- {
- int Counter1 = 0;
- int Counter2 = 0;
- char Parameter[255];
-
- hDlg=hDialog;
- switch(message)
- {
- /* Dialogbox initialisieren */
- case WM_INITDIALOG:
-
- /* Dialogbox zentrieren */
- CenterWnd(hDlg, NULL);
-
- /* Parameter der Kommandozeile nacheinander in
- die Listbox kopieren */
- while(lpCommand[Counter1]!='\0')
- {
- while((lpCommand[Counter1]!=' ')
- &&(lpCommand[Counter1]!='\0'))
- Parameter[Counter2++]=lpCommand[Counter1++];
- Parameter[Counter2]='\0';
- if (lpCommand[Counter1]!='\0') Counter1++;
- Counter2=0;
- SendDlgItemMessage(hDlg, ID_LISTBOX,
- LB_ADDSTRING, NULL, (LONG)(LPSTR) Parameter);
- }
- return TRUE;
- break;
- case WM_COMMAND:
-
- /* Wenn "Ende"-Knopf gedrückt wurde, die
- Dialogbox schließen */
- if (wParam == ID_END)
- {
- EndDialog(hDlg,NULL);
- return TRUE;
- }
- break;
- case WM_SYSCOMMAND:
-
- /* Wenn "Schließen" aus Systemmenü gewählt,
- Message für "Ende"-Knopf gedrückt
- abschicken */
- if((wParam & 0xfff0) == SC_CLOSE)
- return PostMessage(hDlg, WM_COMMAND, ID_END,
- NULL);
- break;
- }
- return FALSE;
- }
-
- void CenterWnd(HWND hChange, HWND hRelat)
- {
- RECT rChange, rRelat;
-
- /* Größe des zu verändernden Fensters holen */
- GetWindowRect(hChange,&rChange);
-
- /* Wenn kein Bezugsfenster angegeben dann ist der
- gesamte Bildschirm das Bezugsfenster */
- if(!hRelat)
- hRelat = GetDesktopWindow();
-
- /* Größe des Bezugsfensters holen */
- GetWindowRect(hRelat,&rRelat);
-
- /* Neue Fensterposition auf die Mitte des
- Bezugsfensters setzen */
- SetWindowPos(hChange, NULL,
- rRelat.left+((rRelat.right-rRelat.left)-
- (rChange.right-rChange.left))/2,
- rRelat.top +((rRelat.bottom-rRelat.top)-
- (rChange.bottom-rChange.top))/2,
- 0, 0, SWP_NOSIZE);
- }
-
- /* ------------------------------------------------- */
- /* Ende von CMDSHOW.C */