リソースの追加、削除、および置換

アプリケーションでは、実行可能ファイル内のリソースを頻繁に追加、削除、または置き換える必要があります。 これらのタスクを実行するには、2 つのメソッドを使用できます。 1 つ目は、リソース定義ファイルを編集し、リソースを再コンパイルし、再コンパイルしたリソースをアプリケーションの実行可能ファイルに追加することです。 2 つ目の方法は、リソース データをアプリケーションの実行可能ファイルに直接コピーすることです。

たとえば、ノルウェーで使用する英語のアプリケーションをローカライズするには、[英語] ダイアログ ボックスをノルウェー語を使用するダイアログ ボックスに置き換える必要がある場合があります。 開発者は、ダイアログ ボックス エディターを使用するか、リソース定義ファイルにテンプレートを記述することによって、適切なダイアログ ボックスを作成します。 その後、開発者はリソースを再コンパイルし、新しいリソースをアプリケーションの実行可能ファイルに追加します。

ただし、適切なダイアログ ボックスがバイナリ形式で存在する場合、開発者は次の関数を使用して、ローカライズされる実行可能ファイルにデータを直接コピーできます。 BeginUpdateResource 関数は、リソースを変更する実行可能ファイルへの更新ハンドルを作成します。 UpdateResource 関数は、このハンドルを使用して、実行可能ファイル内のリソースを追加、削除、または置換します。 EndUpdateResource 関数はハンドルを閉じます。

BeginUpdateResource によって実行可能ファイルの更新ハンドルが作成された後、アプリケーションは UpdateResource を繰り返し使用してリソース データを変更できます。 UpdateResource の各呼び出しは、追加、削除、置換の内部リストに貢献しますが、実際には実行可能ファイルにデータを書き込むことはありません。 更新ハンドルを閉じる直前に、 EndUpdateResource は累積された変更を実行可能ファイルに書き込みます。

場合によっては、アプリケーションが別のファイルからリソースをコピーする必要があります。 リソースの更新は 、ファイルからリソース データとそのサイズを取得する例を示しています。