UIActiveX.cpp ( 文件浏览 )
- keepall 发布于 2016-08-23 13:24
- 浏览次数:593
- 下载次数: 1
- 下载需 20 积分
-
- 侵权举报
#include "StdAfx.h" // Download by http://www.codefans.net namespace DuiLib { ///////////////////////////////////////////////////////////////////////////////////// // // class CActiveXCtrl; ///////////////////////////////////////////////////////////////////////////////////// // // class CActiveXWnd : public CWindowWnd { public: HWND Init(CActiveXCtrl* pOwner, HWND hWndParent); LPCTSTR GetWindowClassName() const; void OnFinalMessage(HWND hWnd); LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam); protected: void DoVerb(LONG iVerb); LRESULT OnMouseActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnSetFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); protected: CActiveXCtrl* m_pOwner; }; ///////////////////////////////////////////////////////////////////////////////////// // // class CActiveXEnum : public IEnumUnknown { public: CActiveXEnum(IUnknown* pUnk) : m_pUnk(pUnk), m_dwRef(1), m_iPos(0) { m_pUnk->AddRef(); } ~CActiveXEnum() { m_pUnk->Release(); } LONG m_iPos; ULONG m_dwRef; IUnknown* m_pUnk; STDMETHOD_(ULONG,AddRef)() { return ++m_dwRef; } STDMETHOD_(ULONG,Release)() { LONG lRef = --m_dwRef; if( lRef == 0 ) delete this; return lRef; } STDMETHOD(QueryInterface)(REFIID riid, LPVOID *ppvObject) { *ppvObject = NULL; if( riid == IID_IUnknown ) *ppvObject = static_cast<IEnumUnknown*>(this); else if( riid == IID_IEnumUnknown ) *ppvObject = static_cast<IEnumUnknown*>(this); if( *ppvObject != NULL ) AddRef(); return *ppvObject == NULL ? E_NOINTERFACE : S_OK; } STDMETHOD(Next)(ULONG celt, IUnknown **rgelt, ULONG *pceltFetched) { if( pceltFetched != NULL ) *pceltFetched = 0; if( ++m_iPos > 1 ) return S_FALSE; *rgelt = m_pUnk; (*rgelt)->AddRef(); if( pceltFetched != NULL ) *pceltFetched = 1; return S_OK; } STDMETHOD(Skip)(ULONG celt) { m_iPos += celt; return S_OK; } STDMETHOD(Reset)(void) { m_iPos = 0; return S_OK; } STDMETHOD(Clone)(IEnumUnknown **ppenum) { return E_NOTIMPL; } }; ///////////////////////////////////////////////////////////////////////////////////// // // class CActiveXFrameWnd : public IOleInPlaceFrame { public: CActiveXFrameWnd(CActiveXUI* pOwner) : m_dwRef(1), m_pOwner(pOwner), m_pActiveObject(NULL) { } ~CActiveXFrameWnd() { if( m_pActiveObject != NULL ) m_pActiveObje[!==More==!]
...
展开> <收缩
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^ Sponsored links