ここで質問しました-UpdateResourceを介してSTRINGTABLEを更新します(複数の文字列を追加します)
そして今、私はもう一度質問しています。今回は質問にさらに多くの詳細を追加できるからです。
私はこの1日か何かを試してきましたが、まったく役に立ちませんでした。結果を次のようにします(MSVSで文字列を手動で追加しました):ご覧のとおり、複数のエントリがあり、「クリーン」であり、プログラムから簡単にアクセスできます。
今、私の情報源:
wstring buffer[5] = {L" Meow",L" I",L" Am",L" A",L" Dinosaur"}; // ignore the string
if (HANDLE hRes = BeginUpdateResource("Output.exe",TRUE))
{
for (int i = 0; i < 5; i++)
{
wchar_t * temp;
temp = new wchar_t[(buffer[i].length()+1)];
wcscpy(temp,buffer[i].c_str());
wcout << temp << endl;
UpdateResource(hRes,RT_STRING,MAKEINTRESOURCE(1),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
temp, 48); //buffer[i].length()+1
delete[] temp;
}
EndUpdateResource(hRes,FALSE);
}
生産:
これは間違っています。テーブルに追加されたのは最後の文字列のみであり、その前の文字列は追加されていないようです。
MAKEINTRESOURCE(1)が「MAKEINTRESOURCE(i)」になるようにソースを変更しようとすると、さまざまな写真に示すように、結果は次のようになります。
すべての文字列を追加したことで成功しましたが、希望とは異なるさまざまな文字列テーブルが作成されたようです。私はIDが各写真で16ずつ増加していることに気づきましたが、これはおそらく何かを説明している可能性があります。基本的に、文字列を最初の図のように(複数の文字列を使用して)フォーマットしたいのですが、これを行う方法がわかりません。
ご協力いただきありがとうございます。