RemoveFontResourceA 関数 (wingdi.h)
RemoveFontResource 関数は、指定したファイル内のフォントをシステム フォント テーブルから削除します。
フォントが AddFontResourceEx 関数を使用して追加された場合は、RemoveFontResourceEx 関数を使用する必要があります。
構文
BOOL RemoveFontResourceA(
[in] LPCSTR 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 を呼び出します。 エラーが引き続き発生する場合は、フォント ファイルが他のセッションに読み込まれたままであることを示します。 フォントがフォント レジストリに一覧表示されていないことを確認し、システムを再起動して、フォントがすべてのセッションからアンロードされるようにします。
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 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wingdi.h (Windows.h を含む) |
Library | Gdi32.lib |
[DLL] | Gdi32.dll |