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

📄 wordaddin.h

📁 最近因为工作的需要
💻 H
字号:
// WordAddin.h : Declaration of the CWordAddin

#ifndef __WORDADDIN_H_
#define __WORDADDIN_H_

#include "resource.h"       // main symbols
#include "stdafx.h"
#import "C:\Program Files\Common Files\designer\MSADDNDR.TLB" raw_interfaces_only, raw_native_types, no_namespace, named_guids 

extern _ATL_FUNC_INFO OnClickButtonInfo;

/////////////////////////////////////////////////////////////////////////////
// CWordAddin
class ATL_NO_VTABLE CWordAddin : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CWordAddin, &CLSID_WordAddin>,
	public IDispatchImpl<IWordAddin, &IID_IWordAddin, &LIBID_MYADDINLib>,
	public IDispatchImpl<_IDTExtensibility2, &IID__IDTExtensibility2, &LIBID_AddInDesignerObjects>,
	public IDispEventSimpleImpl<1,CWordAddin,&__uuidof(Office::_CommandBarButtonEvents)>,
	public IDispatchImpl<IRibbonExtensibility, &IID_IRibbonExtensibility, &LIBID_Office>
{
public:
	CWordAddin()
	{
	}

DECLARE_REGISTRY_RESOURCEID(IDR_WORDADDIN)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CWordAddin)
	COM_INTERFACE_ENTRY(IWordAddin)
//DEL 	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY2(IDispatch, IWordAddin)
	COM_INTERFACE_ENTRY(_IDTExtensibility2)
	COM_INTERFACE_ENTRY(IRibbonExtensibility)
END_COM_MAP()

BEGIN_SINK_MAP(CWordAddin)
SINK_ENTRY_INFO(1, __uuidof(Office::_CommandBarButtonEvents),/*dispid*/ 0x01, OnClickButton1, &OnClickButtonInfo)
END_SINK_MAP()

// IWordAddin
public:
	STDMETHOD(OnMyButton)(/*[in]*/IDispatch* pIDispControl);
	CComPtr < Office::_CommandBarButton> m_spCmdButton;
	typedef IDispEventSimpleImpl</*nID =*/ 1,CWordAddin, &__uuidof(Office::_CommandBarButtonEvents)> CommandButton1Events;
// _IDTExtensibility2
	STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch * AddInInst, SAFEARRAY * * custom)
	{
		OutputDebugString("OnConnection");
		return S_OK;//Delete it for the Office 2007
		
		CComPtr < Office::_CommandBars> spCmdBars; 
		CComQIPtr <Word::_Application> spApp(Application); 	
		ATLASSERT(spApp);

		HRESULT hr = spApp->get_CommandBars(&spCmdBars);
		if(FAILED(hr))
			return hr;
			
		ATLASSERT(spCmdBars);
		
	
		CComVariant vName("MyAddin");
		CComPtr <Office::CommandBar> spNewCmdBar;
		CComVariant vPos(1); 
		CComVariant vTemp(VARIANT_TRUE);	
		CComVariant vEmpty(DISP_E_PARAMNOTFOUND, VT_ERROR);			
		spNewCmdBar = spCmdBars->Add(vName, vPos, vEmpty, vTemp);
		
		
		CComPtr < Office::CommandBarControls> spBarControls;
		spBarControls = spNewCmdBar->GetControls();
		ATLASSERT(spBarControls);
		
		
		CComVariant vToolBarType(1);
		CComVariant vShow(VARIANT_TRUE);
		CComPtr < Office::CommandBarControl> spNewBar; 
		spNewBar = spBarControls->Add(vToolBarType, vEmpty, vEmpty, vEmpty, vShow); 
		ATLASSERT(spNewBar);
		
			
		
		CComQIPtr < Office::_CommandBarButton> spCmdButton(spNewBar);
		ATLASSERT(spCmdButton);
		
		HBITMAP hBmp =(HBITMAP)::LoadImage(_Module.GetResourceInstance(),
			MAKEINTRESOURCE(IDB_BITMAP),IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
		
		::OpenClipboard(NULL);
		::EmptyClipboard();
		::SetClipboardData(CF_BITMAP, (HANDLE)hBmp);
		::CloseClipboard();
		::DeleteObject(hBmp);		
		
		
		spCmdButton->PutStyle(Office::msoButtonIconAndCaption);
		hr = spCmdButton->PasteFace();
		if (FAILED(hr))
			return hr;
		
		spCmdButton->PutVisible(VARIANT_TRUE); 
		spCmdButton->PutCaption(OLESTR("myAddin")); 
		spCmdButton->PutEnabled(VARIANT_TRUE);
		spCmdButton->PutTooltipText(OLESTR("test1")); 
		spCmdButton->PutTag(OLESTR("test1")); 
		
		spNewCmdBar->PutVisible(VARIANT_TRUE); 
		
		m_spCmdButton = spCmdButton;

		CommandButton1Events::DispEventAdvise((IDispatch*)m_spCmdButton);
		
		return S_OK;
		
	}
	STDMETHOD(OnDisconnection)(ext_DisconnectMode RemoveMode, SAFEARRAY * * custom)
	{
		if(m_spCmdButton != NULL)
			CommandButton1Events::DispEventUnadvise((IDispatch*)m_spCmdButton);
		return S_OK;
	}
	STDMETHOD(OnAddInsUpdate)(SAFEARRAY * * custom)
	{
		return S_OK;
	}
	STDMETHOD(OnStartupComplete)(SAFEARRAY * * custom)
	{
		return S_OK;
	}
	STDMETHOD(OnBeginShutdown)(SAFEARRAY * * custom)
	{
		return S_OK;
	}

	void __stdcall OnClickButton1(IDispatch * /*Office::_CommandBarButton**/ Ctrl,VARIANT_BOOL * CancelDefault);

	// IRibbonExtensibility
	STDMETHOD(raw_GetCustomUI)(BSTR RibbonID, BSTR * RibbonXml)
	{
		OutputDebugString("raw_GetCustomUI");
		char szRibbon[MAX_PATH*10] = {0x00};
		LoadString(_Module.GetModuleInstance(),IDS_RIBBON_XML, \
			szRibbon, MAX_PATH*10);
		if (RibbonXml == NULL)
			return E_POINTER;

		OutputDebugString(szRibbon);
		
		*RibbonXml = CComBSTR(szRibbon);
		return S_OK;
	}
};

#endif //__WORDADDIN_H_

⌨️ 快捷键说明

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