Je dois utiliser FormatMessage() pour un projet, mais je n'aime pas son interface effrayante. Est-ce que quelqu'un sait d'une façade qui range tout en tenant compte des paramètres de remplacement?Façade sûre/flexible pour Windows FormatMessage
Je viens de lire la second part of the FastFormat introduction, et je envisage d'écrire une extension pour FormatMessage() (ou demander à l'équipe du projet FastFormat s'ils ont un dans les travaux), mais je suis désireux d'obtenir quelque chose dès que possible, donc s'il y a quelque chose d'autre décent là-bas je serais probablement attraper à la place.
Ce que je veux est d'être capable d'écrire un code tel que:
HINSTANCE netevent = ::LoadLibrary("netevent.dll");
std::string msg = LookupError(netevent, EVENT_SERVICE_START_FAILED_II,
"child-svr", "parent-svr", "ship happens");
::puts(msg.c_str());
Ce qui donnerait le résultat:
The child-svr service depends on the parent-svr service which failed to start be cause of the following error:
ship happens
L'enveloppe actuelle, je l'ai construit a l'interface:
Il y a deux problèmes avec ceci:
- Il est de type-safe, car il est facile de passer tout type -
int
,std::string
,void*
- ce n'est pasconst char*
- Il est facile de désadaptation le nombre d'arguments avec le nombre requis par la chaîne de format représentant l'erreur
Compte tenu des capacités de FastFormat en termes de type sécurité, je veux savoir s'il y a un moyen de suivre ses mécanismes pour faire face à FormatMessage().
Vous voulez être capable d'écrire quelque chose comme ... quelle? –
Doh! Pardon. Va résoudre ce problème momentanément ... – dcw