2017-01-18 1 views
-1

Visual C++에서 입력 텍스트 서식을 변경하기위한 간단한 GUI를 만들고 CFontDialog에서 글꼴 유형을 가져 오는 방법을 알고 싶습니다.CFontDialog에서 글꼴 가져 오기

입력 텍스트를 EditBox에서 m_txtEdit으로 가져온 다음 m_text로 전달합니다.

void CTxtDlg::OnOK() 
{ 

    m_txtEdit.GetWindowText(m_text); 
    CDialog::OnOK(); 
} 

m_text는 CDoc 클래스의 구성원이며 사용자가 CFontDialog에서 선택한 항목에 따라 형식을 지정해야합니다.

선택한 글꼴은 CTxtDlg 클래스의 구성원 인 LOGFONT m_lf 변수로 전달됩니다.

CFont m_font는 LOGFONT m_lf와 같아야합니다.

void CTxtDlg::OnBnClickedButton1() 
{ 


    CFontDialog dlg; 
    int response = dlg.DoModal();       
    dlg.GetCurrentFont(&m_lf); 
} 

CView 클래스는 CFont m_font에 설정된 형식에 따라 형식이 지정된 CString m_text를 출력해야합니다.

어떻게해야합니까?

+0

Google "cfontdialog 예" –

+1

완전히 명확하지 않은 질문입니다. 나는 왜 당신이 편집 컨트롤에서 텍스트를 가져 오는 것에 대해 이야기하고 있는지 전혀 모른다. 그건 당신의 질문과 완전히 관련이없는 것 같습니다. 그러나 우리는 당신의 질문이 무엇인지조차 모릅니다. 당신은 * "폰트 타입"*을'm_font'라는 변수에 넣는 것에 대해 이야기하고 있습니다 만, 어떤 타입인지 설명하지 않습니다. 그리고 다른 변수 ('m_lf')를 사용하는 코드를 보여줍니다. 이 질문을 수정하십시오. 현재 요청한대로 문을 닫아야합니다. – IInspectable

+0

질문하기 [edit] (http://stackoverflow.com/posts/41717311/edit) 질문. 정보를 주석으로 추가하지 마십시오. – IInspectable

답변

1

기본적으로 귀하의 질문은 CFontDialog과 완전히 관련이 없습니다. Your commentLOGFONT 구조가 주어진 CFont 개체를 만드는 방법을 묻습니다.

if (!m_font.CreateFontIndirect(&m_lf)) { 
    // handle error 
} 
// use m_font 
+1

@Marko :'CTxtDlg'와'CDoc'이 어떻게 관련이 있는지, 어떤 종류인지는 모르겠습니다. 'CTxtDlg'가'CView' 파생이고'CDoc'이'CDocument' 파생물이면 [CView :: GetDocument] (https://msdn.microsoft.com/en-us/library/ezc3635w.aspx)를 호출 할 수 있습니다. # CTFEDlg'에서 #cview__getdocument)를 실행하고, 반환 된 포인터에 적절한 캐스트를 수행하고 거기에서'm_font'에 접근하십시오. 나는 모르겠지만, 왜 'CFont' 객체가 문서의 첫 번째 장소에 존재하게되었는지. 꽤 거친 클래스 디자인 (또는 그것의 결여 된 오히려)과 같게 들린다. – IInspectable

0

먼저 당신의 CTxtDlgCFont를 추가 :

class CTxtDlg { 
    .... 
    CFont m_font; 
} 

그런 다음 생성하고 글꼴을 사용 : 그것은에 대한 CFont::CreateFontIndirect 멤버 함수가 무엇

void CTxtDlg::OnBnClickedButton1() 
{ 
    CFontDialog dlg; 
    int response = dlg.DoModal(); 
    if(response == IDOK) { 
     dlg.GetCurrentFont(&m_lf); 
     VERIFY(m_font.CreateFontIndirect(&m_lf)); 
     SetFont(&m_font); 
    } 
} 

유의하시기 바랍니다까지 그 이해할 수 있듯이 글꼴은 SetFont 이후에 유효해야하므로 글꼴을 쉽게 파기 할 수 없으며 대화 상자에 글꼴이 설정되어 있으면 다시 만들 수 없습니다.

관련 문제