Ich brauche FormatMessage() für ein Projekt, aber ich mag seine unheimliche Schnittstelle nicht. Kennt jemand eine Fassade, die es aufräumt und dennoch die Austauschparameter berücksichtigt?Sichere/flexible Fassade für Windows FormatMessage
Ich habe gerade gelesen die second part of the FastFormat introduction, und bin am überlegen für FormatMessage() eine Verlängerung schriftlich (oder fragen Sie das FastFormat Projektteam, wenn sie einen in den Werken haben), aber ich bin daran interessiert, so schnell wie möglich, etwas zu bekommen, so dass, wenn es etwas gibt, Sonst würde ich das wahrscheinlich lieber nehmen.
Was ich will, ist in der Lage sein, Code zu schreiben, wie zum Beispiel:
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());
die das Ergebnis geben würde:
The child-svr service depends on the parent-svr service which failed to start be cause of the following error:
ship happens
Die aktuellen Wrapper ich gebaut habe, haben die Schnittstelle:
std::string LookupError(HINSTANCE hinst, DWORD id, ...);
Es gibt zwei Probleme damit:
- Es ist nicht typsicher, da es einfach ist, jede Art passieren -
int
,std::string
,void*
- das ist nichtconst char*
- Es ist einfach, die Anzahl der Argumente mit der Nummer von dem Format-String erforderlich ist, um Mismatch den Fehler darstellt
die Fähigkeiten FastFormat in Bezug auf die Typsicherheit gegeben, möchte ich wissen, ob es eine Möglichkeit gibt, ihre Mechanismen zu folgen mit FormatMessage() beschäftigen.
Sie möchten in der Lage sein, etwas wie ... zu schreiben? Was? –
Doh! Es tut uns leid. Wird das momentan beheben ... – dcw