pmdemo1.pp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. {****************************************************************************
  2. $Id$
  3. Copyright (c) 1999-2000 by Florian Klaempfl
  4. ****************************************************************************}
  5. { Sample program for FPC under OS/2 }
  6. { Classic Hello world in PM version }
  7. {$R pmdemo1.res}
  8. (* PMDEMO1.RES has to be compiled from PMDEMO1.RC using "rc -r PMDEMO1.RC". *)
  9. program pmdemo1;
  10. uses
  11. os2def,pmwin;
  12. var
  13. frame,client : cardinal;
  14. ab : cardinal;
  15. mq : cardinal;
  16. msg : QMSG;
  17. const
  18. frameflags : longint = FCF_TITLEBAR+FCF_SYSMENU+FCF_SIZEBORDER+
  19. FCF_MINBUTTON+FCF_MAXBUTTON+FCF_SHELLPOSITION+
  20. FCF_TASKLIST+FCF_MENU;
  21. function clientwndproc(window : cardinal;msg : longint;mp1,mp2 : pointer) :
  22. pointer; cdecl; export;
  23. const
  24. text = 'Hello world by OS/2 and FPC';
  25. var
  26. ps : cardinal;
  27. rcl : RECTL;
  28. begin
  29. {clientwndproc:=nil; }
  30. case msg of
  31. { WM_CREATE : DosBeep(200,500);}
  32. WM_PAINT : begin
  33. ps:=WinBeginPaint(window,0,nil);
  34. WinQueryWindowRect(window,@rcl);
  35. WinDrawText(ps,-1,text,@rcl,0,7,$8500);
  36. WinEndPaint(ps);
  37. end;
  38. WM_COMMAND : case lo(longint(mp1)) of
  39. {101 : DosBeep(4500,1000);}
  40. 109 : WinPostMsg(0,WM_QUIT,nil,nil);
  41. 201 : WinMessageBox(cardinal(1),cardinal(1),
  42. 'HelloPM from FPC',
  43. 'About',0,MB_ICONEXCLAMATION+MB_MOVEABLE);
  44. end;
  45. else
  46. clientwndproc:=WinDefWindowProc(window,msg,mp1,mp2);
  47. end;
  48. end;
  49. begin
  50. ab:=WinInitialize(0);
  51. mq:=WinCreateMsgQueue(ab,0);
  52. WinRegisterClass(ab,'HELLOPM',proc(@clientwndproc),4,0);
  53. frame:=WinCreateStdWindow(cardinal(1),WS_VISIBLE,@frameflags,'HELLOPM',
  54. 'PMDemo 1',WS_VISIBLE,0,1,@client);
  55. while WinGetMsg(ab,@msg,0,0,0) do
  56. WinDispatchMsg(ab,@msg);
  57. WinDestroyWindow(frame);
  58. WinDestroyMsgQueue(mq);
  59. WinTerminate(ab);
  60. end.
  61. {
  62. $Log$
  63. Revision 1.3 2002-09-07 16:01:25 peter
  64. * old logs removed and tabs fixed
  65. }