다음을 통해 공유


글꼴 대화 상자

글꼴 대화 상자를 사용하면 사용자가 글꼴 패밀리 및 관련 글꼴 스타일, 포인트 크기, 효과(밑줄, 취소선 및 텍스트 색) 및 스크립트(또는 문자 집합)와 같은 논리적 글꼴의 특성을 선택할 수 있습니다.

CHOOSEFONT 구조를 초기화하고 구조를 ChooseFont 함수에 전달하여 글꼴 대화 상자를 만들고 표시합니다.

다음 스크린샷은 일반적인 글꼴 대화 상자를 보여줍니다.

글꼴 대화 상자를 보여 주는 스크린샷

사용자가 확인 단추를 클릭하면 ChooseFont 함수는TRUE 를 반환하고 CHOOSEFONT 구조에서 사용자의 선택에 대한 정보를 설정합니다.

사용자가 글꼴 대화 상자를 취소하거나 오류가 발생하면 ChooseFontFALSE 를 반환하고 LOGFONT 구조체의 내용이 정의되지 않습니다. CommDlgExtendedError 함수를 사용하여 확장된 오류 값을 검색하여 오류의 원인을 확인할 수 있습니다.

이 섹션에서 설명하는 항목은 다음과 같습니다.

글꼴 대화 상자 초기화 플래그

ChooseFont를 호출하기 전에 CHOOSEFONT 구조의 Flags 멤버는 대화 상자에 화면 글꼴, 프린터 글꼴 또는 둘 다를 나열해야 하는지 여부를 나타내기 위해 CF_SCREENFONTS, CF_PRINTERFONTS 또는 CF_BOTH 지정해야 합니다. CF_PRINTERFONTS 또는 CF_BOTH 지정하는 경우 CHOOSEFONT 구조체의 hDC 멤버는 프린터의 디바이스 컨텍스트에 대한 핸들을 지정해야 합니다.

CF_PRINTERFONTS 또는 CF_BOTH 플래그가 설정되면 글꼴 유형 설명 레이블이 글꼴 대화 상자의 아래쪽에 나타납니다.

Windows 7부터 CF_PRINTERFONTS, CF_SCREENFONTS, CF_BOTHCF_WYSIWYG 플래그는 더 이상 글꼴 열거형에 대해 ChooseFont 함수에서 사용되지 않습니다. Windows 7에서는 사용되지 않습니다. 그러나 CF_PRINTERFONTS 플래그는 글 꼴 대화 상자 아래쪽에 글꼴 형식 설명 레이블을 표시하는 하나의 함수를 유지합니다.

Flags 멤버를 사용하여 일부 글꼴 대화 상자 컨트롤을 사용하거나 사용하지 않도록 설정할 수 있으며, Flags 멤버를 다른 CHOOSEFONT 멤버와 함께 사용하여 일부 컨트롤의 초기 값을 제어할 수 있습니다.

사용자가 취소선, 밑줄 및 색 옵션을 선택할 수 있도록 하는 컨트롤을 표시하려면 다음을 수행합니다.

  • CF_EFFECTS 플래그를 설정합니다. CHOOSEFONT 구조체의 rgbColors 멤버를 사용하여 초기 글꼴 색을 지정할 수 있습니다.

글꼴, 글꼴 스타일, 크기, 취소선 및 밑줄 대화 상자 컨트롤의 초기 값을 지정하려면 다음을 수행합니다.

  1. 글꼴, 글꼴 스타일, 크기, 취소선 및 밑줄 대화 상자 컨트롤의 초기 값을 지정하려면 다음을 수행합니다.
  2. 글꼴 특성의 초기 값을 지정하려면 flags 멤버의 CF_INITTOLOGFONTSTRUCT 플래그를 lpLogFont가 가리키는 LOGFONT 구조체의 멤버와 함께 설정합니다.
  3. CF_NOFACESEL, CF_NOSTYLESELCF_NOSIZESEL 플래그를 사용하여 글꼴 대화 상자에 해당 컨트롤의 초기 값이 표시되지 않도록 할 수도 있습니다. 두 개 이상의 서체, 스타일 또는 점 크기가 있는 텍스트를 선택할 때 유용합니다. 사용자가 해당 값을 선택하지 않은 경우 ChooseFont가 반환될 때 이러한 값은 Flags에서도 설정됩니다.

글꼴 스타일 컨트롤을 지정된 스타일 이름으로 초기화하려면

  • CF_USESTYLE 플래그를 설정하고 lpszStyle 멤버를 사용하여 스타일 이름을 지정합니다.

