C++ varargs wrapper - WinAPI Loa

  1. #pragma warning(disable:4793) // Suppress warning C4793: "varargs not supported under /clr"
  2. string LoadStringFmt(UINT uID, ...)
  3. {
  4.     va_list args;
  5.     va_start(args, uID);
  6.  
  7.     string format = LoadString_T(uID);
  8.  
  9.     if(format.empty())
  10.     {
  11.         char uIDBuff[MSG_BUFFER_NUMBER];
  12.         utoa(uID, uIDBuff);
  13.         return string("<LoadStringFmt(UINT uID = " + string(uIDBuff) + ", ...)>\nException: Resource String NOT FOUND!");
  14.     }
  15.  
  16.     const int sz = vsnprintf(nullptr, 0, format.c_str(), args) + 1;
  17.  
  18.     try
  19.     {
  20.         string result(sz, ' ');
  21.         vsnprintf(&result.at(0), sz, format.c_str(), args);
  22.         va_end(args);
  23.         return result;
  24.     }
  25.     catch(const std::exception e)
  26.     {
  27.         char uIDBuff[MSG_BUFFER_NUMBER];
  28.         utoa(uID, uIDBuff);
  29.         string eMsg("<LoadStringFmt(UINT uID = " + string(uIDBuff) + ", ...)>\nException: " + string(e.what()));
  30.       //MessageBox(sWin.GetHWND(), eMsg.c_str(), MSG_TITLE_EXCEPTION, MSG_TYPE_EXCEPTION);
  31.         va_end(args);
  32.         //throw;
  33.         return eMsg;
  34.     }
  35. }

Odpověď na kód "C++ varargs wrapper - WinAPI Loa"

Zde můžete upravit/odpovědět na tento kód (touto akcí vložíte další kód, neupravíte stávající)