Code:
NUMBER_OF_COMMANDS=1; CString strCategoryStringCat1;
CString strCmdStringCat1BigImage;
CString strCommandBarName1;
long index = 0;
{
LPCTSTR szCommandsCat1BigImage[1] = {_T("6D4144EA_BigCommand") };
// First I load the strings from the resource file and append them to the tags created above.
strCategoryStringCat1.LoadString(IDS_CATEGORY_STRING);
// Load the command with a big button's data.
strCmdStringCat1BigImage.LoadString(IDS_CMD_STRING);
strCmdStringCat1BigImage = szCommandsCat1BigImage[0] + strCmdStringCat1BigImage;
strCommandBarName1.LoadString(IDS_COMMANDBAR_NAME);
}
CComSafeArray<BSTR> saTab1Group1MrBigCommandString;// For OLE automation, strings are passed as BSTRs in a safe array.
hr = saTab1Group1MrBigCommandString.Create();
RETURN_ON_FAILURE(hr)
CComSafeArray<long> saTab1Group1MrBigCommandID;// For OLE automation, command IDs are passed in a safe array.
hr = saTab1Group1MrBigCommandID.Create();
RETURN_ON_FAILURE(hr)
CComSafeArray<long> saTab1Group1MrBigCommandButtonStyle;// For OLE automation, command button styles are passed in a safe array.
hr = saTab1Group1MrBigCommandButtonStyle.Create();
RETURN_ON_FAILURE(hr)
saTab1Group1MrBigCommandString.Add(strCmdStringCat1BigImage.AllocSysString());
saTab1Group1MrBigCommandID.Add(NUMBER_OF_COMMANDS);
saTab1Group1MrBigCommandButtonStyle.Add(seButtonIconAndCaptionBelow);// seButtonIconAndCaptionBelow is the way to get a big button.
_bstr_t bszCategoryName1(strCategoryStringCat1);
ISEAddInEx2Ptr pAddInEx2 = m_pCommands->GetAddIn();
ISEAddInExPtr pAddInEx = m_pCommands->GetAddIn();
// Now push the data into the safe arrays.
if (SUCCEEDED(hr))
{
if (NULL != pAddInEx)
{
TCHAR ResourceFilename[MAX_PATH];
GetModuleFileName(hInstance, ResourceFilename, sizeof(ResourceFilename));
if (NULL != pAddInEx2)
{
bszCategoryName1 = strCommandBarName1;
VERIFY_OK(pAddInEx2->SetAddInInfoEx2(ResourceFilename, EnvironmentCatid,
bszCategoryName1, IDB_PNG1, IDB_PNG3, -1,
-1, 1, saTab1Group1MrBigCommandString.GetSafeArrayPtr(),
saTab1Group1MrBigCommandID.GetSafeArrayPtr(), saTab1Group1MrBigCommandButtonStyle.GetSafeArrayPtr()));
}
else
{
VERIFY_OK(pAddInEx->SetAddInInfoEx(ResourceFilename, EnvironmentCatid,
bszCategoryName1, IDB_PNG1, IDB_PNG3, -1,
-1, 1, saTab1Group1MrBigCommandString.GetSafeArrayPtr(),
saTab1Group1MrBigCommandID.GetSafeArrayPtr()));
}
}
else
{
AfxMessageBox(_T("Unfortunately this version of Solid Edge is not supported"));
}
if (VARIANT_TRUE == bFirstTime && pAddInEx2 == NULL)
{
// In ST, command bars correlate to groups on the command ribbon.
_bstr_t bszCommandBarName1(strCommandBarName1);
long CmdIndex = 5;
CommandBarButtonPtr pBigButton = m_pCommands->GetAddIn()->AddCommandBarButton(EnvironmentCatid, bszCommandBarName1, CmdIndex);
if (pBigButton)
{
pBigButton->Style = seButtonIconAndCaptionBelow;
}
}
_bstr_t CommandName = "3DButton";
s_LocTestCmdId = m_pCommands->GetAddIn()->AddCommand(EnvironmentCatid, CommandName, (long)10);
}
else
{
hr = E_OUTOFMEMORY;
}