質問者
MESSAGETABLE リソースについて

質問
すべての返信
-
Visual Studio(少なくとも私の手元の Visual Studio 2019)では画面上で MESSAGETABLE の定義を直接入力して作成する方法は無いようです。下記のサイトで MESSAGETABLE のリソース作成方法がまとめられていました。ご参考になりますでしょうか?
イベントログで使うメッセージファイル DLLを作成する
流れとしては、以下になるようです。
1.MESSAGETABLE の元となるファイル(*.mc)をテキストエディタで作成する
(フォーマット参考URL:Message Text Files (Windows) | Microsoft Docs)
2.Visual Studio に含まれている mc.exe を使って作成した *.mc ファイルをコンパイル
3.リソースファイル(*.rc、*.bin等)が生成されるので、該当のプロジェクトに組込む -
やはりIDEで編集及びリンクはできないのですか。
一応自らも調べてみたのですが、mc.exeでコンパイルする方法しかないようですね。
このリンクに書かれていることをやってみたところbinファイルやrcファイルなどが自動生成されました!
ご回答ありがとうございます!
申し訳ないのですが、このファイルを使うにはFormatMessage APIを使うそうですが、今までシステムが用意してくれているmessagetableしか利用していませんでしたが、自前のmessagetableを扱うにはどのようなフラグ属性を指定したり、ファイルを指定したりすればよいでしょうか。StringTableはloadstingとgetmodulehandleで簡単だったのですが、、、formatmessageは難しくかいてあります...。こちらも教えていただけると嬉しいです。
-
t31068068さん、こんにちは。フォーラムオペレーターのKumoです。
MSDNフォーラムにご投稿くださいましてありがとうございます。
この記事(英語となりますが)に記載されている手順に従って、試してみてください。
1、まずはMessage Text Filesでメッセージを定義します。これがSample Message Text File(英語)です。
2、mc.exeで.mcファイルをコンパイルし、.bin、.rcと.hファイルを生成します。
3、#includeで.hファイルをインクルードし、.rcファイルを参照に追加します。
4、MESSAGETABLEリソースを定義します: "nameID MESSAGETABLEfilename"。
5、FormatMessageを呼び出します。
void OutputMessage(int n, ...) { LPTSTR lpBuffer = NULL; va_list vl; va_start(vl, n); DWORD ret = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE, NULL, MSG_CMD_DELETE, 0x409, (LPTSTR)&lpBuffer, 0, &vl); OutputDebugString(lpBuffer); LocalFree(lpBuffer); va_end(vl); } ... OutputMessage(2,L"1",L"2");
どうぞよろしくお願いいたします。MSDN/ TechNet Community Support Kumo ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、 ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~