
########################
A3DDllSetCallbacksReport
########################

.. c:function:: A3DStatus A3DDllSetCallbacksReport(A3DCallbackReportMessage, A3DCallbackReportWarning, A3DCallbackReportError)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DDllSetCallbacksReport(:c:type:`~A3DCallbackReportMessage`\ , :c:type:`~A3DCallbackReportWarning`\ , :c:type:`~A3DCallbackReportError`\ )
   
   Specifies custom functions the library uses for reporting messages, warnings and errors.
   
   This function configures the library with the callback functions the library uses for reporting messages, warnings and errors.
   
   To ensure your callback is aware of early-occurring messages, call the ``A3DDllSetCallbacksReport``\ function immediately after the ``A3DDllInitialize``\ function is successfully called.
   
   
   Sample code
   ===========
   
   
   ::
   
      A3DInt32my_message(A3DUTF8Char*msg){_tprintf(_T("%s"),msg);returnfflush(stdout);}
      A3DInt32my_warning(A3DUTF8Char*pcCode,A3DUTF8Char*msg){_tprintf(_T("WARNING#%s:"),pcCode);returnmy_message(msg);}
      A3DInt32my_error(A3DUTF8Char*pcCode,A3DUTF8Char*msg){_tprintf(_T("ERROR#%s:"),pcCode);returnmy_message(msg);}
      
      A3DInt32iErr=A3D_SUCCESS;
      A3DInt32iMajorVersion,iMinorVersion=0;
      
      iErr=A3DDllGetVersion(&iMajorVersion,&iMinorVersion);
      iErr=A3DDllInitialize(A3D_DLL_MAJORVERSION,A3D_DLL_MAJORVERSION);
      if(iErr==A3D_SUCCESS)
      {
      iErr=A3DDllSetCallbacksReport(my_message,my_warning,my_error);
      iErr=A3DDllTerminate();
      }
   
   
   **Returns**
   
   
      ``A3D_SUCCESS``\ on success, or an error code on failure
   
   




