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

📄 application.cpp

📁 Adding automation to MFC applications
💻 CPP
字号:
#include "StdAfx.h"
#include ".\application.h"

IMPLEMENT_DYNCREATE(CApplication, CCmdTarget)

BEGIN_MESSAGE_MAP(CApplication, CCmdTarget)
END_MESSAGE_MAP()

BEGIN_DISPATCH_MAP(CApplication, CCmdTarget)
	DISP_FUNCTION_ID(CApplication, "Show", dispidShow, Show, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()

BEGIN_INTERFACE_MAP(CApplication, CCmdTarget)
	INTERFACE_PART(CApplication, IID_IApplication, LocalClass)
END_INTERFACE_MAP()

IMPLEMENT_OLECREATE(CApplication, "mycoolapp.Application", 0xB6A993E4, 0xBFAA, 0x452c, 0x99, 0x8F, 0xBB, 0x4F, 0x6D, 0x6E, 0x07, 0x25)

CApplication::CApplication(void)
{
	EnableAutomation();
	::AfxOleLockApp();
}

CApplication::~CApplication(void)
{
	::AfxOleUnlockApp();
}

STDMETHODIMP_(ULONG) CApplication::XLocalClass::AddRef()
{
	METHOD_PROLOGUE(CApplication, LocalClass)
		return pThis->ExternalAddRef();
}
STDMETHODIMP_(ULONG) CApplication::XLocalClass::Release()
{
	METHOD_PROLOGUE(CApplication, LocalClass)
		return pThis->ExternalRelease();
}
STDMETHODIMP CApplication::XLocalClass::QueryInterface(
	REFIID iid, LPVOID* ppvObj)
{
	METHOD_PROLOGUE(CApplication, LocalClass)
		return pThis->ExternalQueryInterface(&iid, ppvObj);
}
STDMETHODIMP CApplication::XLocalClass::GetTypeInfoCount(
	UINT FAR* pctinfo)
{
	METHOD_PROLOGUE(CApplication, LocalClass)
		LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE);
	ASSERT(lpDispatch != NULL);
	return lpDispatch->GetTypeInfoCount(pctinfo);
}
STDMETHODIMP CApplication::XLocalClass::GetTypeInfo(
	UINT itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo)
{
	METHOD_PROLOGUE(CApplication, LocalClass)
		LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE);
	ASSERT(lpDispatch != NULL);
	return lpDispatch->GetTypeInfo(itinfo, lcid, pptinfo);
}
STDMETHODIMP CApplication::XLocalClass::GetIDsOfNames(
	REFIID riid, OLECHAR FAR* FAR* rgszNames, UINT cNames,
	LCID lcid, DISPID FAR* rgdispid) 
{
	METHOD_PROLOGUE(CApplication, LocalClass)
		LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE);
	ASSERT(lpDispatch != NULL);
	return lpDispatch->GetIDsOfNames(riid, rgszNames, cNames, 
		lcid, rgdispid);
}
STDMETHODIMP CApplication::XLocalClass::Invoke(
	DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
	DISPPARAMS FAR* pdispparams, VARIANT FAR* pvarResult,
	EXCEPINFO FAR* pexcepinfo, UINT FAR* puArgErr)
{
	METHOD_PROLOGUE(CApplication, LocalClass)
		LPDISPATCH lpDispatch = pThis->GetIDispatch(FALSE);
	ASSERT(lpDispatch != NULL);
	return lpDispatch->Invoke(dispidMember, riid, lcid,
		wFlags, pdispparams, pvarResult,
		pexcepinfo, puArgErr);
}

STDMETHODIMP CApplication::XLocalClass::Show()
{
	METHOD_PROLOGUE(CApplication, LocalClass)
	pThis->Show();
	return TRUE;
}

⌨️ 快捷键说明

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