PMDEMO1.PP 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. {****************************************************************************
  2. $Id$
  3. Copyright (c) 1999-2000 by Florian Kl„mpfl
  4. ****************************************************************************}
  5. { Sample program for FPC under OS/2 }
  6. { Classic Hello world in PM version }
  7. program pmdemo1;
  8. uses
  9. os2def,pmwin;
  10. var
  11. frame,client : cardinal;
  12. ab : cardinal;
  13. mq : cardinal;
  14. msg : QMSG;
  15. const
  16. frameflags : longint = FCF_TITLEBAR+FCF_SYSMENU+FCF_SIZEBORDER+
  17. FCF_MINBUTTON+FCF_MAXBUTTON+FCF_SHELLPOSITION+
  18. FCF_TASKLIST+FCF_MENU;
  19. function clientwndproc(window : cardinal;msg : longint;mp1,mp2 : pointer) :
  20. pointer;export;
  21. const
  22. text = 'Hello world by OS/2 and FPC';
  23. var
  24. ps : cardinal;
  25. rcl : RECTL;
  26. begin
  27. {clientwndproc:=nil; }
  28. case msg of
  29. { WM_CREATE : DosBeep(200,500);}
  30. WM_PAINT : begin
  31. ps:=WinBeginPaint(window,0,nil);
  32. WinQueryWindowRect(window,@rcl);
  33. WinDrawText(ps,-1,text,@rcl,0,7,$8500);
  34. WinEndPaint(ps);
  35. end;
  36. WM_COMMAND : case lo(longint(mp1)) of
  37. {101 : DosBeep(4500,1000);}
  38. 109 : WinPostMsg(0,WM_QUIT,nil,nil);
  39. 201 : WinMessageBox(cardinal(1),cardinal(1),
  40. 'HelloPM from FPC',
  41. 'šber',0,MB_ICONEXCLAMATION+MB_MOVEABLE);
  42. end;
  43. else
  44. clientwndproc:=WinDefWindowProc(window,msg,mp1,mp2);
  45. end;
  46. end;
  47. begin
  48. ab:=WinInitialize(0);
  49. mq:=WinCreateMsgQueue(ab,0);
  50. WinRegisterClass(ab,'HELLOPM',proc(@clientwndproc),4,0);
  51. frame:=WinCreateStdWindow(cardinal(1),WS_VISIBLE,@frameflags,'HELLOPM',
  52. 'PMDemo 1',WS_VISIBLE,0,1,@client);
  53. while WinGetMsg(ab,@msg,0,0,0) do
  54. WinDispatchMsg(ab,@msg);
  55. WinDestroyWindow(frame);
  56. WinDestroyMsgQueue(mq);
  57. WinTerminate(ab);
  58. end.
  59. {
  60. $Log$
  61. Revision 1.4 2000-01-07 16:41:50 daniel
  62. * copyright 2000
  63. Revision 1.3 2000/01/07 16:32:34 daniel
  64. * copyright 2000 added
  65. Revision 1.2 1999/08/10 14:33:51 hajny
  66. * PM samples
  67. Revision 1.1 1999/06/02 16:01:35 hajny
  68. * changes by Ramon Bosque
  69. }