Syntax
typedef NxCoreCallback(__stdcall *NxCoreSetCallback) (NxCoreCallback nxCoreCallback); #define cszNxCoreSetCallback "sNxCoreSetCallback" int __stdcall SetCallback(NxCoreCallback nxCoreCallback);
Parameters
nxCoreCallback
Specifies the function to use as a callback from now on.
Return Value
Returns the old nxCoreCallback function
Here's an example of switching callbacks
#define _CRT_SECURE_NO_WARNINGS #include <windows.h> #include <stdio.h> #include <NxCoreAPI.h> #include <NxCoreAPI_class.h> #include "SymbolData.h" NxCoreClass nxCoreClass; SymbolData* getSymbol(const NxCoreHeader& ch) { NxString* nx; if (ch.pnxOptionHdr) { nx = ch.pnxOptionHdr->pnxsDateAndStrike; } else { nx = ch.pnxStringSymbol; } if (nx->UserData1 == 0) { char symbol[32]; if (ch.pnxOptionHdr) { sprintf(symbol, "%s%c%c", ch.pnxStringSymbol->String, ch.pnxOptionHdr->pnxsDateAndStrike->String[0], ch.pnxOptionHdr->pnxsDateAndStrike->String[1]); } else { sprintf(symbol, "%s", ch.pnxStringSymbol->String); } SymbolData* symbolData = new SymbolData(symbol); nx->UserData1 = (int) symbolData; } return (SymbolData*) nx->UserData1; } int __stdcall nxCoreCallback(const NxCoreSystem* pNxCoreSys, const NxCoreMessage* pNxCoreMessage) { // normal stuff return NxCALLBACKRETURN_CONTINUE; } int __stdcall nxCoreCallbackInitialSpin(const NxCoreSystem* pNxCoreSys, const NxCoreMessage* pNxCoreMessage) { switch (pNxCoreMessage->MessageType) { case NxMSG_SYMBOLSPIN: { const NxCoreHeader& ch = pNxCoreMessage->coreHeader; getSymbol(ch); break; } case NxMSG_STATUS: { switch (pNxCoreSys->Status) { case NxCORESTATUS_SYMBOLSPIN: { if (pNxCoreSys->StatusData == NxCSSYMBOLSPIN_COMPLETE) { nxCoreClass.SetCallback(nxCoreCallback); return NxCALLBACKRETURN_RESTART; } break; } } break; } } return NxCALLBACKRETURN_CONTINUE; } int main(int argc, char** argv) { if (!nxCoreClass.LoadNxCore("NxCoreAPI.dll") && !nxCoreClass.LoadNxCore("C:\\Program Files\\Nanex\\NxCoreAPI\\NxCoreAPI.dll")) { fprintf(stderr, "Can't find NxCoreAPI.dll\n"); return -1; } nxCoreClass.ProcessTape("", 0, NxCF_EXCLUDE_CRC_CHECK, 0, nxCoreCallbackInitialSpin); return 0; }