Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

320 lines
7.5 KiB

  1. // Copyright (c)1997-1999 Microsoft Corporation, All Rights Reserved
  2. // CProxy_DHTMLEditEvents
  3. #include "triedtctlid.h"
  4. template <class T> class CProxy_DHTMLSafeEvents : public IConnectionPointImpl<T, &DIID__DHTMLSafeEvents, CComDynamicUnkArray>
  5. {
  6. public:
  7. //methods:
  8. //_DHTMLEditEvents : IDispatch
  9. public:
  10. void Fire_Generic_Event ( DISPID dispid )
  11. {
  12. T* pT = (T*)this;
  13. pT->Lock();
  14. IUnknown** pp = m_vec.begin();
  15. while (pp < m_vec.end())
  16. {
  17. if (*pp != NULL)
  18. {
  19. DISPPARAMS disp = { NULL, NULL, 0, 0 };
  20. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  21. pDispatch->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  22. }
  23. pp++;
  24. }
  25. pT->Unlock();
  26. }
  27. VARIANT_BOOL Fire_Generic_Boolean_Event ( DISPID dispid )
  28. {
  29. VARIANT_BOOL vbCancel = FALSE;
  30. CComVariant varCancel ( VARIANT_FALSE );
  31. T* pT = (T*)this;
  32. pT->Lock();
  33. IUnknown** pp = m_vec.begin();
  34. while (pp < m_vec.end())
  35. {
  36. varCancel.ChangeType ( VT_BOOL );
  37. if ( varCancel.boolVal )
  38. {
  39. break; // give up once we've received a cancel.
  40. }
  41. if (*pp != NULL)
  42. {
  43. DISPPARAMS disp = { NULL, NULL, 0, 0 };
  44. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  45. pDispatch->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varCancel, NULL, NULL);
  46. }
  47. pp++;
  48. }
  49. pT->Unlock();
  50. return varCancel.boolVal;
  51. }
  52. void Fire_DocumentComplete()
  53. {
  54. Fire_Generic_Event ( DISPID_DOCUMENTCOMPLETE );
  55. }
  56. void Fire_DisplayChanged()
  57. {
  58. Fire_Generic_Event ( DISPID_DISPLAYCHANGED );
  59. }
  60. void Fire_ShowContextMenu( long xPos, long yPos)
  61. {
  62. VARIANTARG* pvars = new VARIANTARG[2];
  63. for (int i = 0; i < 2; i++)
  64. VariantInit(&pvars[i]);
  65. T* pT = (T*)this;
  66. pT->Lock();
  67. IUnknown** pp = m_vec.begin();
  68. while (pp < m_vec.end())
  69. {
  70. if (*pp != NULL)
  71. {
  72. pvars[0].vt = VT_I4;
  73. pvars[0].lVal= yPos;
  74. pvars[1].vt = VT_I4;
  75. pvars[1].lVal= xPos;
  76. DISPPARAMS disp = { pvars, NULL, 2, 0 };
  77. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  78. pDispatch->Invoke(DISPID_SHOWCONTEXTMENU, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  79. }
  80. pp++;
  81. }
  82. pT->Unlock();
  83. delete[] pvars;
  84. }
  85. void Fire_ContextMenuAction(
  86. long itemIndex)
  87. {
  88. VARIANTARG* pvars = new VARIANTARG[1];
  89. for (int i = 0; i < 1; i++)
  90. VariantInit(&pvars[i]);
  91. T* pT = (T*)this;
  92. pT->Lock();
  93. IUnknown** pp = m_vec.begin();
  94. while (pp < m_vec.end())
  95. {
  96. if (*pp != NULL)
  97. {
  98. pvars[0].vt = VT_I4;
  99. pvars[0].lVal= itemIndex;
  100. DISPPARAMS disp = { pvars, NULL, 1, 0 };
  101. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  102. pDispatch->Invoke(DISPID_CONTEXTMENUACTION, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  103. }
  104. pp++;
  105. }
  106. pT->Unlock();
  107. delete[] pvars;
  108. }
  109. void Fire_onmousedown ()
  110. {
  111. Fire_Generic_Event ( DISPID_ONMOUSEDOWN );
  112. }
  113. void Fire_onmousemove ()
  114. {
  115. Fire_Generic_Event ( DISPID_ONMOUSEMOVE );
  116. }
  117. void Fire_onmouseup ()
  118. {
  119. Fire_Generic_Event ( DISPID_ONMOUSEUP );
  120. }
  121. void Fire_onmouseout ()
  122. {
  123. Fire_Generic_Event ( DISPID_ONMOUSEOUT );
  124. }
  125. void Fire_onmouseover ()
  126. {
  127. Fire_Generic_Event ( DISPID_ONMOUSEOVER );
  128. }
  129. void Fire_onclick ()
  130. {
  131. Fire_Generic_Event ( DISPID_ONCLICK );
  132. }
  133. void Fire_ondblclick ()
  134. {
  135. Fire_Generic_Event ( DISPID_ONDBLCLICK );
  136. }
  137. void Fire_onkeydown ()
  138. {
  139. Fire_Generic_Event ( DISPID_ONKEYDOWN );
  140. }
  141. void Fire_onkeypress ()
  142. {
  143. Fire_Generic_Event ( DISPID_ONKEYPRESS );
  144. }
  145. void Fire_onkeyup ()
  146. {
  147. Fire_Generic_Event ( DISPID_ONKEYUP );
  148. }
  149. void Fire_onblur ()
  150. {
  151. Fire_Generic_Event ( DISPID_ONBLUR );
  152. }
  153. void Fire_onreadystatechange ()
  154. {
  155. Fire_Generic_Event ( DISPID_ONREADYSTATECHANGE );
  156. }
  157. };
  158. template <class T>
  159. class CProxy_DHTMLEditEvents : public IConnectionPointImpl<T, &DIID__DHTMLEditEvents, CComDynamicUnkArray>
  160. {
  161. public:
  162. //methods:
  163. //_DHTMLEditEvents : IDispatch
  164. public:
  165. void Fire_Generic_Event ( DISPID dispid )
  166. {
  167. T* pT = (T*)this;
  168. pT->Lock();
  169. IUnknown** pp = m_vec.begin();
  170. while (pp < m_vec.end())
  171. {
  172. if (*pp != NULL)
  173. {
  174. DISPPARAMS disp = { NULL, NULL, 0, 0 };
  175. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  176. pDispatch->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  177. }
  178. pp++;
  179. }
  180. pT->Unlock();
  181. }
  182. VARIANT_BOOL Fire_Generic_Boolean_Event ( DISPID dispid )
  183. {
  184. VARIANT_BOOL vbCancel = FALSE;
  185. CComVariant varCancel = VARIANT_FALSE;
  186. T* pT = (T*)this;
  187. pT->Lock();
  188. IUnknown** pp = m_vec.begin();
  189. while (pp < m_vec.end())
  190. {
  191. varCancel.ChangeType ( VT_BOOL );
  192. if ( VARIANT_TRUE == varCancel.boolVal )
  193. {
  194. break; // give up once we've received a cancel.
  195. }
  196. if (*pp != NULL)
  197. {
  198. DISPPARAMS disp = { NULL, NULL, 0, 0 };
  199. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  200. pDispatch->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, &varCancel, NULL, NULL);
  201. }
  202. pp++;
  203. }
  204. pT->Unlock();
  205. return varCancel.boolVal;
  206. }
  207. void Fire_DocumentComplete()
  208. {
  209. Fire_Generic_Event ( DISPID_DOCUMENTCOMPLETE );
  210. }
  211. void Fire_DisplayChanged()
  212. {
  213. Fire_Generic_Event ( DISPID_DISPLAYCHANGED );
  214. }
  215. void Fire_ShowContextMenu( long xPos, long yPos)
  216. {
  217. VARIANTARG* pvars = new VARIANTARG[2];
  218. for (int i = 0; i < 2; i++)
  219. VariantInit(&pvars[i]);
  220. T* pT = (T*)this;
  221. pT->Lock();
  222. IUnknown** pp = m_vec.begin();
  223. while (pp < m_vec.end())
  224. {
  225. if (*pp != NULL)
  226. {
  227. pvars[0].vt = VT_I4;
  228. pvars[0].lVal= yPos;
  229. pvars[1].vt = VT_I4;
  230. pvars[1].lVal= xPos;
  231. DISPPARAMS disp = { pvars, NULL, 2, 0 };
  232. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  233. pDispatch->Invoke(DISPID_SHOWCONTEXTMENU, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  234. }
  235. pp++;
  236. }
  237. pT->Unlock();
  238. delete[] pvars;
  239. }
  240. void Fire_ContextMenuAction(
  241. long itemIndex)
  242. {
  243. VARIANTARG* pvars = new VARIANTARG[1];
  244. for (int i = 0; i < 1; i++)
  245. VariantInit(&pvars[i]);
  246. T* pT = (T*)this;
  247. pT->Lock();
  248. IUnknown** pp = m_vec.begin();
  249. while (pp < m_vec.end())
  250. {
  251. if (*pp != NULL)
  252. {
  253. pvars[0].vt = VT_I4;
  254. pvars[0].lVal= itemIndex;
  255. DISPPARAMS disp = { pvars, NULL, 1, 0 };
  256. IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);
  257. pDispatch->Invoke(DISPID_CONTEXTMENUACTION, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
  258. }
  259. pp++;
  260. }
  261. pT->Unlock();
  262. delete[] pvars;
  263. }
  264. void Fire_onmousedown ()
  265. {
  266. Fire_Generic_Event ( DISPID_ONMOUSEDOWN );
  267. }
  268. void Fire_onmousemove ()
  269. {
  270. Fire_Generic_Event ( DISPID_ONMOUSEMOVE );
  271. }
  272. void Fire_onmouseup ()
  273. {
  274. Fire_Generic_Event ( DISPID_ONMOUSEUP );
  275. }
  276. void Fire_onmouseout ()
  277. {
  278. Fire_Generic_Event ( DISPID_ONMOUSEOUT );
  279. }
  280. void Fire_onmouseover ()
  281. {
  282. Fire_Generic_Event ( DISPID_ONMOUSEOVER );
  283. }
  284. void Fire_onclick ()
  285. {
  286. Fire_Generic_Event ( DISPID_ONCLICK );
  287. }
  288. void Fire_ondblclick ()
  289. {
  290. Fire_Generic_Event ( DISPID_ONDBLCLICK );
  291. }
  292. void Fire_onkeydown ()
  293. {
  294. Fire_Generic_Event ( DISPID_ONKEYDOWN );
  295. }
  296. void Fire_onkeypress ()
  297. {
  298. Fire_Generic_Event ( DISPID_ONKEYPRESS );
  299. }
  300. void Fire_onkeyup ()
  301. {
  302. Fire_Generic_Event ( DISPID_ONKEYUP );
  303. }
  304. void Fire_onblur ()
  305. {
  306. Fire_Generic_Event ( DISPID_ONBLUR );
  307. }
  308. void Fire_onreadystatechange ()
  309. {
  310. Fire_Generic_Event ( DISPID_ONREADYSTATECHANGE );
  311. }
  312. };