home *** CD-ROM | disk | FTP | other *** search
- PROGRAM MyFirstProgram;
-
- USES WinTypes, WinProcs, OWindows;
-
- {$R Gen_Help.Res}
-
- CONST
- cm_DoIt = 101;
- cm_DoItToo = 102;
- cm_HelpIndex = 901;
- cm_HelpOnHelp = 902;
- cm_About = 903;
-
- HelpFileName = 'GEN_HELP.HLP';
-
- TYPE
- tMyApplication = OBJECT(tApplication)
- PROCEDURE InitMainWindow; VIRTUAL;
- PROCEDURE InitInstance; VIRTUAL;
- END;
-
- pMyWindow = ^tMyWindow;
- tMyWindow = OBJECT(tWindow)
- Help : BOOLEAN;
- HelpCursor, OldCursor : hCursor;
- CONSTRUCTOR Init(aParent: pWindowsObject; aTitle: pChar);
- PROCEDURE HelpIndex(VAR Msg: tMessage); VIRTUAL cm_First + cm_HelpIndex;
- PROCEDURE HelpOnHelp(VAR Msg: tMessage); VIRTUAL cm_First + cm_HelpOnHelp;
- PROCEDURE WMEnterIdle(VAR Msg: tMessage); VIRTUAL wm_First + wm_EnterIdle;
- PROCEDURE WMCommand(VAR Msg: tMessage); VIRTUAL wm_First + wm_Command;
- PROCEDURE wmKeyDown(VAR Msg: tMessage); VIRTUAL wm_First + wm_KeyDown;
- PROCEDURE WMSetCursor(VAR Msg: tMessage); VIRTUAL wm_First + wm_SetCursor;
- PROCEDURE WMInitMenu(VAR Msg: tMessage); VIRTUAL wm_First + wm_InitMenu;
- PROCEDURE Destroy; VIRTUAL;
- END;
-
- CONSTRUCTOR tMyWindow.Init(aParent: pWindowsObject; aTitle: pChar);
- BEGIN
- tWindow.Init(aParent, aTitle);
- Attr.Menu := LoadMenu(hInstance,'Menu_1');
- Help := FALSE;
- HelpCursor := LoadCursor(hInstance, 'Cursor_1');
- OldCursor := LoadCursor(0, idc_Arrow);
- END;
-
- PROCEDURE tMyWindow.HelpIndex(VAR Msg: tMessage);
- BEGIN
- WinHelp(hWindow,HelpFileName,Help_Index,0);
- END;
-
- PROCEDURE tMyWindow.HelpOnHelp(VAR Msg: tMessage);
- BEGIN
- WinHelp(hWindow,'WinHelp.Hlp',HELP_HELPONHELP,0);
- END;
-
- PROCEDURE tMyWindow.WMEnterIdle(VAR Msg: tMessage);
- BEGIN
- IF ((Msg.wParam = msgf_Menu) AND ((GetKeyState(vk_F1) AND $8000) <> 0)) THEN
- BEGIN
- Help := TRUE;
- PostMessage(hWindow,wm_KeyDown,vk_Return,0);
- END;
- END;
-
- PROCEDURE tMyWindow.WMCommand(VAR Msg: tMessage);
- VAR
- HelpContextID : INTEGER;
- BEGIN
- IF Help THEN
- BEGIN
- CASE Msg.wParam OF
- cm_DoIt, cm_DoItToo, cm_Exit,
- cm_HelpIndex, cm_HelpOnHelp, cm_About : HelpContextID := Msg.wParam;
- ELSE HelpContextID := 0;
- END;
- IF HelpContextID = 0 THEN
- BEGIN
- MessageBox(hWindow,'Keine Hilfe zu diesem Menāæpunkt vorhanden',
- 'Meldung',mb_OK);
- DefWndProc(Msg);
- END
- ELSE BEGIN
- Help := FALSE;
- WinHelp(hWindow,HelpFileName,Help_Context,HelpContextID);
- END;
- END
- ELSE tWindow.WMCommand(Msg);
- END;
-
- PROCEDURE tMyWindow.wmKeyDown(VAR Msg: tMessage);
- BEGIN
- IF Msg.wParam = vk_F1 THEN
- BEGIN
- IF GetKeyState(vk_Shift) < 0 THEN
- BEGIN
- Help := TRUE;
- SetCursor(HelpCursor);
- DefWndProc(Msg);
- END;
- END
- ELSE IF (Msg.wParam = vk_Escape) AND Help THEN
- BEGIN
- Help := FALSE;
- SetCursor(OldCursor);
- END;
- END;
-
- PROCEDURE tMyWindow.WMSetCursor(VAR Msg: tMessage);
- BEGIN
- IF Help
- THEN SetCursor(HelpCursor)
- ELSE DefWndProc(Msg);
- END;
-
- PROCEDURE tMyWindow.WMInitMenu(VAR Msg: tMessage);
- BEGIN
- IF Help
- THEN SetCursor(HelpCursor)
- ELSE DefWndProc(Msg);
- END;
-
- PROCEDURE tMyWindow.Destroy;
- BEGIN
- WinHelp(hWindow,HelpFileName,HELP_QUIT,0);
- tWindow.Destroy;
- END;
-
- PROCEDURE tMyApplication.InitMainWindow;
- BEGIN
- MainWindow := New(pMyWindow, Init(NIL, 'First Sample Program'));
- END;
-
- PROCEDURE tMyApplication.InitInstance;
- BEGIN
- tApplication.InitInstance;
- HAccTable := LoadAccelerators(hInstance,'Accelerators_1');
- END;
-
- VAR
- MyApp : tMyApplication;
-
- BEGIN
- MyApp.Init('MyProgram');
- MyApp.Run;
- MyApp.Done;
- END.
-