⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpatlcontrol.h

📁 用VC开发activex 一书实例1 ATLControl
💻 H
字号:
//////////////////////////////////////////////////////////////////////////////// CProxy_DATLControlWintemplate <class T>class CProxy_DATLControlWin : public IConnectionPointImpl<T, &DIID__DATLControlWin, CComDynamicUnkArray>{public://methods://_DATLControlWin : IDispatchpublic:	void Fire_Change(		BSTR * bstrCaption,		long * lAlignment)	{		VARIANTARG* pvars = new VARIANTARG[2];		for (int i = 0; i < 2; i++)			VariantInit(&pvars[i]);		T* pT = (T*)this;		pT->Lock();		IUnknown** pp = m_vec.begin();		while (pp < m_vec.end())		{			if (*pp != NULL)			{				pvars[1].vt = VT_BSTR | VT_BYREF;				pvars[1].byref= bstrCaption;				pvars[0].vt = VT_I4 | VT_BYREF;				pvars[0].byref= lAlignment;				DISPPARAMS disp = { pvars, NULL, 2, 0 };				IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);				pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);			}			pp++;		}		pT->Unlock();		delete[] pvars;	}	void Fire_ReadyStateChange()	{		T* pT = (T*)this;		pT->Lock();		IUnknown** pp = m_vec.begin();		while (pp < m_vec.end())		{			if (*pp != NULL)			{				DISPPARAMS disp = { NULL, NULL, 0, 0 };				IDispatch* pDispatch = reinterpret_cast<IDispatch*>(*pp);				pDispatch->Invoke(DISPID_READYSTATECHANGE, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);			}			pp++;		}		pT->Unlock();	}};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -