default.h
Upload User: caisha3
Upload Date: 2013-09-21
Package Size: 208739k
Code Size: 11k
Category:

Windows Develop

Development Platform:

Visual C++

  1. // Copyright (c) 1996-1999 Microsoft Corporation
  2. // --------------------------------------------------------------------------
  3. //
  4. //  DEFAULT.H
  5. //
  6. //  Standard OLE accessible object class
  7. //
  8. // --------------------------------------------------------------------------
  9. class   CAccessible :  public  IAccessible, public IEnumVARIANT, public IOleWindow
  10. {
  11.     public:
  12. // Virtual dtor ensures that dtors of derived classes
  13. // are called correctly when objects are deleted
  14. virtual ~CAccessible();
  15.         // IUnknown
  16.         virtual STDMETHODIMP            QueryInterface(REFIID riid, void** ppv);
  17.         virtual STDMETHODIMP_(ULONG)    AddRef(void);
  18.         virtual STDMETHODIMP_(ULONG)    Release(void);
  19.         // IDispatch
  20.         virtual STDMETHODIMP            GetTypeInfoCount(UINT* pctinfo);
  21.         virtual STDMETHODIMP            GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo** pptinfo);
  22.         virtual STDMETHODIMP            GetIDsOfNames(REFIID riid, OLECHAR** rgszNames, UINT cNames,
  23.             LCID lcid, DISPID* rgdispid);
  24.         virtual STDMETHODIMP            Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
  25.             DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexcepinfo,
  26.             UINT* puArgErr);
  27.         // IAccessible
  28.         virtual STDMETHODIMP            get_accParent(IDispatch ** ppdispParent);
  29.         virtual STDMETHODIMP            get_accChildCount(long* pChildCount);
  30.         virtual STDMETHODIMP            get_accChild(VARIANT varChild, IDispatch ** ppdispChild);
  31.         virtual STDMETHODIMP            get_accName(VARIANT varChild, BSTR* pszName) = 0;
  32.         virtual STDMETHODIMP            get_accValue(VARIANT varChild, BSTR* pszValue);
  33.         virtual STDMETHODIMP            get_accDescription(VARIANT varChild, BSTR* pszDescription);
  34.         virtual STDMETHODIMP            get_accRole(VARIANT varChild, VARIANT *pvarRole) = 0;
  35.         virtual STDMETHODIMP            get_accState(VARIANT varChild, VARIANT *pvarState) = 0;
  36.         virtual STDMETHODIMP            get_accHelp(VARIANT varChild, BSTR* pszHelp);
  37.         virtual STDMETHODIMP            get_accHelpTopic(BSTR* pszHelpFile, VARIANT varChild, long* pidTopic);
  38.         virtual STDMETHODIMP            get_accKeyboardShortcut(VARIANT varChild, BSTR* pszKeyboardShortcut);
  39.         virtual STDMETHODIMP get_accFocus(VARIANT * pvarFocusChild);
  40.         virtual STDMETHODIMP get_accSelection(VARIANT * pvarSelectedChildren);
  41.         virtual STDMETHODIMP get_accDefaultAction(VARIANT varChild, BSTR* pszDefaultAction);
  42.         virtual STDMETHODIMP accSelect(long flagsSel, VARIANT varChild);
  43.         virtual STDMETHODIMP accLocation(long* pxLeft, long* pyTop, long* pcxWidth, long* pcyHeight, VARIANT varChild) = 0;
  44.         virtual STDMETHODIMP accNavigate(long navDir, VARIANT varStart, VARIANT * pvarEndUpAt);
  45.         virtual STDMETHODIMP accHitTest(long xLeft, long yTop, VARIANT * pvarChildAtPoint) = 0;
  46.         virtual STDMETHODIMP accDoDefaultAction(VARIANT varChild);
  47.         virtual STDMETHODIMP put_accName(VARIANT varChild, BSTR szName);
  48.         virtual STDMETHODIMP put_accValue(VARIANT varChild, BSTR pszValue);
  49.         // IEnumVARIANT
  50.         virtual STDMETHODIMP            Next(ULONG celt, VARIANT* rgvar, ULONG * pceltFetched);
  51.         virtual STDMETHODIMP            Skip(ULONG celt);
  52.         virtual STDMETHODIMP            Reset(void);
  53.         virtual STDMETHODIMP            Clone(IEnumVARIANT ** ppenum) = 0;
  54.         // IOleWindow
  55.         virtual STDMETHODIMP            GetWindow(HWND* phwnd);
  56.         virtual STDMETHODIMP            ContextSensitiveHelp(BOOL fEnterMode);
  57.         virtual void SetupChildren(void);
  58.         virtual BOOL ValidateChild(VARIANT*);
  59.         HRESULT InitTypeInfo(void);
  60.         void    TermTypeInfo(void);
  61.     protected:
  62.         HWND        m_hwnd;
  63.         ULONG       m_cRef;
  64.         long        m_cChildren;        // Count of index-based children
  65.         long        m_idChildCur;       // ID of current child in enum (may be index or hwnd based)
  66.         ITypeInfo*  m_pTypeInfo;        // TypeInfo for IDispatch junk
  67. };
  68. //
  69. // Validate and initialization macros
  70. //
  71. #define ValidateFlags(flags, valid)         (!((flags) & ~(valid)))
  72. #define ValidateRange(lValue, lMin, lMax)   (((lValue) > (lMin)) && ((lValue) < (lMax)))
  73.         
  74. BOOL ValidateNavDir(long lFlags, long idChild);
  75. BOOL ValidateSelFlags(long flags);
  76. #define InitPv(pv)              *pv = NULL
  77. #define InitPlong(plong)        *plong = 0
  78. #define InitPvar(pvar)           pvar->vt = VT_EMPTY
  79. #define InitAccLocation(px, py, pcx, pcy)   {InitPlong(px); InitPlong(py); InitPlong(pcx); InitPlong(pcy);}
  80. #define UNUSED(param)   (param)
  81. #define CCH_STRING_MAX  256
  82. #define E_NOT_APPLICABLE            DISP_E_MEMBERNOTFOUND
  83. #define ChildFromIndex(index)       (1 << ((index)-1))
  84. #define ChildPresent(mask, index)   (((mask) & ChildFromIndex(index)) != 0)
  85. // defines used for SendKey function
  86. #define KEYPRESS    0
  87. #define KEYRELEASE  KEYEVENTF_KEYUP
  88. #define VK_VIRTUAL  0
  89. #define VK_CHAR     1
  90. //
  91. // Helper functions
  92. //
  93. extern BSTR     TCharSysAllocString(LPTSTR lpszString);
  94. extern HRESULT  _GetTypeInfo(LCID lcid, UUID uuid, ITypeInfo **ppITypeInfo);
  95. extern BOOL     ClickOnTheRect(LPRECT lprcLoc,HWND hwndToCheck,BOOL fDblClick);
  96. extern BOOL     SendKey (int nEvent,int nKeyType,WORD wKeyCode,TCHAR cChar);
  97. //
  98. // For GetProcAddress() in USER and KERNEL32
  99. //
  100. extern BOOL     MyGetGUIThreadInfo(DWORD, PGUITHREADINFO);
  101. extern BOOL     MyGetCursorInfo(LPCURSORINFO);
  102. extern BOOL     MyGetWindowInfo(HWND, LPWINDOWINFO);
  103. extern BOOL     MyGetTitleBarInfo(HWND, LPTITLEBARINFO);
  104. extern BOOL     MyGetScrollBarInfo(HWND, LONG, LPSCROLLBARINFO);
  105. extern BOOL     MyGetComboBoxInfo(HWND, LPCOMBOBOXINFO);
  106. extern BOOL     MyGetAltTabInfo(HWND, int, LPALTTABINFO, LPTSTR, UINT);
  107. extern BOOL     MyGetMenuBarInfo(HWND, long, long, LPMENUBARINFO);
  108. extern HWND     MyGetAncestor(HWND, UINT);
  109. extern HWND     MyGetFocus(void);
  110. extern HWND     MyRealChildWindowFromPoint(HWND, POINT);
  111. extern UINT     MyGetWindowClass(HWND, LPTSTR, UINT);
  112. extern DWORD    MyGetListBoxInfo(HWND);
  113. extern void     MyGetRect(HWND, LPRECT, BOOL);
  114. extern DWORD MyGetModuleFileName(HMODULE hModule,LPTSTR lpFilename,DWORD nSize);
  115. extern PVOID    MyInterlockedCompareExchange(PVOID *,PVOID,PVOID);
  116. extern LPVOID   MyVirtualAllocEx(HANDLE,LPVOID,DWORD,DWORD,DWORD);
  117. extern BOOL     MyVirtualFreeEx(HANDLE,LPVOID,DWORD,DWORD);
  118. extern BOOL     MyBlockInput(BOOL);
  119. extern BOOL MySendInput(UINT cInputs, LPINPUT pInputs, INT cbSize);
  120. extern HRESULT  HrCreateString(int istr, BSTR* pszResult);
  121. extern HRESULT  GetWindowObject(HWND hwndChild, VARIANT* lpvar);
  122. extern HRESULT  GetNoncObject(HWND hwndFrame, LONG idObject, VARIANT* lpvar);
  123. extern HRESULT  GetParentToNavigate(long, HWND, long, long, VARIANT*);
  124. typedef HRESULT (* LPFNCREATE)(HWND, long, REFIID, void**);
  125. //-----------------------------------------------------------------
  126. // [v-jaycl, 4/2/97] Expanded rgAtomClasses for registered
  127. //  handlers.  TODO: Should make array dynamic.
  128. //-----------------------------------------------------------------
  129. extern ATOM         rgAtomClasses[CSTR_CLIENT_CLASSES + TOTAL_REG_HANDLERS];
  130. extern LPFNCREATE   rgClientTypes[CSTR_CLIENT_CLASSES];
  131. extern LPFNCREATE   rgWindowTypes[CSTR_WINDOW_CLASSES];
  132. extern LPTSTR rgClassNames[CSTR_CLIENT_CLASSES];
  133. extern BOOL CompareWindowClass( HWND hWnd, LPFNCREATE pfnQuery );
  134. extern HRESULT FindAndCreateWindowClass( HWND        hWnd,
  135.                                          BOOL        fWindow,
  136.                                          LPFNCREATE  pfnDefault,
  137.                                          REFIID      riid,
  138.                                          long        idObject,
  139.                                          void **     ppvObject );
  140. typedef struct tagREGTYPEINFO
  141. {
  142.     CLSID   clsid;  // CLSID for this registered handler
  143.     BOOL    bOK;    // used if there is an error - set to false if so
  144.     TCHAR   DllName[MAX_PATH];
  145.     TCHAR   ClassName[MAX_PATH];
  146.     LPVOID  pClassFactory;
  147. } REGTYPEINFO;
  148. //
  149. // Creation stuff
  150. //
  151. extern HRESULT CreateCaretObject(HWND, long, REFIID, void**);
  152. extern HRESULT CreateClientObject(HWND, long, REFIID, void**);
  153. extern HRESULT CreateCursorObject(HWND, long, REFIID, void**);
  154. extern HRESULT CreateMenuBarObject(HWND, long, REFIID, void**);
  155. extern HRESULT CreateScrollBarObject(HWND, long, REFIID, void**);
  156. extern HRESULT CreateSizeGripObject(HWND, long, REFIID, void**);
  157. extern HRESULT CreateSysMenuBarObject(HWND, long, REFIID, void**);
  158. extern HRESULT CreateTitleBarObject(HWND, long, REFIID, void**);
  159. extern HRESULT CreateWindowObject(HWND, long, REFIID, void**);
  160. //
  161. // Client types
  162. //
  163. // SYSTEM
  164. extern HRESULT CreateButtonClient(HWND, long, REFIID, void**);
  165. extern HRESULT CreateComboClient(HWND, long, REFIID, void**);
  166. extern HRESULT CreateDialogClient(HWND, long, REFIID, void**);
  167. extern HRESULT CreateDesktopClient(HWND, long, REFIID, void**);
  168. extern HRESULT CreateEditClient(HWND, long, REFIID, void**);
  169. extern HRESULT CreateListBoxClient(HWND, long, REFIID, void**);
  170. extern HRESULT CreateMDIClient(HWND, long, REFIID, void**);
  171. extern HRESULT CreateMenuPopupClient(HWND, long, REFIID, void**);
  172. extern HRESULT CreateScrollBarClient(HWND, long, REFIID, void**);
  173. extern HRESULT CreateStaticClient(HWND, long, REFIID, void**);
  174. extern HRESULT CreateSwitchClient(HWND, long, REFIID, void**);
  175. // COMCTL32
  176. extern HRESULT CreateStatusBarClient(HWND, long, REFIID, void**);
  177. extern HRESULT CreateToolBarClient(HWND, long, REFIID, void**);
  178. extern HRESULT CreateProgressBarClient(HWND, long, REFIID, void**);
  179. extern HRESULT CreateAnimatedClient(HWND, long, REFIID, void**);
  180. extern HRESULT CreateTabControlClient(HWND, long, REFIID, void**);
  181. extern HRESULT CreateHotKeyClient(HWND, long, REFIID, void**);
  182. extern HRESULT CreateHeaderClient(HWND, long, REFIID, void**);
  183. extern HRESULT CreateSliderClient(HWND, long, REFIID, void**);
  184. extern HRESULT CreateListViewClient(HWND, long, REFIID, void**);
  185. extern HRESULT CreateUpDownClient(HWND, long, REFIID, void**);
  186. extern HRESULT CreateToolTipsClient(HWND, long, REFIID, void**);
  187. extern HRESULT CreateTreeViewClient(HWND, long, REFIID, void**);
  188. extern HRESULT CreateCalendarClient(HWND, long, REFIID, void**);
  189. extern HRESULT CreateDatePickerClient(HWND, long, REFIID, void**);
  190. #ifdef _X86_
  191. extern HRESULT CreateHtmlClient(HWND, long, REFIID, void**);
  192. #endif
  193. // SDM32
  194. extern HRESULT CreateSdmClientA(HWND, long, REFIID, void**);
  195. //
  196. // Window types
  197. //
  198. extern HRESULT CreateListBoxWindow(HWND, long, REFIID, void**);
  199. extern HRESULT CreateMenuPopupWindow(HWND, long, REFIID, void**);
  200. #include "w95trace.h"