tkWinInt.h
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:6k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. /*
  2.  * tkWinInt.h --
  3.  *
  4.  * This file contains declarations that are shared among the
  5.  * Windows-specific parts of Tk, but aren't used by the rest of
  6.  * Tk.
  7.  *
  8.  * Copyright (c) 1995 Sun Microsystems, Inc.
  9.  *
  10.  * See the file "license.terms" for information on usage and redistribution
  11.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  12.  *
  13.  * SCCS: @(#) tkWinInt.h 1.33 97/05/20 17:00:35
  14.  */
  15. #ifndef _TKWININT
  16. #define _TKWININT
  17. #ifndef _TKINT
  18. #include "tkInt.h"
  19. #endif
  20. /*
  21.  * Include platform specific public interfaces.
  22.  */
  23. #ifndef _TKWIN
  24. #include "tkWin.h"
  25. #endif
  26. /*
  27.  * Define constants missing from older Win32 SDK header files.
  28.  */
  29. #ifndef WS_EX_TOOLWINDOW
  30. #define WS_EX_TOOLWINDOW 0x00000080L 
  31. #endif
  32. typedef struct TkFontAttributes TkFontAttributes;
  33. /*
  34.  * The TkWinDCState is used to save the state of a device context
  35.  * so that it can be restored later.
  36.  */
  37. typedef struct TkWinDCState {
  38.     HPALETTE palette;
  39. } TkWinDCState;
  40. /*
  41.  * The TkWinDrawable is the internal implementation of an X Drawable (either
  42.  * a Window or a Pixmap).  The following constants define the valid Drawable
  43.  * types.
  44.  */
  45. #define TWD_BITMAP 1
  46. #define TWD_WINDOW 2
  47. #define TWD_WINDC 3
  48. typedef struct {
  49.     int type;
  50.     HWND handle;
  51.     TkWindow *winPtr;
  52. } TkWinWindow;
  53. typedef struct {
  54.     int type;
  55.     HBITMAP handle;
  56.     Colormap colormap;
  57.     int depth;
  58. } TkWinBitmap;
  59. typedef struct {
  60.     int type;
  61.     HDC hdc;
  62. }TkWinDC;
  63. typedef union {
  64.     int type;
  65.     TkWinWindow window;
  66.     TkWinBitmap bitmap;
  67.     TkWinDC winDC;
  68. } TkWinDrawable;
  69. /*
  70.  * The following macros are used to retrieve internal values from a Drawable.
  71.  */
  72. #define TkWinGetHWND(w) (((TkWinDrawable *) w)->window.handle)
  73. #define TkWinGetWinPtr(w) (((TkWinDrawable*)w)->window.winPtr)
  74. #define TkWinGetHBITMAP(w) (((TkWinDrawable*)w)->bitmap.handle)
  75. #define TkWinGetColormap(w) (((TkWinDrawable*)w)->bitmap.colormap)
  76. #define TkWinGetHDC(w) (((TkWinDrawable *) w)->winDC.hdc)
  77. /*
  78.  * The following structure is used to encapsulate palette information.
  79.  */
  80. typedef struct {
  81.     HPALETTE palette; /* Palette handle used when drawing. */
  82.     UINT size; /* Number of entries in the palette. */
  83.     int stale; /* 1 if palette needs to be realized,
  84.  * otherwise 0.  If the palette is stale,
  85.  * then an idle handler is scheduled to
  86.  * realize the palette. */
  87.     Tcl_HashTable refCounts; /* Hash table of palette entry reference counts
  88.  * indexed by pixel value. */
  89. } TkWinColormap;
  90. /*
  91.  * The following macro retrieves the Win32 palette from a colormap.
  92.  */
  93. #define TkWinGetPalette(colormap) (((TkWinColormap *) colormap)->palette)
  94. /*
  95.  * The following macros define the class names for Tk Window types.
  96.  */
  97. #define TK_WIN_TOPLEVEL_CLASS_NAME "TkTopLevel"
  98. #define TK_WIN_CHILD_CLASS_NAME "TkChild"
  99. /*
  100.  * The following variable indicates whether we are restricted to Win32s
  101.  * GDI calls.
  102.  */
  103. extern int tkpIsWin32s;
  104. /*
  105.  * The following variable is a translation table between X gc functions and
  106.  * Win32 raster op modes.
  107.  */
  108. extern int tkpWinRopModes[];
  109. /*
  110.  * The following defines are used with TkWinGetBorderPixels to get the
  111.  * extra 2 border colors from a Tk_3DBorder.
  112.  */
  113. #define TK_3D_LIGHT2 TK_3D_DARK_GC+1
  114. #define TK_3D_DARK2 TK_3D_DARK_GC+2
  115. /*
  116.  * Internal procedures used by more than one source file.
  117.  */
  118. extern LRESULT TkWinChildProc _ANSI_ARGS_((HWND hwnd, UINT message,
  119.     WPARAM wParam, LPARAM lParam));
  120. extern void TkWinClipboardRender _ANSI_ARGS_((TkDisplay *dispPtr,
  121.     UINT format));
  122. extern LRESULT TkWinEmbeddedEventProc _ANSI_ARGS_((HWND hwnd,
  123.     UINT message, WPARAM wParam, LPARAM lParam));
  124. extern void TkWinFillRect _ANSI_ARGS_((HDC dc, int x, int y,
  125.     int width, int height, int pixel));
  126. extern COLORREF TkWinGetBorderPixels _ANSI_ARGS_((Tk_Window tkwin,
  127.     Tk_3DBorder border, int which));
  128. extern HDC TkWinGetDrawableDC _ANSI_ARGS_((Display *display,
  129.     Drawable d, TkWinDCState* state));
  130. extern int TkWinGetModifierState _ANSI_ARGS_((void));
  131. extern HPALETTE TkWinGetSystemPalette _ANSI_ARGS_((void));
  132. extern HMODULE TkWinGetTkModule _ANSI_ARGS_((void));
  133. extern HWND TkWinGetWrapperWindow _ANSI_ARGS_((Tk_Window tkwin));
  134. extern int TkWinHandleMenuEvent _ANSI_ARGS_((HWND *phwnd,
  135.     UINT *pMessage, WPARAM *pwParam, LPARAM *plParam,
  136.     LRESULT *plResult));
  137. extern int TkWinIndexOfColor _ANSI_ARGS_((XColor *colorPtr));
  138. extern void TkWinPointerDeadWindow _ANSI_ARGS_((TkWindow *winPtr));
  139. extern void TkWinPointerEvent _ANSI_ARGS_((HWND hwnd, int x,
  140.     int y));
  141. extern void TkWinPointerInit _ANSI_ARGS_((void));
  142. extern LRESULT  TkWinReflectMessage _ANSI_ARGS_((HWND hwnd,
  143.     UINT message, WPARAM wParam, LPARAM lParam));
  144. extern void TkWinReleaseDrawableDC _ANSI_ARGS_((Drawable d,
  145.     HDC hdc, TkWinDCState* state));
  146. extern LRESULT TkWinResendEvent _ANSI_ARGS_((WNDPROC wndproc,
  147.     HWND hwnd, XEvent *eventPtr));
  148. extern HPALETTE TkWinSelectPalette _ANSI_ARGS_((HDC dc,
  149.     Colormap colormap));
  150. extern void TkWinSetMenu _ANSI_ARGS_((Tk_Window tkwin,
  151.     HMENU hMenu));
  152. extern void TkWinSetWindowPos _ANSI_ARGS_((HWND hwnd,
  153.     HWND siblingHwnd, int pos));
  154. extern void TkWinUpdateCursor _ANSI_ARGS_((TkWindow *winPtr));
  155. extern void TkWinWmCleanup _ANSI_ARGS_((HINSTANCE hInstance));
  156. extern HWND TkWinWmFindEmbedAssociation _ANSI_ARGS_((
  157.     TkWindow *winPtr));
  158. extern void TkWinWmStoreEmbedAssociation _ANSI_ARGS_((
  159.     TkWindow *winPtr, HWND hwnd));
  160. extern void TkWinXCleanup _ANSI_ARGS_((HINSTANCE hInstance));
  161. extern void  TkWinXInit _ANSI_ARGS_((HINSTANCE hInstance));
  162. #endif /* _TKWININT */