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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990 The Regents of the University of California.
  3. '" Copyright (c) 1994-1998 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: GetCursor.3,v 1.5 2002/08/05 04:30:38 dgp Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tk_AllocCursorFromObj 3 8.1 Tk "Tk Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tk_AllocCursorFromObj, Tk_GetCursor, Tk_GetCursorFromObj, Tk_GetCursorFromData, Tk_NameOfCursor, Tk_FreeCursorFromObj, Tk_FreeCursor - maintain database of cursors
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tk.h>fR
  18. .sp
  19. .VS 8.1
  20. Tk_Cursor
  21. fBTk_AllocCursorFromObj(fIinterp, tkwin, objPtrfB)fR
  22. .sp
  23. Tk_Cursor
  24. fBTk_GetCursor(fIinterp, tkwin, namefB)fR
  25. .sp
  26. Tk_Cursor
  27. fBTk_GetCursorFromObj(fItkwin, objPtrfB)fR
  28. .VE
  29. .sp
  30. Tk_Cursor
  31. fBTk_GetCursorFromData(fIinterp, tkwin, source, mask, width, height, xHot, yHot, fg, bgfB)fR
  32. .sp
  33. CONST char *
  34. fBTk_NameOfCursor(fIdisplay, cursorfB)fR
  35. .sp
  36. .VS 8.1
  37. fBTk_FreeCursorFromObj(fItkwin, objPtrfB)fR
  38. .VE
  39. .sp
  40. fBTk_FreeCursor(fIdisplay, cursorfB)fR
  41. .SH ARGUMENTS
  42. .AS "unsigned long" *pixelPtr
  43. .AP Tcl_Interp *interp in
  44. Interpreter to use for error reporting.
  45. .AP Tk_Window tkwin in
  46. Token for window in which the cursor will be used.
  47. .VS 8.1 br
  48. .AP Tcl_Obj *objPtr in/out
  49. Description of cursor;  see below for possible values.  Internal rep will be
  50. modified to cache pointer to corresponding Tk_Cursor.
  51. .AP char *name in
  52. Same as fIobjPtrfR except description of cursor is passed as a string and
  53. resulting Tk_Cursor isn't cached.
  54. .VE
  55. .AP "CONST char" *source in
  56. Data for cursor cursor, in standard cursor format.
  57. .AP "CONST char" *mask in
  58. Data for mask cursor, in standard cursor format.
  59. .AP "int" width in
  60. Width of fIsourcefR and fImaskfR.
  61. .AP "int" height in
  62. Height of fIsourcefR and fImaskfR.
  63. .AP "int" xHot in
  64. X-location of cursor hot-spot.
  65. .AP "int" yHot in
  66. Y-location of cursor hot-spot.
  67. .AP Tk_Uid fg in
  68. Textual description of foreground color for cursor.
  69. .AP Tk_Uid bg in
  70. Textual description of background color for cursor.
  71. .AP Display *display in
  72. Display for which fIcursorfR was allocated.
  73. .AP Tk_Cursor cursor in
  74. Opaque Tk identifier for cursor.  If passed to fBTk_FreeCursorfR, must
  75. have been returned by some previous call to fBTk_GetCursorfR or
  76. fBTk_GetCursorFromDatafR.
  77. .BE
  78. .SH DESCRIPTION
  79. .PP
  80. These procedures manage a collection of cursors
  81. being used by an application.  The procedures allow cursors to be
  82. re-used efficiently, thereby avoiding server overhead, and also
  83. allow cursors to be named with character strings.
  84. .PP
  85. .VS 8.1
  86. fBTk_AllocCursorFromObjfR takes as argument an object describing a
  87. cursor, and returns an opaque Tk identifier for a cursor corresponding
  88. to the description.  It re-uses an existing cursor if possible and
  89. creates a new one otherwise.  fBTk_AllocCursorFromObjfR caches
  90. information about the return value in fIobjPtrfR, which speeds up
  91. future calls to procedures such as fBTk_AllocCursorFromObjfR and
  92. fBTk_GetCursorFromObjfR. If an error occurs in creating the cursor,
  93. such as when fIobjPtrfR refers to a non-existent file, then fBNonefR
  94. is returned and an error message will be stored in fIinterpfR's result
  95. if fIinterpfR isn't NULL.  fIObjPtrfR must contain a standard Tcl
  96. list with one of the following forms:
  97. .VE
  98. .TP
  99. fInamefR[fIfgColorfR[fIbgColorfR]]
  100. fINamefR is the name of a cursor in the standard X cursor cursor,
  101. i.e., any of the names defined in fBcursorcursor.hfR, without
  102. the fBXC_fR.  Some example values are fBX_cursorfR, fBhand2fR,
  103. or fBleft_ptrfR.  Appendix B of ``The X Window System''
  104. by Scheifler & Gettys has illustrations showing what each of these
  105. cursors looks like.  If fIfgColorfR and fIbgColorfR are both
  106. specified, they give the foreground and background colors to use
  107. for the cursor (any of the forms acceptable to fBTk_GetColorfR
  108. may be used).  If only fIfgColorfR is specified, then there
  109. will be no background color:  the background will be transparent.
  110. If no colors are specified, then the cursor
  111. will use black for its foreground color and white for its background
  112. color.
  113. .RS
  114. .PP
  115. The Macintosh version of Tk supports all of the X cursors and
  116. will also accept any of the standard Mac cursors
  117. including fBibeamfR, fBcrosshairfR, fBwatchfR, fBplusfR, and
  118. fBarrowfR.  In addition, Tk will load Macintosh cursor resources of
  119. the types fBcrsrfR (color) and fBCURSfR (black and white) by the
  120. name of the of the resource.  The application and all its open
  121. dynamic library's resource files will be searched for the named
  122. cursor.  If there are conflicts color cursors will always be loaded
  123. in preference to black and white cursors.
  124. .RE
  125. .TP
  126. fB@fIsourceNamemaskNamefgColorbgColorfR
  127. In this form, fIsourceNamefR and fImaskNamefR are the names of
  128. files describing cursors for the cursor's source bits and mask.
  129. Each file must be in standard X11 or X10 cursor format.
  130. fIFgColorfR and fIbgColorfR 
  131. indicate the colors to use for the
  132. cursor, in any of the forms acceptable to fBTk_GetColorfR.  This
  133. form of the command will not work on Macintosh or Windows computers.
  134. .TP
  135. fB@fIsourceNamefgColorfR
  136. This form is similar to the one above, except that the source is
  137. used as mask also.  This means that the cursor's background is
  138. transparent.  This form of the command will not work on Macintosh
  139. or Windows computers.
  140. .TP
  141. fB@fIsourceNamefR
  142. This form only works on Windows, and will load a Windows system
  143. cursor (fB.anifR or fB.curfR) from the file specified in
  144. fIsourceNamefR.
  145. .PP
  146. .VS 8.1
  147. fBTk_GetCursorfR is identical to fBTk_AllocCursorFromObjfR except
  148. that the description of the cursor is specified with a string instead
  149. of an object.  This prevents fBTk_GetCursorfR from caching the
  150. return value, so fBTk_GetCursorfR is less efficient than
  151. fBTk_AllocCursorFromObjfR.
  152. .PP
  153. fBTk_GetCursorFromObjfR returns the token for an existing cursor, given
  154. the window and description used to create the cursor.
  155. fBTk_GetCursorFromObjfR doesn't actually create the cursor; the cursor
  156. must already have been created with a previous call to
  157. fBTk_AllocCursorFromObjfR or fBTk_GetCursorfR.  The return
  158. value is cached in fIobjPtrfR, which speeds up
  159. future calls to fBTk_GetCursorFromObjfR with the same fIobjPtrfR
  160. and fItkwinfR.
  161. .VE
  162. .PP
  163. fBTk_GetCursorFromDatafR allows cursors to be created from
  164. in-memory descriptions of their source and mask cursors.  fISourcefR
  165. points to standard cursor data for the cursor's source bits, and
  166. fImaskfR points to standard cursor data describing
  167. which pixels of fIsourcefR are to be drawn and which are to be
  168. considered transparent.  fIWidthfR and fIheightfR give the
  169. dimensions of the cursor, fIxHotfR and fIyHotfR indicate the
  170. location of the cursor's hot-spot (the point that is reported when
  171. an event occurs), and fIfgfR and fIbgfR describe the cursor's
  172. foreground and background colors textually (any of the forms
  173. suitable for fBTk_GetColorfR may be used).  Typically, the
  174. arguments to fBTk_GetCursorFromDatafR are created by including
  175. a cursor file directly into the source code for a program, as in
  176. the following example:
  177. .CS
  178. Tk_Cursor cursor;
  179. #include "source.cursor"
  180. #include "mask.cursor"
  181. cursor = Tk_GetCursorFromData(interp, tkwin, source_bits,
  182. mask_bits, source_width, source_height, source_x_hot,
  183. source_y_hot, Tk_GetUid("red"), Tk_GetUid("blue"));
  184. .CE
  185. .PP
  186. Under normal conditions fBTk_GetCursorFromDatafR
  187. will return an identifier for the requested cursor.  If an error
  188. occurs in creating the cursor then fBNonefR is returned and an error
  189. message will be stored in fIinterpfR's result.
  190. .PP
  191. fBTk_AllocCursorFromObjfR, fBTk_GetCursorfR, and
  192. fBTk_GetCursorFromDatafR maintain a
  193. database of all the cursors they have created.  Whenever possible,
  194. a call to fBTk_AllocCursorFromObjfR, fBTk_GetCursorfR, or
  195. fBTk_GetCursorFromDatafR will
  196. return an existing cursor rather than creating a new one.  This
  197. approach can substantially reduce server overhead, so the Tk
  198. procedures should generally be used in preference to Xlib procedures
  199. like fBXCreateFontCursorfR or fBXCreatePixmapCursorfR, which
  200. create a new cursor on each call.  The Tk procedures are also more
  201. portable than the lower-level X procedures.
  202. .PP
  203. The procedure fBTk_NameOfCursorfR is roughly the inverse of
  204. fBTk_GetCursorfR.  If its fIcursorfR argument was created
  205. by fBTk_GetCursorfR, then the return value is the fInamefR
  206. argument that was passed to fBTk_GetCursorfR to create the
  207. cursor.  If fIcursorfR was created by a call to fBTk_GetCursorFromDatafR,
  208. or by any other mechanism, then the return value is a hexadecimal string
  209. giving the X identifier for the cursor.
  210. Note:  the string returned by fBTk_NameOfCursorfR is
  211. only guaranteed to persist until the next call to
  212. fBTk_NameOfCursorfR.  Also, this call is not portable except for
  213. cursors returned by fBTk_GetCursorfR.
  214. .PP
  215. .VS 8.1
  216. When a cursor returned by fBTk_AllocCursorFromObjfR, fBTk_GetCursorfR,
  217. or fBTk_GetCursorFromDatafR
  218. is no longer needed, fBTk_FreeCursorFromObjfR or
  219. fBTk_FreeCursorfR should be called to release it.
  220. For fBTk_FreeCursorFromObjfR the cursor to release is specified
  221. with the same information used to create it; for
  222. fBTk_FreeCursorfR the cursor to release is specified
  223. with its Tk_Cursor token.
  224. There should be exactly one call to fBTk_FreeCursorfR for
  225. each call to fBTk_AllocCursorFromObjfR, fBTk_GetCursorfR,
  226. or fBTk_GetCursorFromDatafR.
  227. .VE
  228. .SH BUGS
  229. In determining whether an existing cursor can be used to satisfy
  230. a new request, fBTk_AllocCursorFromObjfR, fBTk_GetCursorfR,
  231. and fBTk_GetCursorFromDatafR
  232. consider only the immediate values of their arguments.  For
  233. example, when a file name is passed to fBTk_GetCursorfR,
  234. fBTk_GetCursorfR will assume it is safe to re-use an existing
  235. cursor created from the same file name:  it will not check to
  236. see whether the file itself has changed, or whether the current
  237. directory has changed, thereby causing the name to refer to
  238. a different file.  Similarly, fBTk_GetCursorFromDatafR assumes
  239. that if the same fIsourcefR pointer is used in two different calls,
  240. then the pointers refer to the same data;  it does not check to
  241. see if the actual data values have changed.
  242. .SH KEYWORDS
  243. cursor