이 팁은 담비님(천리안 FREKBS)님이 99년 3월 30일에 천리안 프로그래머포럼에 올리신 것입니다.
담비님으로부터는 전제하여 올리는 데 대해 허락을 받았습니다.
좋은 정보를 공유하도록 허락해주신 담비님께 감사드립니다.
-----------------------------------------------------------------------
안녕하세요! 담비입니다.
출처 : http://www.borland.com/devsupport/bcppbuilder/faq/FAQ2309C.html
------------------------------------------------------------------------------
"Windows\Fonts" 디렉토리에 파일을 복사한후 레지스트리 키에 항목을 추가하면된다.
항목은 폰트의 이름과 "Windows\Fonts" 디렉토리와 다른 디렉트리라면 Path가
될것이다. 레지스트리에 항목이 작성되면 Windows API Function인 AddFontResource()
를 호출하고 system전반에 걸쳐 WM_FONTCHANGE 메세지의 발생을 알린다. 마지막으로
Windows API Function인 RemoveFontResource()를 호출하여 폰트파일에 걸린
리소스 락을 제거하고 다시한번 system전반에 걸쳐 WM_FONTCHANGE 메세지의 발생을
알린다.
다음은 예제 코드이다.
// In the header file use:
// #include
// and
// TRegistry *reg;
// NOTE: The WINGDING font is an example.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool b = false;
b = CopyFile("C:\\Download\\WingDing.TTF",
"C:\\WINDOWS\\FONTS\\WingDing.TTF",b);
reg = new TRegistry;
reg->RootKey = HKEY_LOCAL_MACHINE;
reg->LazyWrite = false;
reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Fonts", b);
reg->WriteString("WINGDING(TrueType)","WingDing.TTF");
reg->CloseKey();
reg->Free();
AddFontResource("C:\\Windows\\Fonts\\WingDing.TTF");
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
RemoveFontResource("C:\\Windows\\Fonts\\WingDing.TTF");
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
}
|