DSADDIN.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // AddInMod.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "bldrec.h"
  5. #include "DSAddIn.h"
  6. #include "Commands.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. // This is called when the user first loads the add-in, and on start-up
  13. //  of each subsequent Developer Studio session
  14. STDMETHODIMP CDSAddIn::OnConnection(IApplication* pApp, VARIANT_BOOL bFirstTime,
  15. long dwCookie, VARIANT_BOOL* OnConnection)
  16. {
  17. AFX_MANAGE_STATE(AfxGetStaticModuleState());
  18. // Store info passed to us
  19. IApplication* pApplication = NULL;
  20. if (FAILED(pApp->QueryInterface(IID_IApplication, (void**) &pApplication))
  21. || pApplication == NULL)
  22. {
  23. *OnConnection = VARIANT_FALSE;
  24. return S_OK;
  25. }
  26. m_dwCookie = dwCookie;
  27. // Create command dispatch, send info back to DevStudio
  28. CCommandsObj::CreateInstance(&m_pCommands);
  29. m_pCommands->AddRef();
  30. // The QueryInterface above AddRef'd the Application object.  It will
  31. //  be Release'd in CCommand's destructor.
  32. m_pCommands->SetApplicationObject(pApplication);
  33. // (see stdafx.h for the definition of VERIFY_OK)
  34. VERIFY_OK(pApplication->SetAddInInfo((long) AfxGetInstanceHandle(),
  35. (LPDISPATCH) m_pCommands, IDR_TOOLBAR_MEDIUM, IDR_TOOLBAR_LARGE, m_dwCookie));
  36. // Inform DevStudio of the commands we implement
  37. // TODO: Replace the AddCommand call below with a series of calls,
  38. //  one for each command your add-in will add.
  39. // The command name should not be localized to other languages.  The 
  40. //  tooltip, command description, and other strings related to this
  41. //  command are stored in the string table (IDS_CMD_STRING) and should
  42. //  be localized.
  43. LPCTSTR szCommand = _T("BldrecCommand");
  44. VARIANT_BOOL bRet;
  45. CString strCmdString;
  46. strCmdString.LoadString(IDS_CMD_STRING);
  47. strCmdString = szCommand + strCmdString;
  48. CComBSTR bszCmdString(strCmdString);
  49. CComBSTR bszMethod(_T("BldrecCommandMethod"));
  50. CComBSTR bszCmdName(szCommand);
  51. VERIFY_OK(pApplication->AddCommand(bszCmdString, bszMethod, 0, m_dwCookie, &bRet));
  52. if (bRet == VARIANT_FALSE)
  53. {
  54. // AddCommand failed because a command with this name already
  55. //  exists.  You may try adding your command under a different name.
  56. //  Or, you can fail to load as we will do here.
  57. *OnConnection = VARIANT_FALSE;
  58. return S_OK;
  59. }
  60. // Add toolbar buttons only if this is the first time the add-in
  61. //  is being loaded.  Toolbar buttons are automatically remembered
  62. //  by Developer Studio from session to session, so we should only
  63. //  add the toolbar buttons once.
  64. if (bFirstTime == VARIANT_TRUE)
  65. {
  66. VERIFY_OK(pApplication->
  67. AddCommandBarButton(dsGlyph, bszCmdName, m_dwCookie));
  68. }
  69. *OnConnection = VARIANT_TRUE;
  70. return S_OK;
  71. }
  72. // This is called on shut-down, and also when the user unloads the add-in
  73. STDMETHODIMP CDSAddIn::OnDisconnection(VARIANT_BOOL bLastTime)
  74. {
  75. AFX_MANAGE_STATE(AfxGetStaticModuleState());
  76. m_pCommands->UnadviseFromEvents();
  77. m_pCommands->Release();
  78. m_pCommands = NULL;
  79. // TODO: Perform any cleanup work here
  80. return S_OK;
  81. }