참고

애플리케이션을 전역화하려면 lpLogFont가 가리키는 LOGFONT 구조체의 lfWeightlfItalic 멤버를 사용하여 스타일을 지정합니다. 스타일 이름은 시스템 사용자 인터페이스 언어에 따라 변경 될 수 있습니다.

 

적용 단추를 표시하려면

  • CF_APPLY 플래그를 설정하고 적용 단추에 대한 WM_COMMAND 메시지를 처리하는 후크 프로시저를 제공합니다. 후크 프로시저는 대화 상자에 WM_CHOOSEFONT_GETLOGFONT 메시지를 보내 글꼴에 대한 현재 선택 항목이 포함된 LOGFONT 구조체의 주소를 검색할 수 있습니다.

도움말 단추를 표시하려면

  • CF_SHOWHELP 플래그를 설정합니다. hwndOwner 멤버는 사용자가 도움말 단추를 클릭할 때 HELPMSGSTRING 등록 메시지를 받을 창을 식별해야 합니다.

대화 상자에 표시되는 글꼴을 제한하려면

  • CF_TTONLY, CF_FIXEDPITCHONLY, CF_NOVECTORFONTS, CF_NOVERTFONTS, CF_SCALABLEONLYCF_WYSIWYG 플래그의 조합을 설정합니다. CF_NOSIMULATIONS 값을 사용하여 대화 상자에서 일부 글꼴에 대해 표시하는 사용 가능한 스타일을 제한할 수도 있습니다.

Windows 7부터 대화 상자에 표시되는 글꼴 목록은 사용자의 표시된 글꼴에 따라 제한됩니다. 제한을 제거하려면 CF_INACTIVEFONTS 플래그를 설정합니다.

사용자가 지정할 수 있는 서체 이름, 스타일 및 점 크기를 제한하려면

  1. 사용자가 대화 상자에 나열된 유효한 서체 이름, 스타일 및 점 크기만 지정하도록 제한하려면 CF_FORCEFONTEXIST 플래그를 설정합니다.
  2. CF_LIMITSIZE 플래그를 설정하여 사용자가 nSizeMin 및 nSizeMax 멤버가 지정한 범위의 포인트 크기를 지정하도록 제한합니다.

스크립트 콤보 상자를 제한하거나 사용하지 않도록 설정하려면

  • CF_NOSCRIPTSEL 플래그를 설정하여 스크립트 콤보 상자를 사용하지 않도록 설정하거나 CF_SELECTSCRIPT 플래그를 설정하여 스크립트 콤보 상자의 선택 항목을 지정된 문자 집합으로 제한합니다.

이전 버전의 Windows에서 글꼴 대화 상자 사용자 지정

예를 들어 애플리케이션에 고유한 추가 컨트롤을 포함하려는 경우 글꼴 대화 상자에 대한 사용자 지정 템플릿을 제공할 수 있습니다. ChooseFont 함수는 기본 템플릿 대신 사용자 지정 템플릿을 사용합니다.

글꼴 대화 상자에 대한 사용자 지정 템플릿을 제공하려면

  1. Font.dlg 파일에 지정된 기본 템플릿을 수정하여 사용자 지정 템플릿을 만듭니다. 기본 글꼴 대화 상자 템플릿에 사용되는 컨트롤 식별자는 Dlgs.h 파일에 정의되어 있습니다.
  2. CHOOSEFONT 구조를 사용하여 다음과 같이 템플릿을 사용하도록 설정합니다.
    • 사용자 지정 템플릿이 애플리케이션 또는 동적 링크 라이브러리의 리소스인 경우 Flags 멤버에서 CF_ENABLETEMPLATE 플래그를 설정합니다. 구조체의 hInstancelpTemplateName 멤버를 사용하여 모듈 및 리소스 이름을 식별합니다.
    • 사용자 지정 템플릿이 이미 메모리에 있는 경우 CF_ENABLETEMPLATEHANDLE 플래그를 설정합니다. hInstance 멤버를 사용하여 템플릿이 포함된 메모리 개체를 식별합니다.

글꼴 대화 상자에 CFHookProc 후크 프로시저를 제공할 수 있습니다. 후크 프로시저는 대화 상자로 전송된 메시지를 처리하고 대화 상자에 메시지를 보낼 수 있습니다. 사용자 지정 템플릿을 사용하여 추가 컨트롤을 정의하는 경우 컨트롤에 대한 입력을 처리하는 후크 프로시저를 제공해야 합니다.

