DSADDIN.CPP
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- // AddInMod.cpp : implementation file
- //
- #include "stdafx.h"
- #include "bldrec.h"
- #include "DSAddIn.h"
- #include "Commands.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- // This is called when the user first loads the add-in, and on start-up
- // of each subsequent Developer Studio session
- STDMETHODIMP CDSAddIn::OnConnection(IApplication* pApp, VARIANT_BOOL bFirstTime,
- long dwCookie, VARIANT_BOOL* OnConnection)
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- // Store info passed to us
- IApplication* pApplication = NULL;
- if (FAILED(pApp->QueryInterface(IID_IApplication, (void**) &pApplication))
- || pApplication == NULL)
- {
- *OnConnection = VARIANT_FALSE;
- return S_OK;
- }
- m_dwCookie = dwCookie;
- // Create command dispatch, send info back to DevStudio
- CCommandsObj::CreateInstance(&m_pCommands);
- m_pCommands->AddRef();
- // The QueryInterface above AddRef'd the Application object. It will
- // be Release'd in CCommand's destructor.
- m_pCommands->SetApplicationObject(pApplication);
- // (see stdafx.h for the definition of VERIFY_OK)
- VERIFY_OK(pApplication->SetAddInInfo((long) AfxGetInstanceHandle(),
- (LPDISPATCH) m_pCommands, IDR_TOOLBAR_MEDIUM, IDR_TOOLBAR_LARGE, m_dwCookie));
- // Inform DevStudio of the commands we implement
- // TODO: Replace the AddCommand call below with a series of calls,
- // one for each command your add-in will add.
- // The command name should not be localized to other languages. The
- // tooltip, command description, and other strings related to this
- // command are stored in the string table (IDS_CMD_STRING) and should
- // be localized.
- LPCTSTR szCommand = _T("BldrecCommand");
- VARIANT_BOOL bRet;
- CString strCmdString;
- strCmdString.LoadString(IDS_CMD_STRING);
- strCmdString = szCommand + strCmdString;
- CComBSTR bszCmdString(strCmdString);
- CComBSTR bszMethod(_T("BldrecCommandMethod"));
- CComBSTR bszCmdName(szCommand);
- VERIFY_OK(pApplication->AddCommand(bszCmdString, bszMethod, 0, m_dwCookie, &bRet));
- if (bRet == VARIANT_FALSE)
- {
- // AddCommand failed because a command with this name already
- // exists. You may try adding your command under a different name.
- // Or, you can fail to load as we will do here.
- *OnConnection = VARIANT_FALSE;
- return S_OK;
- }
- // Add toolbar buttons only if this is the first time the add-in
- // is being loaded. Toolbar buttons are automatically remembered
- // by Developer Studio from session to session, so we should only
- // add the toolbar buttons once.
- if (bFirstTime == VARIANT_TRUE)
- {
- VERIFY_OK(pApplication->
- AddCommandBarButton(dsGlyph, bszCmdName, m_dwCookie));
- }
- *OnConnection = VARIANT_TRUE;
- return S_OK;
- }
- // This is called on shut-down, and also when the user unloads the add-in
- STDMETHODIMP CDSAddIn::OnDisconnection(VARIANT_BOOL bLastTime)
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- m_pCommands->UnadviseFromEvents();
- m_pCommands->Release();
- m_pCommands = NULL;
- // TODO: Perform any cleanup work here
- return S_OK;
- }