Events with C++

The following code, along with the Header file, shows how to use the PNA Events.

Download the Header file 'preventcatcher.h'



#include <atlbase.h>

#include <atlcom.h>

#include <iostream>

#import "835x.tlb" no_namespace,raw_interfaces_only,named_guids

#include "pnaeventcatcher.h"


inline void HR(HRESULT hr)


      if (FAILED(hr))

            throw hr;





class MyEventCatcher : public CPNAEventCatcher







            CComPtr<IApplication> app;










      virtual void OnMeasurementEvent(long eventID,long measurementNumber) {}

      virtual void OnChannelEvent(long eventID,long ch)


            if (eventID == 0x68070709L) //MSG_ALL_SWEEPS_COMPLETED_AND_PROCESSED


                  static int i =0;


                  std::cout << "Sweep:" << i << std::endl;






In a .cpp file, (just like most ATL projects) you must have a declared an instance of CComModule. This will work:

CComModule _Module;


Remember that you are now the "Server" and the PNA is the Client. That makes DCOM a bit complicated.

This code was tested in VS2005 using a wizard generated MFC MDI project.