글꼴 대화 상자에 후크 프로시저를 사용하도록 설정하려면

  1. CHOOSEFONT 구조체의 Flags 멤버에서 CF_ENABLEHOOK 플래그를 설정합니다.
  2. lpfnHook 멤버에서 후크 프로시저의 주소를 지정합니다.

WM_INITDIALOG 메시지를 처리한 후 대화 상자 프로시저는 후크 프로시저에 WM_INITDIALOG 메시지를 보냅니다. 이 메시지의 lParam 매개 변수는 대화 상자를 초기화하는 데 사용되는 CHOOSEFONT 구조체에 대한 포인터입니다.

후크 프로시저는 대화 상자에 WM_CHOOSEFONT_GETLOGFONT, WM_CHOOSEFONT_SETLOGFONTWM_CHOOSEFONT_SETFLAGS 메시지를 보내 대화 상자의 현재 값과 플래그를 가져와 설정할 수 있습니다.

Windows 7에서 글꼴 대화 상자 사용자 지정

다음 스크린샷은 Windows 7의 일반적인 글꼴 대화 상자를 보여줍니다.

글꼴 다이얼로브 상자를 보여 주는 스크린샷

이전 Windows 버전에서 font.dlg 템플릿 파일에는 하나의 기본 ChooseFont 템플릿이 포함되어 있습니다. Windows 7의 font.dlg 템플릿 파일에는 이전 Windows 버전의 기본 템플릿과 새 Windows 7 ChooseFont 템플릿의 두 가지 기본 템플릿이 포함되어 있습니다. 따라서 Windows 7에서 글꼴 대화 상자를 사용자 지정할 때 다음 문제를 고려해야 합니다.

  1. Windows 7에서 실행되는 애플리케이션에 대한 사용자 지정 템플릿을 만들 때 새 템플릿을 사용합니다. 이 새 템플릿에는 다음 스크린샷과 같이 사용자가 클릭하여 글꼴 제어판 창을 시작할 수 있는 링크 컨트롤이 포함되어 있습니다.

    Windows 7의 글꼴 제어판을 보여 주는 스크린샷

  2. 이 링크 컨트롤을 사용하려면 호출 애플리케이션이 COMCTL32.DLL 버전 6 이상을 사용해야 합니다. 그렇지 않으면 ChooseFont 함수는 사용자 지정 템플릿에서 링크 컨트롤을 만들려고 할 때 오류를 반환합니다. 이 컨트롤이 사용하도록 설정되어 있는지 확인하려면 COMCTL32.DLL 버전 6.0에 대해 호출 애플리케이션을 컴파일합니다. 자세한 내용은 공용 컨트롤을 사용하여 비주얼 스타일 사용을 참조하세요.

  3. 애플리케이션에서 COMCTL32.DLL 버전 5.0 이하를 사용하는 경우 사용자 지정 템플릿을 만들 때 다음을 수행해야 합니다.

    • 컨트롤을 PUSHBUTTON으로 지정합니다. 글꼴 제어판 시작하는 데 사용되는 컨트롤은 링크가 아닌 단추로 표시됩니다.

    • font.dlg에서 다음 텍스트를 바꿉다.

      CONTROL "<A>Show more fonts</A>", IDC_MANAGE_LINK, "SysLink", WS_TABSTOP, 7, 199, 227, 9

      다음 텍스트를 사용하여 다음을 수행합니다.

      PUSHBUTTON "S&how more fonts", IDC_MANAGE_LINK, 7, 199, 74, 14 , WS_TABSTOP

    • 애플리케이션에서 사용자 지정 템플릿을 사용하도록 하려면 CF_ENABLETEMPLATE 플래그를 사용하여 사용자 지정 템플릿을 지정하고 Windows 7 ChooseFont 템플릿을 기반으로 사용자 지정 템플릿을 만든 다음 필요에 따라 후크 프로시저를 사용하도록 설정해야 합니다.

      사용자 지정 템플릿을 만들지 않고 후크 프로시저를 사용하도록 설정하면 이전 Windows 버전에 대한 기본 ChooseFont 템플릿이 로드됩니다.

참고

애플리케이션이 컴파일하는 COMMCTL.DLL 버전에 따라 새 템플릿에서 CONTROL 또는 PUSHBUTTON 컨트롤 형식을 지정해야 합니다. 또한 애플리케이션이 이전 버전의 Windows 운영 체제에서 실행되는 경우 WINDOWS 7 특정 기능(예: 글꼴 목록 및 확장 패밀리의 WYSIWYG 표시)을 사용할 수 없습니다.