XLL+ Class Library

CXllApp::GetNextFnAssoc() Example

This example returns an array containing a row of data about each function in the add-in library.

//{{XLP_SRC(GetFunctionList)
    // NOTE - the FunctionWizard will add and remove mapping code here.
    //    DO NOT EDIT what you see in these blocks of generated code!
IMPLEMENT_XLLFN2(GetFunctionList, "R!", "GetFunctionList", "", 
    "Demo functions", "Returns a list of all the functions"
    " contained in this add-in", "", "", 1)

extern "C" __declspec( dllexport )
LPXLOPER GetFunctionList()
{
    CXlOper xloResult;
//}}XLP_SRC

    // Get an in-scope pointer to the application object
    XLL_FIX_STATE;
    CXllApp* papp = XllGetApp();

    // Create the result buffer
    xloResult.AllocArray(papp->GetFnCount(), 7);

    // Iterate through each function
    // Write its properties into a row of the output array
    CXllApp::POSITION pos;
    CString sKey;
    CXllFn* pfn;
    USHORT usRow;
    for ( usRow = 0, pos = papp->GetStartFnPosition(); pos; usRow++)
    {
        papp->GetNextFnAssoc(pos, sKey, pfn);
        xloResult.Cell(usRow, 0) = pfn->m_stName;
        xloResult.Cell(usRow, 1) = pfn->m_stArgNames;
        xloResult.Cell(usRow, 2) = pfn->m_stCategory;
        xloResult.Cell(usRow, 3) = pfn->m_stHelpText;
        xloResult.Cell(usRow, 4) = (double)pfn->m_usType;
        xloResult.Cell(usRow, 5) = pfn->m_stEntryPoint;
        xloResult.Cell(usRow, 6) = pfn->m_stArgTemplate;
    }

    // Return the array
    return xloResult.Ret();
}

Uses

CXllApp::GetNextFnAssoc | CXllApp::GetFnCount | CXllApp::GetStartFnPosition