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

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

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

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

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

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