ptutil.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 8k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. //-------------------------------------------------------------------------//
  2. //
  3. // PTutil.h
  4. //
  5. //-------------------------------------------------------------------------//
  6. #ifndef __PTUTIL_H__
  7. #define __PTUTIL_H__
  8. //  Forwards
  9. struct tagPROPFOLDERITEM ;
  10. struct tagPROPERTYITEM ;
  11. struct tagBASICPROPITEM ;
  12. //-------------------------------------------------------------------------//
  13. EXTERN_C void InitPropFolderItem( struct tagPROPFOLDERITEM* pItem ) ;
  14. EXTERN_C BOOL CopyPropFolderItem( struct tagPROPFOLDERITEM* pDest, const struct tagPROPFOLDERITEM* pSrc ) ;
  15. EXTERN_C void ClearPropFolderItem( struct tagPROPFOLDERITEM* pItem ) ;
  16. EXTERN_C BOOL IsValidPropFolderItem( const struct tagPROPFOLDERITEM* pItem ) ;
  17. EXTERN_C void InitPropertyItem( struct tagPROPERTYITEM* pItem ) ;
  18. EXTERN_C BOOL CopyPropertyItem( struct tagPROPERTYITEM* pDest, const struct tagPROPERTYITEM* pSrc ) ;
  19. EXTERN_C void ClearPropertyItem( struct tagPROPERTYITEM* pItem ) ;
  20. EXTERN_C BOOL IsValidPropertyItem( const struct tagPROPERTYITEM* pItem ) ;
  21. EXTERN_C void InitBasicPropertyItem( struct tagBASICPROPITEM* pItem ) ;
  22. EXTERN_C BOOL CopyBasicPropertyItem( struct tagBASICPROPITEM* pDest, const struct tagBASICPROPITEM* pSrc ) ;
  23. EXTERN_C void ClearBasicPropertyItem( struct tagBASICPROPITEM* pItem ) ;
  24. EXTERN_C BOOL IsValidBasicPropertyItem( const struct tagBASICPROPITEM* pItem ) ;
  25. EXTERN_C void InitPropVariantDisplay( struct tagPROPVARIANT_DISPLAY* pItem ) ;
  26. EXTERN_C BOOL CopyPropVariantDisplay( struct tagPROPVARIANT_DISPLAY* pDest, const struct tagPROPVARIANT_DISPLAY* pSrc ) ;
  27. EXTERN_C void ClearPropVariantDisplay( struct tagPROPVARIANT_DISPLAY* pItem ) ;
  28. //-------------------------------------------------------------------------//
  29. //-------------------------------------------------------------------------//
  30. EXTERN_C BOOL PTCheckWriteAccessA( LPCSTR pszFile );
  31. EXTERN_C BOOL PTCheckWriteAccessW( LPCWSTR pwszFile );
  32. EXTERN_C ULONG PTGetFileAttributesA( LPCSTR pszFile );
  33. EXTERN_C ULONG PTGetFileAttributesW( LPCWSTR pwszFile );
  34. #ifdef UNICODE
  35. #define PTCheckWriteAccess  PTCheckWriteAccessW
  36. #define PTGetFileAttributes PTGetFileAttributesW
  37. #else
  38. #define PTCheckWriteAccess  PTCheckWriteAccessA
  39. #define PTGetFileAttributes PTGetFileAttributesA
  40. #endif
  41. //-------------------------------------------------------------------------//
  42. EXTERN_C LPWSTR WINAPI StrA2W( UINT nCodePage, LPWSTR pwsz, LPCSTR pasz, int nChars) ;
  43. EXTERN_C LPSTR  WINAPI StrW2A( UINT nCodePage, LPSTR pasz, LPCWSTR pwsz, int nChars) ;
  44. EXTERN_C BOOL   WINAPI StrRoundTripsW( UINT nCodePage, LPCWSTR pwsz ) ;
  45. EXTERN_C BOOL   WINAPI StrRoundTripsA( UINT nCodePage, LPCSTR pasz ) ;
  46. #if 0
  47. //  See bug# #329259 for info on these methods.
  48. //-------------------------------------------------------------------------//
  49. EXTERN_C BOOL   IsValidSystemTime( SYSTEMTIME* pst );
  50. EXTERN_C BOOL   IsValidFileTime( FILETIME* pft );
  51. EXTERN_C BOOL   IsValidVariantTime( DATE* pvt );
  52. //-------------------------------------------------------------------------//
  53. #endif 0
  54. //-------------------------------------------------------------------------//
  55. //  Recursion-compatible string tokenizing routine.
  56. typedef struct tagSTRTOK
  57. {
  58.     LPCTSTR            pszTok ;
  59.     int                cchTok ;
  60.     struct tagSTRTOK*  pNext ;
  61.     ULONG              Reserved ;
  62. } STRTOK, *PSTRTOK, *LPSTRTOK ;
  63. EXTERN_C int GetTokens( LPTSTR pszString, LPCTSTR pszDelims, OUT PSTRTOK *ppList ) ;
  64. EXTERN_C int FreeTokens( PSTRTOK *ppList ) ;
  65. //-------------------------------------------------------------------------//
  66. #define STRICT_COMPARE   (PVCF_IGNORETIME)
  67. #define LAX_COMPARE      (PVCF_IGNORECASE|PVCF_IGNORETIME)
  68. //-------------------------------------------------------------------------//
  69. //  Accessibility primitives
  70. //-------------------------------------------------------------------------//
  71. #include <oleacc.h>
  72. //-------------------------------------------------------------------------//
  73. HRESULT _CreateStdAccessibleProxy( HWND hwnd, WPARAM wParam, IAccessible** ppacc );
  74. LRESULT _LresultFromObject( REFIID riid, WPARAM wParam, LPUNKNOWN punk );
  75. //-------------------------------------------------------------------------//
  76. //  class CAccessibleBase
  77. //
  78. //  common IAccessible implementation.
  79. //
  80. class CAccessibleBase : public IAccessible, public IOleWindow
  81. //-------------------------------------------------------------------------//
  82. {
  83. public:
  84.     static BOOL Init();
  85.     static BOOL Uninit();
  86. public:
  87.     CAccessibleBase()
  88.         :   _cRef(1), _ptiAcc(NULL), _hwnd(NULL), _paccProxy(NULL)
  89.     { 
  90.         DllAddRef();
  91.     }
  92.     
  93.     virtual ~CAccessibleBase()
  94.     { 
  95.         ATOMICRELEASE(_paccProxy);
  96.         ATOMICRELEASE(_ptiAcc);
  97.     }
  98.     void Initialize( HWND hwnd, IAccessible* paccProxy )
  99.     { 
  100.         ASSERT(IsWindow( hwnd ));
  101.         ASSERT(paccProxy);
  102.         _hwnd = hwnd;
  103.         if( (_paccProxy = paccProxy) != NULL )
  104.             _paccProxy->AddRef();
  105.     }
  106.     //  IUnknown
  107.     STDMETHODIMP         QueryInterface( REFIID riid, void** ppvObj );
  108.     STDMETHODIMP_(ULONG) AddRef();
  109.     STDMETHODIMP_(ULONG) Release();
  110.     //  IOleWindow
  111.     STDMETHODIMP GetWindow( HWND* phwnd );
  112.     STDMETHODIMP ContextSensitiveHelp( BOOL fEnterMode ) { return E_NOTIMPL; }
  113.     // IDispatch
  114.     STDMETHODIMP GetTypeInfoCount( UINT * pctinfo );
  115.     STDMETHODIMP GetTypeInfo( UINT itinfo, LCID lcid, ITypeInfo** pptinfo );
  116.     STDMETHODIMP GetIDsOfNames( REFIID riid, OLECHAR** rgszNames, UINT cNames,
  117.                                 LCID lcid, DISPID * rgdispid );
  118.     STDMETHODIMP Invoke( DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
  119.                          DISPPARAMS * pdispparams, VARIANT * pvarResult, 
  120.                          EXCEPINFO * pexcepinfo, UINT * puArgErr );
  121.     //  IAccessible
  122.     STDMETHODIMP get_accParent( IDispatch ** ppdispParent);
  123.     STDMETHODIMP get_accChildCount( long * pcChildren );
  124.     STDMETHODIMP get_accChild( VARIANT varChildIndex, IDispatch ** ppdispChild);
  125.     STDMETHODIMP get_accName( VARIANT varChild, BSTR* pbstrName);
  126.     STDMETHODIMP get_accValue( VARIANT varChild, BSTR* pbstrValue);
  127.     STDMETHODIMP get_accDescription( VARIANT varChild, BSTR * pbstrDescription);
  128.     STDMETHODIMP get_accRole( VARIANT varChild, VARIANT *pvarRole );
  129.     STDMETHODIMP get_accState( VARIANT varChild, VARIANT *pvarState );
  130.     STDMETHODIMP get_accHelp( VARIANT varChild, BSTR* pbstrHelp );
  131.     STDMETHODIMP get_accHelpTopic( BSTR* pbstrHelpFile, VARIANT varChild, long* pidTopic );
  132.     STDMETHODIMP get_accKeyboardShortcut( VARIANT varChild, BSTR* pbstrKeyboardShortcut );
  133.     STDMETHODIMP get_accFocus( VARIANT FAR * pvarFocusChild );
  134.     STDMETHODIMP get_accSelection( VARIANT FAR * pvarSelectedChildren );
  135.     STDMETHODIMP get_accDefaultAction( VARIANT varChild, BSTR* pbstrDefaultAction );
  136.     STDMETHODIMP accSelect( long flagsSelect, VARIANT varChild );
  137.     STDMETHODIMP accLocation( long* pxLeft, long* pyTop, long* pcxWidth, long* pcyHeight, VARIANT varChild );
  138.     STDMETHODIMP accNavigate( long navDir, VARIANT varStart, VARIANT * pvarEndUpAt );
  139.     STDMETHODIMP accHitTest( long xLeft, long yTop, VARIANT * pvarChildAtPoint );
  140.     STDMETHODIMP accDoDefaultAction( VARIANT varChild );
  141.     STDMETHODIMP put_accName( VARIANT varChild, BSTR bstrName );
  142.     STDMETHODIMP put_accValue( VARIANT varChild, BSTR bstrValue );
  143. protected:
  144.     virtual UINT GetDefaultActionStringID() const { return 0; }
  145.     IAccessible*    _paccProxy;
  146.     HWND            _hwnd;
  147. private:
  148.     ULONG           _cRef;
  149.     ITypeInfo*      _ptiAcc;
  150.     #define VALIDATEACCCHILD( varChild, idChild, hrFail ) 
  151.         if( !(VT_I4 == varChild.vt && idChild == varChild.lVal) ) {return hrFail;}
  152. };
  153. UINT WMU_GETACCSTRING();    
  154.     // wparam: disp id of requested string
  155.     // lparam: HTREEITEM.
  156. #endif __PTUTIL_H__