home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / oleacc.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  13KB  |  280 lines

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright 1995 - 1996 Microsoft Corporation. All Rights Reserved.
  5. //
  6. //  File: oleacc.h
  7. //
  8. //--------------------------------------------------------------------------
  9. #ifndef _OLEACC_H_
  10. #define _OLEACC_H_
  11.  
  12.  
  13. // PROPERTIES:  Hierarchical
  14. #define DISPID_ACC_PARENT                   (-5000)
  15. #define DISPID_ACC_CHILDCOUNT               (-5001)
  16. #define DISPID_ACC_CHILD                    (-5002)
  17.  
  18. // PROPERTIES:  Descriptional
  19. #define DISPID_ACC_NAME                     (-5003)
  20. #define DISPID_ACC_VALUE                    (-5004)
  21. #define DISPID_ACC_DESCRIPTION              (-5005)
  22. #define DISPID_ACC_ROLE                     (-5006)
  23. #define DISPID_ACC_STATE                    (-5007)
  24. #define DISPID_ACC_HELP                     (-5008)
  25. #define DISPID_ACC_HELPTOPIC                (-5009)
  26. #define DISPID_ACC_KEYBOARDSHORTCUT         (-5010)
  27. #define DISPID_ACC_FOCUS                    (-5011)
  28. #define DISPID_ACC_SELECTION                (-5012)
  29. #define DISPID_ACC_DEFAULTACTION            (-5013)
  30.  
  31. // METHODS
  32. #define DISPID_ACC_SELECT                   (-5014)
  33. #define DISPID_ACC_LOCATION                 (-5015)
  34. #define DISPID_ACC_NAVIGATE                 (-5016)
  35. #define DISPID_ACC_HITTEST                  (-5017)
  36. #define DISPID_ACC_DODEFAULTACTION          (-5018)
  37.  
  38.  
  39.  
  40. #ifndef __MKTYPLIB__
  41.  
  42. //  CONSTANTS
  43.  
  44. //
  45. // Input to DISPID_ACC_NAVIGATE
  46. //
  47. #define NAVDIR_MIN                      0x00000000
  48. #define NAVDIR_UP                       0x00000001
  49. #define NAVDIR_DOWN                     0x00000002
  50. #define NAVDIR_LEFT                     0x00000003
  51. #define NAVDIR_RIGHT                    0x00000004
  52. #define NAVDIR_NEXT                     0x00000005
  53. #define NAVDIR_PREVIOUS                 0x00000006
  54. #define NAVDIR_FIRSTCHILD               0x00000007
  55. #define NAVDIR_LASTCHILD                0x00000008
  56. #define NAVDIR_MAX                      0x00000009
  57.  
  58. // Input to DISPID_ACC_SELECT
  59. #define SELFLAG_NONE                    0x00000000
  60. #define SELFLAG_TAKEFOCUS               0x00000001
  61. #define SELFLAG_TAKESELECTION           0x00000002
  62. #define SELFLAG_EXTENDSELECTION         0x00000004
  63. #define SELFLAG_ADDSELECTION            0x00000008
  64. #define SELFLAG_REMOVESELECTION         0x00000010
  65. #define SELFLAG_VALID                   0x0000001F
  66.  
  67. // Output from DISPID_ACC_STATE
  68. #define STATE_SYSTEM_UNAVAILABLE        0x00000001  // Disabled
  69. #define STATE_SYSTEM_SELECTED           0x00000002
  70. #define STATE_SYSTEM_FOCUSED            0x00000004
  71. #define STATE_SYSTEM_PRESSED            0x00000008
  72. #define STATE_SYSTEM_CHECKED            0x00000010
  73. #define STATE_SYSTEM_MIXED              0x00000020  // 3-state checkbox or toolbar button
  74. #define STATE_SYSTEM_READONLY           0x00000040
  75. #define STATE_SYSTEM_HOTTRACKED         0x00000080
  76. #define STATE_SYSTEM_DEFAULT            0x00000100
  77. #define STATE_SYSTEM_EXPANDED           0x00000200
  78. #define STATE_SYSTEM_COLLAPSED          0x00000400
  79. #define STATE_SYSTEM_BUSY               0x00000800
  80. #define STATE_SYSTEM_FLOATING           0x00001000  // Children "owned" not "contained" by parent
  81. #define STATE_SYSTEM_MARQUEED           0x00002000
  82. #define STATE_SYSTEM_ANIMATED           0x00004000
  83. #define STATE_SYSTEM_INVISIBLE          0x00008000
  84. #define STATE_SYSTEM_OFFSCREEN          0x00010000
  85. #define STATE_SYSTEM_SIZEABLE           0x00020000
  86. #define STATE_SYSTEM_MOVEABLE           0x00040000
  87. #define STATE_SYSTEM_SELFVOICING        0x00080000
  88. #define STATE_SYSTEM_FOCUSABLE          0x00100000
  89. #define STATE_SYSTEM_SELECTABLE         0x00200000
  90. #define STATE_SYSTEM_LINKED             0x00400000
  91. #define STATE_SYSTEM_TRAVERSED          0x00800000
  92. #define STATE_SYSTEM_MULTISELECTABLE    0x01000000  // Supports multiple selection
  93. #define STATE_SYSTEM_EXTSELECTABLE      0x02000000  // Supports extended selection
  94. #define STATE_SYSTEM_ALERT_LOW          0x04000000  // This information is of low priority
  95. #define STATE_SYSTEM_ALERT_MEDIUM       0x08000000  // This information is of medium priority
  96. #define STATE_SYSTEM_ALERT_HIGH         0x10000000  // This information is of high priority
  97. #define STATE_SYSTEM_VALID              0x1FFFFFFF
  98.  
  99. // Output from DISPID_ACC_ROLE
  100. #define ROLE_SYSTEM_TITLEBAR            0x00000001
  101. #define ROLE_SYSTEM_MENUBAR             0x00000002
  102. #define ROLE_SYSTEM_SCROLLBAR           0x00000003
  103. #define ROLE_SYSTEM_GRIP                0x00000004
  104. #define ROLE_SYSTEM_SOUND               0x00000005
  105. #define ROLE_SYSTEM_CURSOR              0x00000006
  106. #define ROLE_SYSTEM_CARET               0x00000007
  107. #define ROLE_SYSTEM_ALERT               0x00000008
  108. #define ROLE_SYSTEM_WINDOW              0x00000009
  109. #define ROLE_SYSTEM_CLIENT              0x0000000A
  110. #define ROLE_SYSTEM_MENUPOPUP           0x0000000B
  111. #define ROLE_SYSTEM_MENUITEM            0x0000000C
  112. #define ROLE_SYSTEM_TOOLTIP             0x0000000D
  113. #define ROLE_SYSTEM_APPLICATION         0x0000000E
  114. #define ROLE_SYSTEM_DOCUMENT            0x0000000F
  115. #define ROLE_SYSTEM_PANE                0x00000010
  116. #define ROLE_SYSTEM_CHART               0x00000011
  117. #define ROLE_SYSTEM_DIALOG              0x00000012
  118. #define ROLE_SYSTEM_BORDER              0x00000013
  119. #define ROLE_SYSTEM_GROUPING            0x00000014
  120. #define ROLE_SYSTEM_SEPARATOR           0x00000015
  121. #define ROLE_SYSTEM_TOOLBAR             0x00000016
  122. #define ROLE_SYSTEM_STATUSBAR           0x00000017
  123. #define ROLE_SYSTEM_TABLE               0x00000018
  124. #define ROLE_SYSTEM_COLUMNHEADER        0x00000019
  125. #define ROLE_SYSTEM_ROWHEADER           0x0000001A
  126. #define ROLE_SYSTEM_COLUMN              0x0000001B
  127. #define ROLE_SYSTEM_ROW                 0x0000001C
  128. #define ROLE_SYSTEM_CELL                0x0000001D
  129. #define ROLE_SYSTEM_LINK                0x0000001E
  130. #define ROLE_SYSTEM_HELPBALLOON         0x0000001F
  131. #define ROLE_SYSTEM_CHARACTER           0x00000020
  132. #define ROLE_SYSTEM_LIST                0x00000021
  133. #define ROLE_SYSTEM_LISTITEM            0x00000022
  134. #define ROLE_SYSTEM_OUTLINE             0x00000023
  135. #define ROLE_SYSTEM_OUTLINEITEM         0x00000024
  136. #define ROLE_SYSTEM_PAGETAB             0x00000025
  137. #define ROLE_SYSTEM_PROPERTYPAGE        0x00000026
  138. #define ROLE_SYSTEM_INDICATOR           0x00000027
  139. #define ROLE_SYSTEM_GRAPHIC             0x00000028
  140. #define ROLE_SYSTEM_STATICTEXT          0x00000029
  141. #define ROLE_SYSTEM_TEXT                0x0000002A  // Editable, selectable, etc.
  142. #define ROLE_SYSTEM_PUSHBUTTON          0x0000002B
  143. #define ROLE_SYSTEM_CHECKBUTTON         0x0000002C
  144. #define ROLE_SYSTEM_RADIOBUTTON         0x0000002D
  145. #define ROLE_SYSTEM_COMBOBOX            0x0000002E
  146. #define ROLE_SYSTEM_DROPLIST            0x0000002F
  147. #define ROLE_SYSTEM_PROGRESSBAR         0x00000030
  148. #define ROLE_SYSTEM_DIAL                0x00000031
  149. #define ROLE_SYSTEM_HOTKEYFIELD         0x00000032
  150. #define ROLE_SYSTEM_SLIDER              0x00000033
  151. #define ROLE_SYSTEM_SPINBUTTON          0x00000034
  152. #define ROLE_SYSTEM_DIAGRAM             0x00000035
  153. #define ROLE_SYSTEM_ANIMATION           0x00000036
  154. #define ROLE_SYSTEM_EQUATION            0x00000037
  155. #define ROLE_SYSTEM_BUTTONDROPDOWN      0x00000038
  156. #define ROLE_SYSTEM_BUTTONMENU          0x00000039
  157. #define ROLE_SYSTEM_BUTTONDROPDOWNGRID  0x0000003A
  158. #define ROLE_SYSTEM_WHITESPACE          0x0000003B
  159. #define ROLE_SYSTEM_PAGETABLIST         0x0000003C
  160. #define ROLE_SYSTEM_CLOCK               0x0000003D
  161.  
  162.  
  163. ////////////////////////////////////////////////////////////////////////////
  164. //  IAccessible definition
  165. //
  166. //  #define NO_ACCESSIBLE_INTERFACE if you need to include multiple header
  167. //  files that define the IAccessible interface.
  168.  
  169. #ifdef NO_ACCESSIBLE_INTERFACE
  170.  
  171. interface IAccessible;
  172.  
  173. #else
  174.  
  175. #undef INTERFACE
  176. #define INTERFACE   IAccessible
  177.  
  178. DEFINE_GUID(LIBID_Accessibility, 0x1ea4dbf0, 0x3c3b, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  179. DEFINE_GUID(IID_IAccessible,     0x618736e0, 0x3c3d, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);
  180.  
  181. DECLARE_INTERFACE_(IAccessible, IDispatch)
  182. {
  183. #ifndef NO_BASEINTERFACE_FUNCS
  184.     STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  185.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  186.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  187.     STDMETHOD(GetTypeInfoCount)(THIS_ UINT FAR* pctinfo) PURE;
  188.     STDMETHOD(GetTypeInfo)(THIS_ UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo) PURE;
  189.     STDMETHOD(GetIDsOfNames)(THIS_ REFIID riid, OLECHAR FAR* FAR* rgszNames, UINT cNames,
  190.         LCID lcid, DISPID FAR* rgdispid) PURE;
  191.     STDMETHOD(Invoke)(THIS_ DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
  192.         DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult, EXCEPINFO FAR* pexcepinfo,
  193.         UINT FAR* puArgErr) PURE;
  194. #endif
  195.  
  196.     STDMETHOD(get_accParent)(THIS_ IDispatch * FAR* ppdispParent) PURE;
  197.     STDMETHOD(get_accChildCount)(THIS_ long FAR* pChildCount) PURE;
  198.     STDMETHOD(get_accChild)(THIS_ VARIANT varChildIndex, IDispatch * FAR* ppdispChild) PURE;
  199.  
  200.     STDMETHOD(get_accName)(THIS_ VARIANT varChild, BSTR* pszName) PURE;
  201.     STDMETHOD(get_accValue)(THIS_ VARIANT varChild, BSTR* pszValue) PURE;
  202.     STDMETHOD(get_accDescription)(THIS_ VARIANT varChild, BSTR FAR* pszDescription) PURE;
  203.     STDMETHOD(get_accRole)(THIS_ VARIANT varChild, VARIANT *pvarRole) PURE;
  204.     STDMETHOD(get_accState)(THIS_ VARIANT varChild, VARIANT *pvarState) PURE;
  205.     STDMETHOD(get_accHelp)(THIS_ VARIANT varChild, BSTR* pszHelp) PURE;
  206.     STDMETHOD(get_accHelpTopic)(THIS_ BSTR* pszHelpFile, VARIANT varChild, long* pidTopic) PURE;
  207.     STDMETHOD(get_accKeyboardShortcut)(THIS_ VARIANT varChild, BSTR* pszKeyboardShortcut) PURE;
  208.     STDMETHOD(get_accFocus)(THIS_ VARIANT FAR * pvarFocusChild) PURE;
  209.     STDMETHOD(get_accSelection)(THIS_ VARIANT FAR * pvarSelectedChildren) PURE;
  210.     STDMETHOD(get_accDefaultAction)(THIS_ VARIANT varChild, BSTR* pszDefaultAction) PURE;
  211.  
  212.     STDMETHOD(accSelect)(THIS_ long flagsSelect, VARIANT varChild) PURE;
  213.     STDMETHOD(accLocation)(THIS_ long* pxLeft, long* pyTop, long* pcxWidth, long* pcyHeight, VARIANT varChild) PURE;
  214.     STDMETHOD(accNavigate)(THIS_ long navDir, VARIANT varStart, VARIANT * pvarEndUpAt) PURE;
  215.     STDMETHOD(accHitTest)(THIS_ long xLeft, long yTop, VARIANT * pvarChildAtPoint) PURE;
  216.     STDMETHOD(accDoDefaultAction)(THIS_ VARIANT varChild) PURE;
  217.  
  218.     STDMETHOD(put_accName)(THIS_ VARIANT varChild, BSTR szName) PURE;
  219.     STDMETHOD(put_accValue)(THIS_ VARIANT varChild, BSTR pszValue) PURE;
  220. };
  221. #endif // NO_ACCESSIBLE_INTERFACE
  222.  
  223. typedef IAccessible* LPACCESSIBLE;
  224.  
  225.  
  226.  
  227. ////////////////////////////////////////////////////////////////////////////
  228. //  GUIDs (these GUIDs can be linked to from OLEACC.LIB)
  229. //EXTERN_C __declspec(dllimport) const GUID     LIBID_Accessibility;
  230. //EXTERN_C __declspec(dllimport) const IID      IID_IAccessible;
  231.  
  232.  
  233. ////////////////////////////////////////////////////////////////////////////
  234. //  Types to help dynamic binding to OLEACC.DLL
  235. typedef LRESULT (STDAPICALLTYPE *LPFNLRESULTFROMOBJECT)(REFIID riid, WPARAM wParam, LPUNKNOWN punk);
  236. typedef HRESULT (STDAPICALLTYPE *LPFNOBJECTFROMLRESULT)(LRESULT lResult, REFIID riid, WPARAM wParam, void** ppvObject);
  237. typedef HRESULT (STDAPICALLTYPE *LPFNACCESSIBLEOBJECTFROMWINDOW)(HWND hwnd, DWORD dwId, REFIID riid, void** ppvObject);
  238. typedef HRESULT (STDAPICALLTYPE *LPFNACCESSIBLEOBJECTFROMPOINT)(POINT ptScreen, IAccessible** ppacc, VARIANT* pvarChild);
  239. typedef HRESULT (STDAPICALLTYPE *LPFNCREATESTDACCESSIBLEOBJECT)(HWND hwnd, LONG idObject, REFIID riid, void** ppvObject);
  240. typedef HRESULT (STDAPICALLTYPE *LPFNACCESSIBLECHILDREN)(IAccessible* paccContainer, LONG iChildStart,LONG cChildren,
  241.                                                          VARIANT* rgvarChildren,LONG* pcObtained);
  242.  
  243.  
  244.  
  245. ////////////////////////////////////////////////////////////////////////////
  246. //  Prototypes
  247. STDAPI_(LRESULT) LresultFromObject(REFIID riid, WPARAM wParam, LPUNKNOWN punk);
  248. STDAPI          ObjectFromLresult(LRESULT lResult, REFIID riid, WPARAM wParam, void** ppvObject);
  249.  
  250. STDAPI          WindowFromAccessibleObject(IAccessible*, HWND* phwnd);
  251. STDAPI          AccessibleObjectFromWindow(HWND hwnd, DWORD dwId, REFIID riid, void **ppvObject);
  252. STDAPI          AccessibleObjectFromEvent(HWND hwnd, DWORD dwId, DWORD dwChildId, IAccessible** ppacc, VARIANT* pvarChild);
  253.  
  254. STDAPI          AccessibleObjectFromPoint(POINT ptScreen, IAccessible ** ppacc, VARIANT* pvarChild);
  255.  
  256. STDAPI          CreateStdAccessibleObject(HWND hwnd, LONG idObject, REFIID riid, void** ppvObject);
  257. STDAPI            AccessibleChildren (IAccessible* paccContainer, LONG iChildStart,                
  258.                                     LONG cChildren, VARIANT* rgvarChildren,LONG* pcObtained);
  259.  
  260.  
  261. STDAPI_(UINT)   GetRoleTextA(DWORD lRole, LPSTR lpszRole, UINT cchRoleMax);
  262. STDAPI_(UINT)   GetRoleTextW(DWORD lRole, LPWSTR lpszRole, UINT cchRoleMax);
  263. #ifdef UNICODE
  264. #define GetRoleText     GetRoleTextW
  265. #else
  266. #define GetRoleText     GetRoleTextA
  267. #endif // UNICODE
  268.  
  269. STDAPI_(UINT)   GetStateTextA(DWORD lStateBit, LPSTR lpszState, UINT cchState);
  270. STDAPI_(UINT)   GetStateTextW(DWORD lStateBit, LPWSTR lpszState, UINT cchState);
  271. #ifdef UNICODE
  272. #define GetStateText    GetStateTextW
  273. #else
  274. #define GetStateText    GetStateTextA
  275. #endif // UNICODE
  276.  
  277. #endif // !__MKTYPLIB__
  278.  
  279. #endif // _OLEACC_H_
  280.