wxWidgets에서는 FontFamily를 가지고 열거하는 'wxFontEnumerator' 클래스가 존재한다.

 

 그래서 이걸 사용하기 위해서 wxOptions.h와 wxOptions.cpp을 다음과 같이 수정한다.

 

 wxOptions.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#pragma once
 
#include <wx/wx.h>
#include <wx/combobox.h>
#include <wx/fontenum.h>
 
#ifndef __WX_WIDGETS_OPTION_DIALOG_H__
#define __WX_WIDGETS_OPTION_DIALOG_H__
 
// ID 값 정의
enum
{
    ID_Options = wxID_HIGHEST + 1 // 사용자 정의 ID
};
 
class wxOptionDialog : public wxDialog
{
public:
    wxOptionDialog(wxWindow* parent, wxWindowID id, const wxString& title,
        const wxPoint& pos = wxDefaultPosition,
        const wxSize& size = wxDefaultSize,
        long style = wxDEFAULT_DIALOG_STYLE);
};
 
#endif
cs

 

 wxOptions.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
#include <wx/wx.h>
 
#include "wxOptionsDialog.h"
 
wxOptionDialog::wxOptionDialog(wxWindow* parent, wxWindowID id, const wxString& title,
    const wxPoint& pos,
    const wxSize& size,
    long style)
    : wxDialog(parent, id, title, pos, size, style) {
 
    // 설정 대화 상자의 내용을 여기에 구성
    // 예: 설정 옵션을 위한 컨트롤 추가
    new wxStaticText(this, wxID_ANY, "Font Family", wxPoint(2020), wxDefaultSize);
 
    // 콤보박스 생성 및 옵션 추가
    wxComboBox* comboBox = new wxComboBox(this, wxID_ANY, "", wxPoint(2050), wxSize(150-1));
 
    // 사용 가능한 폰트 패밀리 목록을 가져옵니다.
    wxArrayString fontFamilies = wxFontEnumerator::GetFacenames(wxFONTENCODING_SYSTEM, false);
 
    // 콤보박스에 폰트 패밀리를 추가합니다. foreach문 사용.
    for (const wxString& fontFamily : fontFamilies) {
        comboBox->Append(fontFamily);
    }
 
    // OK 및 Cancel 버튼 추가
    CreateStdDialogButtonSizer(wxOK | wxCANCEL);
}
cs

 

 이렇게 사용하면, FontFamily를 아주 간단하게 출력할 수 있는걸 확인 할 수 있다.

Posted by JunkMam
,

 

 wxWidgets에서 콤보박스를 추가하는 방법은 다음과 같다.

 

1
2
 
    wxComboBox* comboBox = new wxComboBox(this, wxID_ANY, "", wxPoint(2050), wxSize(150-1));
cs

 

 이걸 이용해서 설정창에서 콤보박스 추가하는 소스를 만들면

 

 wxOptionDialog.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#pragma once
 
#include <wx/wx.h>
#include <wx/combobox.h>
 
#ifndef __WX_WIDGETS_OPTION_DIALOG_H__
#define __WX_WIDGETS_OPTION_DIALOG_H__
 
// ID 값 정의
enum
{
    ID_Options = wxID_HIGHEST + 1 // 사용자 정의 ID
};
 
class wxOptionDialog : public wxDialog
{
public:
    wxOptionDialog(wxWindow* parent, wxWindowID id, const wxString& title,
        const wxPoint& pos = wxDefaultPosition,
        const wxSize& size = wxDefaultSize,
        long style = wxDEFAULT_DIALOG_STYLE);
};
 
#endif
cs

 

wxOptionDialog.cpp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
#include <wx/wx.h>
 
#include "wxOptionsDialog.h"
 
wxOptionDialog::wxOptionDialog(wxWindow* parent, wxWindowID id, const wxString& title,
    const wxPoint& pos,
    const wxSize& size,
    long style)
    : wxDialog(parent, id, title, pos, size, style) {
 
    // 설정 대화 상자의 내용을 여기에 구성
    // 예: 설정 옵션을 위한 컨트롤 추가
    new wxStaticText(this, wxID_ANY, "Settings Placeholder", wxPoint(2020), wxDefaultSize);
 
    // 콤보박스 생성 및 옵션 추가
    wxComboBox* comboBox = new wxComboBox(this, wxID_ANY, "", wxPoint(2050), wxSize(150-1));
    comboBox->Append("Option 1");
    comboBox->Append("Option 2");
    comboBox->Append("Option 3");
 
    // OK 및 Cancel 버튼 추가
    CreateStdDialogButtonSizer(wxOK | wxCANCEL);
}
cs

 

 

 이렇게 넣고, Option메뉴를 누르면, 다음과 같은 창이 완성된다.

 

Posted by JunkMam
,