FormatMessage()をプロジェクトに使用する必要がありますが、私は恐ろしいインターフェイスが気に入らないのです。誰かが交換用パラメータを許可しながらそれを整理するファサードを知っていますか?Windows用の安全で柔軟なファサードFormatMessage
私はちょうどsecond part of the FastFormat introductionを読み、FormatMessage()の拡張子を書いて(あるいは、彼らが作品に1を持っている場合FastFormatプロジェクトチームを求めて)検討していますが、何がありますので、もし私が、できるだけ早く何かを得ることに熱心ですそれ以外にはまともなことは、おそらく私は代わりにそれをつかむだろう。私が欲しいもの
は、次のようなコードを書くことができるようにすることです。結果を与えるだろう
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());
:
:
The child-svr service depends on the parent-svr service which failed to start be cause of the following error:
ship happens
私が構築した現在のラッパーは、インターフェースを持っています
std::string LookupError(HINSTANCE hinst, DWORD id, ...);
これには2つの問題があります。
- それはそれはどのようなタイプ合格するのは簡単なので、タイプセーフではありません -
int
、std::string
、void*
-const char*
- ではありませんそれはエラーを表すフォーマット文字列で必要な数と引数の数を不一致するのは簡単です
は、型の安全性の面でFastFormatの能力を考えると、私はFormatMessage()に対処するためのメカニズムを追跡する方法があるかどうかを知りたいです。
のようなものを書くことができますか?何? –
Doh!ごめんなさい。瞬時にそれを修正します... – dcw