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.

97 lines
2.5 KiB

  1. #ifndef __COMBOBOX_HXX_
  2. #define __COMBOBOX_HXX_
  3. #include "basectl.hxx"
  4. #include "resource.h" // main symbols
  5. /////////////////////////////////////////////////////////////////////////////
  6. //
  7. // CCombobox
  8. //
  9. /////////////////////////////////////////////////////////////////////////////
  10. class ATL_NO_VTABLE CCombobox :
  11. public CBaseCtl,
  12. public CComCoClass<CCombobox, &CLSID_CCombobox>,
  13. public IDispatchImpl<ICombobox, &IID_ICombobox, &LIBID_IEXTagLib>
  14. {
  15. // Event sink
  16. class CEventSink;
  17. public:
  18. CCombobox ();
  19. ~CCombobox ();
  20. //
  21. // CBaseCtl overrides
  22. //
  23. virtual HRESULT Init();
  24. STDMETHOD(ProcOnClick)(CEventSink *pSink);
  25. // ICombobox
  26. STDMETHOD(put_value)(BSTR v);
  27. STDMETHOD(get_value)(BSTR * pv);
  28. //
  29. // wiring
  30. //
  31. DECLARE_REGISTRY_RESOURCEID(IDR_COMBOBOX)
  32. DECLARE_NOT_AGGREGATABLE(CCombobox)
  33. BEGIN_COM_MAP(CCombobox)
  34. COM_INTERFACE_ENTRY2(IDispatch,ICombobox)
  35. COM_INTERFACE_ENTRY(IAccessible)
  36. COM_INTERFACE_ENTRY(IElementBehavior)
  37. COM_INTERFACE_ENTRY(ICombobox)
  38. COM_INTERFACE_ENTRY(IPersistPropertyBag2)
  39. END_COM_MAP()
  40. DECLARE_PROPDESC_MEMBERS(1);
  41. private:
  42. IHTMLPopup *m_pHTMLPopup;
  43. CEventSink *m_pSink;
  44. CEventSink *_apSinkElem[2];
  45. CEventSink *_pSinkBody;
  46. HWND _hwnd;
  47. IMarkupContainer *_pPrimaryMarkup;
  48. STDMETHOD(Detach)();
  49. class CEventSink : public IDispatch
  50. {
  51. public:
  52. CEventSink (CCombobox *pCombobox);
  53. STDMETHODIMP QueryInterface(REFIID, void **);
  54. STDMETHODIMP_(ULONG) AddRef(void);
  55. STDMETHODIMP_(ULONG) Release(void);
  56. //IDispatch
  57. STDMETHODIMP GetTypeInfoCount(UINT* pctinfo);
  58. STDMETHODIMP GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo);
  59. STDMETHODIMP GetIDsOfNames( REFIID riid,
  60. LPOLESTR *rgszNames,
  61. UINT cNames,
  62. LCID lcid,
  63. DISPID *rgDispId);
  64. STDMETHODIMP Invoke(DISPID dispIdMember,
  65. REFIID riid,
  66. LCID lcid,
  67. WORD wFlags,
  68. DISPPARAMS *pDispParams,
  69. VARIANT *pVarResult,
  70. EXCEPINFO *pExcepInfo,
  71. UINT *puArgErr);
  72. private:
  73. CCombobox *m_pParent;
  74. };
  75. };
  76. #endif // __COMBOBOX_HXX_