uwindow.h
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:5k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. /*
  2. COW: Character Oriented Windows
  3. uwindow.h: Publics for USER Window
  4. */
  5. /***BEGIN_PUBLIC***/
  6. VOID FARPUBLIC AddChild(PWND, PWND);
  7. VOID FARPUBLIC RemoveChild(PWND);
  8. VOID FARPUBLIC EnableWindow(PWND, BOOL);
  9. VOID FARPUBLIC GetClientRrc(PWND, RRC *);
  10. VOID FARPUBLIC SetWindowStyle(PWND, WORD);
  11. VOID FARPUBLIC SetWindowSize(PWND, BYTE, BYTE);
  12. VOID FARPUBLIC DrawWindow(PWND);
  13. VOID FARPUBLIC DrawBorder(PWND, BOX *, WORD, char *);
  14. VOID FARPUBLIC TextOut(PWND, RX, RY, char *, short, WORD);
  15. VOID FARPUBLIC CharOut(PWND, RX, RY, ACHAR, WORD);
  16. VOID FARPUBLIC FillRrc(PWND, PRRC, ACHAR, WORD);
  17. VOID FARPUBLIC BltRrc(PWND, RX, RY, BYTE, BYTE, RX, RY);
  18. VOID FARPUBLIC DrawBox(PWND, PRRC, BOX *, WORD);
  19. VOID FARPUBLIC SaveRrc(PWND, PRRC, BYTE FAR *);
  20. VOID FARPUBLIC RestoreRrc(PWND, PRRC, BYTE FAR *);
  21. VOID FARPUBLIC EnableCursor(PWND, BOOL);
  22. VOID FARPUBLIC MoveCursor(PWND, RX, RY);
  23. VOID FARPUBLIC MoveWindow(PWND, AX, AY);
  24. BOOL FARPUBLIC IntersectRect(PRRC, PRRC, PRRC);
  25. VOID FARPUBLIC UnionRect(PRRC, PRRC, PRRC);
  26. BOOL FARPUBLIC IsRectEmpty(PRRC);
  27. VOID FARPUBLIC SetRect(PRRC, RX, RY, RX, RY);
  28. BOOL FARPUBLIC PtInRect(PRRC, RX, RY);
  29. WORD FARPUBLIC CwSizeRrc(PRRC);
  30. VOID FARPUBLIC ShadowArc(PARC);
  31. /* * for overlap windows */
  32. VOID FARPUBLIC AddChildHead(PWND, PWND); /*OPTIONAL*/
  33. VOID FARPUBLIC AddChildTail(PWND, PWND); /*OPTIONAL*/
  34. VOID FARPUBLIC RethinkDisplay(void); /*OPTIONAL*/
  35. BOOL FARPUBLIC FWindowToTop(PWND);             /*OPTIONAL*/
  36. VOID FARPUBLIC RedrawDamagedRegions(void); /*OPTIONAL*/
  37. BOOL FARPUBLIC FMoveSizeWithKeyboard(PWND, BOOL); /*OPTIONAL*/
  38. BOOL FARPUBLIC FIsTopWindow(PWND); /*OPTIONAL*/
  39. PWND FARPUBLIC PwndGetTopWindow(PWND); /*OPTIONAL*/
  40. VOID FARPUBLIC DrawOverlapShadow(PWND); /*OPTIONAL*/
  41. /* Listbox routines */
  42. DWORD FARPUBLIC ListBoxWndProc(PWND, WORD, WORD, DWORD);
  43. VOID FARPUBLIC InitListBox(PWND, PWFN); /*OPTIONAL*/
  44. VOID FARPUBLIC InitListBoxOriented(PWND, PWFN, WORD *, WORD *);/*OPTIONAL*/
  45. VOID FARPUBLIC GetListBoxOrientation(PWND, WORD *, WORD *);/*OPTIONAL*/
  46. #define FMoveOverlapWithKeyboard(pwnd) FMoveSizeWithKeyboard(pwnd,TRUE);
  47. #define FSizeOverlapWithKeyboard(pwnd) FMoveSizeWithKeyboard(pwnd,FALSE);
  48. #ifndef NORECT
  49. #define CopyRect(prrcDest, prrcSrc) {*(prrcDest) = *(prrcSrc) }
  50. #define SetRectEmpty(prrc) {*((long *) prrc) = 0; }
  51. #endif /*!NORECT*/
  52. #ifndef NOWNDMACROS
  53. #define wndGeneric(id, style, fEnabled, ax, ay, dax, day, pfnWndProc, pwndParent, pwndSibling, pwndChild) { 
  54. id, style, 0, fEnabled, 
  55. {ax, ay, ax+dax, ay+day}, 
  56. {((style) & WS_BORDER) ? ax+1 : ax, 
  57.  ((style) & WS_BORDER) ? ay+1 : ay, 
  58.  ((style) & (WS_BORDER | WS_VSCROLL)) ? ax+dax-1 : ax+dax, 
  59.  ((style) & (WS_BORDER | WS_HSCROLL)) ? ay+day-1 : ay+day}, 
  60. (PLFN) pfnWndProc, pwndParent, pwndSibling, pwndChild, 0, 0,
  61. #define wndGenericCursor(id, style, fEnabled, ax, ay, dax, day, pfnWndProc, pwndParent, pwndSibling, pwndChild, axCurs, ayCurs) { 
  62. id, style, TRUE, fEnabled, 
  63. {ax, ay, ax+dax, ay+day}, 
  64. {((style) & WS_BORDER) ? ax+1 : ax, 
  65.  ((style) & WS_BORDER) ? ay+1 : ay, 
  66.  ((style) & (WS_BORDER | WS_VSCROLL)) ? ax+dax-1 : ax+dax, 
  67.  ((style) & (WS_BORDER | WS_HSCROLL)) ? ay+day-1 : ay+day}, 
  68. (PLFN) pfnWndProc, pwndParent, pwndSibling, pwndChild, axCurs, ayCurs,
  69. #define endWndGeneric }
  70. #define wndListBox(id,fBorder,fSorted,fEnabled,ax,ay,dax,day,pfnWndProc,pwndParent,pwndSibling,pwndChild,color,isaHilite,ctickRep) { 
  71. id, (WS_CHILD | WS_LISTBOX | WS_VSCROLL | 
  72.              (fSorted ? LBS_SORT : 0) | (fBorder ? WS_BORDER : 0)), 
  73. TRUE, fEnabled, {ax, ay, ax+dax, ay+day},                   
  74. { (fBorder ? ax+1 : ax),                                    
  75.   (fBorder ? ay+1 : ay),                                    
  76.   ((TRUE)  ? ax+dax-1 : ax+dax),                      
  77.   (fBorder ? ay+day-1 : ay+day)     }, 
  78. (PLFN) pfnWndProc, pwndParent, pwndSibling,      
  79. pwndChild, 
  80.         (fBorder ? ax+2 : ax+1), 1 
  81.   ,{0,0,0,0,0,0,0,0,0,1,0,0,color,isaHilite,ctickRep,0} }
  82. #define SetWindowProc(pwnd, pfn) {(pwnd)->pfnWndProc = pfn;}
  83. #define GetWindowWord(pwnd, iw) ((pwnd)->rgwExtra[(iw)])
  84. #define SetWindowWord(pwnd, iw, w) {(pwnd)->rgwExtra[(iw)] = (w);}
  85. #define PwndParent(pwnd) ((pwnd)->pwndParent)
  86. #define PwndChild(pwnd) ((pwnd)->pwndChild)
  87. #define PwndSibling(pwnd) ((pwnd)->pwndSibling)
  88. #endif /*NOWNDMACROS*/
  89. #ifndef NODRAW
  90. /* Window Drawing support */
  91. #define AxOfRx(pwnd,rx) ((pwnd)->arcClipping.axLeft+(rx))
  92. #define AyOfRy(pwnd,ry) ((pwnd)->arcClipping.ayTop+(ry))
  93. #define RxOfAx(pwnd,ax) ((ax)-(pwnd)->arcClipping.axLeft)
  94. #define RyOfAy(pwnd,ay) ((ay)-(pwnd)->arcClipping.ayTop)
  95. #define CbSizeRrc(prrc) (CwSizeRrc(prrc) << 1)
  96. #endif /*!NODRAW*/
  97. #ifndef NOWINSTYLES
  98. /* Window styles */
  99. #define WS_TILED 0x0000
  100. #define WS_CHILD 0x0000 /* note : no distinction */
  101. #define WS_BORDER 0x0100
  102. #define WS_VSCROLL 0x0200
  103. #define WS_HSCROLL 0x0400
  104. #define WS_SUBSTYLE 0x003f
  105. #define WS_OVERLAP 0x0040
  106. #define WS_CLIPOUT 0x0080
  107. #define WS_TYPE  0x3800 /* type mask */
  108. #define WS_EDIT 0x0800
  109. #define WS_LISTBOX 0x1000
  110. #define WS_BUTTON 0x1800
  111. #define WS_STATIC 0x2000
  112. #define WS_DIALOG 0x2800
  113. #define WS_SCROLL 0x3000
  114. #define WS_STATIC_NOACCEL 0x3800
  115. #define LBS_SORT 0x0001
  116. #endif /*!NOWINSTYLES*/
  117. /* codes for listbox item indices */
  118. #define iszMin ((WORD) 0)
  119. #define iszNil ((WORD) -1) /* invalid isz */
  120. /***END_PUBLIC***/