tkWinInt.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:6k
源码类别:

通讯编程

开发平台:

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-1997 Sun Microsystems, Inc.
  9.  * Copyright (c) 1998-2000 by Scriptics Corporation.
  10.  *
  11.  * See the file "license.terms" for information on usage and redistribution
  12.  * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  13.  *
  14.  * RCS: @(#) $Id: tkWinInt.h,v 1.14.2.6 2007/12/05 19:18:08 hobbs Exp $
  15.  */
  16. #ifndef _TKWININT
  17. #define _TKWININT
  18. #ifndef _TKINT
  19. #include "tkInt.h"
  20. #endif
  21. /*
  22.  * Include platform specific public interfaces.
  23.  */
  24. #ifndef _TKWIN
  25. #include "tkWin.h"
  26. #endif
  27. #ifndef _TKPORT
  28. #include "tkPort.h"
  29. #endif
  30. /*
  31.  * Define constants missing from older Win32 SDK header files.
  32.  */
  33. #ifndef WS_EX_TOOLWINDOW
  34. #define WS_EX_TOOLWINDOW 0x00000080L 
  35. #endif
  36. /*
  37.  * The TkWinDCState is used to save the state of a device context
  38.  * so that it can be restored later.
  39.  */
  40. typedef struct TkWinDCState {
  41.     HPALETTE palette;
  42.     int bkmode;
  43. } TkWinDCState;
  44. /*
  45.  * The TkWinDrawable is the internal implementation of an X Drawable (either
  46.  * a Window or a Pixmap).  The following constants define the valid Drawable
  47.  * types.
  48.  */
  49. #define TWD_BITMAP 1
  50. #define TWD_WINDOW 2
  51. #define TWD_WINDC 3
  52. typedef struct {
  53.     int type;
  54.     HWND handle;
  55.     TkWindow *winPtr;
  56. } TkWinWindow;
  57. typedef struct {
  58.     int type;
  59.     HBITMAP handle;
  60.     Colormap colormap;
  61.     int depth;
  62. } TkWinBitmap;
  63. typedef struct {
  64.     int type;
  65.     HDC hdc;
  66. }TkWinDC;
  67. typedef union {
  68.     int type;
  69.     TkWinWindow window;
  70.     TkWinBitmap bitmap;
  71.     TkWinDC winDC;
  72. } TkWinDrawable;
  73. /*
  74.  * The following macros are used to retrieve internal values from a Drawable.
  75.  */
  76. #define TkWinGetHWND(w) (((TkWinDrawable *) w)->window.handle)
  77. #define TkWinGetWinPtr(w) (((TkWinDrawable *) w)->window.winPtr)
  78. #define TkWinGetHBITMAP(w) (((TkWinDrawable *) w)->bitmap.handle)
  79. #define TkWinGetColormap(w) (((TkWinDrawable *) w)->bitmap.colormap)
  80. #define TkWinGetHDC(w) (((TkWinDrawable *) w)->winDC.hdc)
  81. /*
  82.  * The following structure is used to encapsulate palette information.
  83.  */
  84. typedef struct {
  85.     HPALETTE palette; /* Palette handle used when drawing. */
  86.     UINT size; /* Number of entries in the palette. */
  87.     int stale; /* 1 if palette needs to be realized,
  88.  * otherwise 0.  If the palette is stale,
  89.  * then an idle handler is scheduled to
  90.  * realize the palette. */
  91.     Tcl_HashTable refCounts; /* Hash table of palette entry reference counts
  92.  * indexed by pixel value. */
  93. } TkWinColormap;
  94. /*
  95.  * The following macro retrieves the Win32 palette from a colormap.
  96.  */
  97. #define TkWinGetPalette(colormap) (((TkWinColormap *) colormap)->palette)
  98. /*
  99.  * The following macros define the class names for Tk Window types.
  100.  */
  101. #define TK_WIN_TOPLEVEL_CLASS_NAME "TkTopLevel"
  102. #define TK_WIN_CHILD_CLASS_NAME "TkChild"
  103. /*
  104.  * The following variable is a translation table between X gc functions and
  105.  * Win32 raster and BitBlt op modes.
  106.  */
  107. extern int tkpWinRopModes[];
  108. extern int tkpWinBltModes[];
  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. #include "tkIntPlatDecls.h"
  119. /*
  120.  * We need to specially add the TkWinChildProc because of the special
  121.  * prototype it has (doesn't fit into stubs schema)
  122.  */
  123. #ifdef BUILD_tk
  124. #undef TCL_STORAGE_CLASS
  125. #define TCL_STORAGE_CLASS DLLEXPORT
  126. #endif
  127. EXTERN LRESULT CALLBACK TkWinChildProc _ANSI_ARGS_((HWND hwnd, UINT message,
  128.     WPARAM wParam, LPARAM lParam));
  129. /*
  130.  * Special proc needed as tsd accessor function between
  131.  * tkWinX.c:GenerateXEvent and tkWinClipboard.c:UpdateClipboard
  132.  */
  133. EXTERN void TkWinUpdatingClipboard(int mode);
  134. /*
  135.  * Used by tkWinDialog.c to associate the right icon with tk_messageBox
  136.  */
  137. EXTERN HICON TkWinGetIcon(Tk_Window tkw, DWORD iconsize);
  138. /*
  139.  * Used by tkWinX.c on for certain system display change messages
  140.  */
  141. EXTERN void TkWinDisplayChanged(Display *display);
  142. /*
  143.  * The following structure keeps track of whether we are using the 
  144.  * multi-byte or the wide-character interfaces to the operating system.
  145.  * System calls should be made through the following function table.
  146.  *
  147.  * While some system calls need to use this A/W jump-table, it is not
  148.  * necessary for all calls to do it, which is why you won't see this
  149.  * used throughout the Tk code, but only in key areas. -- hobbs
  150.  */
  151. typedef struct TkWinProcs {
  152.     int useWide;
  153.     LRESULT (WINAPI *callWindowProc)(WNDPROC lpPrevWndFunc, HWND hWnd,
  154.     UINT Msg, WPARAM wParam, LPARAM lParam);
  155.     LRESULT (WINAPI *defWindowProc)(HWND hWnd, UINT Msg, WPARAM wParam,
  156.     LPARAM lParam);
  157.     ATOM (WINAPI *registerClass)(CONST WNDCLASS *lpWndClass);
  158.     BOOL (WINAPI *setWindowText)(HWND hWnd, LPCTSTR lpString);
  159.     HWND (WINAPI *createWindowEx)(DWORD dwExStyle, LPCTSTR lpClassName,
  160.     LPCTSTR lpWindowName, DWORD dwStyle, int x, int y,
  161.     int nWidth, int nHeight, HWND hWndParent, HMENU hMenu,
  162.     HINSTANCE hInstance, LPVOID lpParam);
  163.     BOOL (WINAPI *insertMenu)(HMENU hMenu, UINT uPosition, UINT uFlags,
  164.     UINT uIDNewItem, LPCTSTR lpNewItem);
  165. } TkWinProcs;
  166. EXTERN TkWinProcs *tkWinProcs;
  167. #undef TCL_STORAGE_CLASS
  168. #define TCL_STORAGE_CLASS DLLIMPORT
  169. /*
  170.  * The following allows us to cache these encoding for multiple functions.
  171.  */
  172. extern Tcl_Encoding TkWinGetKeyInputEncoding _ANSI_ARGS_((void));
  173. extern Tcl_Encoding TkWinGetUnicodeEncoding _ANSI_ARGS_((void));
  174. /*
  175.  * Values returned by TkWinGetPlatformTheme.
  176.  */
  177. #define TK_THEME_WIN_CLASSIC    1
  178. #define TK_THEME_WIN_XP         2
  179. #endif /* _TKWININT */