IAS.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:8k
源码类别:

Windows编程

开发平台:

Visual C++

  1. //**********************************************************************
  2. // File name: IAS.CPP
  3. //
  4. //      Implementation file of CAdviseSink
  5. //
  6. //
  7. // Functions:
  8. //
  9. //      See IAS.H for Class Definition
  10. //
  11. // Copyright (c) 1992 - 1997 Microsoft Corporation. All rights reserved.
  12. //**********************************************************************
  13. #include "pre.h"
  14. #include "iocs.h"
  15. #include "ias.h"
  16. #include "ioipf.h"
  17. #include "ioips.h"
  18. #include "app.h"
  19. #include "site.h"
  20. #include "doc.h"
  21. //**********************************************************************
  22. //
  23. // CAdviseSink::QueryInterface
  24. //
  25. // Purpose:
  26. //
  27. //      Returns a pointer to a requested interface.
  28. //
  29. // Parameters:
  30. //
  31. //      REFIID riid         - The requested interface
  32. //
  33. //      LPVOID FAR* ppvObj  - Place to return the interface
  34. //
  35. // Return Value:
  36. //
  37. //      HRESULT from CSimpleSite::QueryInterface
  38. //
  39. // Function Calls:
  40. //      Function                    Location
  41. //
  42. //      CSimpleSite::QueryInterface SITE.CPP
  43. //      OutputDebugString           Windows API
  44. //
  45. // Comments:
  46. //
  47. //      This function simply delegates to the Object class, which is
  48. //      aware of the supported interfaces.
  49. //
  50. //********************************************************************
  51. STDMETHODIMP CAdviseSink::QueryInterface(REFIID riid, LPVOID FAR* ppvObj)
  52. {
  53.         OutputDebugString("In IAS::QueryInterfacern");
  54.         // delegate to the document Object
  55.         return m_pSite->QueryInterface(riid, ppvObj);
  56. }
  57. //**********************************************************************
  58. //
  59. // CAdviseSink::AddRef
  60. //
  61. // Purpose:
  62. //
  63. //      Increments the reference count on this interface
  64. //
  65. // Parameters:
  66. //
  67. //      None
  68. //
  69. // Return Value:
  70. //
  71. //      The current reference count on this interface.
  72. //
  73. // Function Calls:
  74. //      Function                    Location
  75. //
  76. //      CSimpleSite::AddReff        SITE.CPP
  77. //      OutputDebugString           Windows API
  78. //
  79. // Comments:
  80. //
  81. //      This function adds one to the ref count of the interface,
  82. //      and calls then calls CSimpleSite to increment its ref.
  83. //      count.
  84. //
  85. //********************************************************************
  86. STDMETHODIMP_(ULONG) CAdviseSink::AddRef()
  87. {
  88.         OutputDebugString("In IAS::AddRefrn");
  89.         // increment the interface reference count (for debugging only)
  90.         ++m_nCount;
  91.         // delegate to the container Site
  92.         return m_pSite->AddRef();
  93. }
  94. //**********************************************************************
  95. //
  96. // CAdviseSink::Release
  97. //
  98. // Purpose:
  99. //
  100. //      Decrements the reference count on this interface
  101. //
  102. // Parameters:
  103. //
  104. //      None
  105. //
  106. // Return Value:
  107. //
  108. //      The current reference count on this interface.
  109. //
  110. // Function Calls:
  111. //      Function                    Location
  112. //
  113. //      CSimpleSite::Release        SITE.CPP
  114. //      OutputDebugString           Windows API
  115. //
  116. // Comments:
  117. //
  118. //      This function subtracts one from the ref count of the interface,
  119. //      and calls then calls CSimpleSite to decrement its ref.
  120. //      count.
  121. //
  122. //********************************************************************
  123. STDMETHODIMP_(ULONG) CAdviseSink::Release()
  124. {
  125.         OutputDebugString("In IAS::Releasern");
  126.         // decrement the interface reference count (for debugging only)
  127.         m_nCount--;
  128.         // delegate to the container Site
  129.         return m_pSite->Release();
  130. }
  131. //**********************************************************************
  132. //
  133. // CAdviseSink::OnDataChange
  134. //
  135. // Purpose:
  136. //
  137. //      Not Implemented (needs to be stubbed out)
  138. //
  139. // Parameters:
  140. //
  141. //      Not Implemented (needs to be stubbed out)
  142. //
  143. // Return Value:
  144. //
  145. //      Not Implemented (needs to be stubbed out)
  146. //
  147. // Function Calls:
  148. //      Function                    Location
  149. //
  150. //      OutputDebugString           Windows API
  151. //
  152. // Comments:
  153. //
  154. //      Not Implemented (needs to be stubbed out)
  155. //
  156. //********************************************************************
  157. STDMETHODIMP_(void) CAdviseSink::OnDataChange (FORMATETC FAR* pFormatetc, STGMEDIUM FAR* pStgmed)
  158. {
  159.         OutputDebugString("In IAS::OnDataChangern");
  160. }
  161. //**********************************************************************
  162. //
  163. // CAdviseSink::OnViewChange
  164. //
  165. // Purpose:
  166. //
  167. //      Notifies us that the view has changed and needs to be updated.
  168. //
  169. // Parameters:
  170. //
  171. //      DWORD dwAspect  - Aspect that has changed
  172. //
  173. //      LONG lindex     - Index that has changed
  174. //
  175. // Return Value:
  176. //
  177. //      None
  178. //
  179. // Function Calls:
  180. //      Function                    Location
  181. //
  182. //      OutputDebugString           Windows API
  183. //      InvalidateRect              Windows API
  184. //      IViewObject2::GetExtent     Object
  185. //
  186. // Comments:
  187. //
  188. //********************************************************************
  189. STDMETHODIMP_(void) CAdviseSink::OnViewChange (DWORD dwAspect, LONG lindex)
  190. {
  191.         CStabilize stabilize(m_pSite);
  192.         LPVIEWOBJECT2 lpViewObject2;
  193.         OutputDebugString("In IAS::OnViewChangern");
  194.         // get a pointer to IViewObject2
  195.         HRESULT hErr = m_pSite->m_lpOleObject->QueryInterface(
  196.                         IID_IViewObject2,(LPVOID FAR *)&lpViewObject2);
  197.         if (hErr == NOERROR) {
  198.                 // get extent of the object
  199.                 // NOTE: this method will never be remoted; it can be called w/i this async method
  200.                 lpViewObject2->GetExtent(DVASPECT_CONTENT, -1 , NULL, &m_pSite->m_sizel);
  201.                 lpViewObject2->Release();
  202.         }
  203.         InvalidateRect(m_pSite->m_lpDoc->m_hDocWnd, NULL, TRUE);
  204. }
  205. //**********************************************************************
  206. //
  207. // CAdviseSink::OnRename
  208. //
  209. // Purpose:
  210. //
  211. //      Not Implemented (needs to be stubbed out)
  212. //
  213. // Parameters:
  214. //
  215. //      Not Implemented (needs to be stubbed out)
  216. //
  217. // Return Value:
  218. //
  219. //      Not Implemented (needs to be stubbed out)
  220. //
  221. // Function Calls:
  222. //      Function                    Location
  223. //
  224. //      OutputDebugString           Windows API
  225. //
  226. // Comments:
  227. //
  228. //      Not Implemented (needs to be stubbed out)
  229. //
  230. //********************************************************************
  231. STDMETHODIMP_(void) CAdviseSink::OnRename (LPMONIKER pmk)
  232. {
  233.         OutputDebugString("In IAS::OnRenamern");
  234. }
  235. //**********************************************************************
  236. //
  237. // CAdviseSink::OnSave
  238. //
  239. // Purpose:
  240. //
  241. //      Not Implemented (needs to be stubbed out)
  242. //
  243. // Parameters:
  244. //
  245. //      Not Implemented (needs to be stubbed out)
  246. //
  247. // Return Value:
  248. //
  249. //      Not Implemented (needs to be stubbed out)
  250. //
  251. // Function Calls:
  252. //      Function                    Location
  253. //
  254. //      OutputDebugString           Windows API
  255. //
  256. // Comments:
  257. //
  258. //      Not Implemented (needs to be stubbed out)
  259. //
  260. //********************************************************************
  261. STDMETHODIMP_(void) CAdviseSink::OnSave ()
  262. {
  263.         OutputDebugString("In IAS::OnSavern");
  264. }
  265. //**********************************************************************
  266. //
  267. // CAdviseSink::OnClose
  268. //
  269. // Purpose:
  270. //
  271. //      Not Implemented (needs to be stubbed out)
  272. //
  273. // Parameters:
  274. //
  275. //      Not Implemented (needs to be stubbed out)
  276. //
  277. // Return Value:
  278. //
  279. //      Not Implemented (needs to be stubbed out)
  280. //
  281. // Function Calls:
  282. //      Function                    Location
  283. //
  284. //      OutputDebugString           Windows API
  285. //
  286. // Comments:
  287. //
  288. //      Not Implemented (needs to be stubbed out)
  289. //
  290. //********************************************************************
  291. STDMETHODIMP_(void) CAdviseSink::OnClose()
  292. {
  293.         OutputDebugString("In IAS::OnClosern");
  294. }