次の方法で共有


RemoveFontResourceW 関数 (wingdi.h)

RemoveFontResource 関数は、指定したファイル内のフォントをシステム フォント テーブルから削除します。

AddFontResourceEx 関数を使用してフォントを追加した場合は、RemoveFontResourceEx 関数を使用する必要があります。

構文

BOOL RemoveFontResourceW(
  [in] LPCWSTR lpFileName
);

パラメーター

[in] lpFileName

フォント リソース ファイルに名前を付ける null で終わる文字列へのポインター。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値は 0 です。

備考

アプリがシステム フォント テーブルのフォントを追加または削除する場合は、システム内のすべての最上位ウィンドウに WM_FONTCHANGE メッセージを送信して、変更を他のウィンドウに通知することをお勧めします。 アプリは、hwnd パラメーターを HWND_BROADCAST に設定して、SendMessage 関数を呼び出して、このメッセージを送信します。

フォントへの未処理の参照がある場合、関連付けられているリソースは、デバイス コンテキストで使用されるまで読み込まれたままになります。 さらに、フォントがフォント レジストリ (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) に一覧表示され、%windir%\fonts\ フォルダー以外の任意の場所にインストールされている場合は、他のアクティブなセッション (セッション 0 を含む) に読み込むことができます。

フォントを含む既存のフォント ファイルを未処理の参照で置き換えようとすると、RemoveFontResourceを呼び出した後でも使用されているため、元のフォントを削除できないことを示すエラー 表示されることがあります。 アプリでフォント ファイルを置き換える必要がある場合は、元のフォントのリソース数を 0 に減らすために、次のコード例に示すように、RemoveFontResource をループで呼び出 。 エラーが引き続き発生する場合は、フォント ファイルが他のセッションに読み込まれたままであることを示します。 フォントがフォント レジストリに一覧表示されていないことを確認し、システムを再起動して、フォントがすべてのセッションからアンロードされるようにします。

元のフォント ファイルが使用されているアプリ は、元のファイルに引き続きアクセスでき、フォントが再読み込みされるまで新しいフォントは使用されません。 AddFontResource 呼び出してフォントを再読み込みします。 AddFontResource 呼び出、次のコード例に示すように、RemoveFontResource 呼び出しが成功した回数と同じ回数 呼び出すようにすることをお勧めします。
 

int i = 0;
while( RemoveFontResource( FontFile ) )
{
    i++;
}

// TODO: Replace font file

while( i-- )
{
    AddFontResource( FontFile );
}

手記

wingdi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして RemoveFontResource を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wingdi.h (Windows.h を含む)
ライブラリ Gdi32.lib
DLL Gdi32.dll

関連項目

AddFontResource の

フォント関数とテキスト関数

フォントとテキストの概要

RemoveFontResourceEx の

SendMessage を する