사용자 도구

사이트 도구


kb:wxwidgets

wxWidgets

http://www.wxwidgets.org/

크로스플랫폼 GUI 라이브러리. 옛날에는 걍 소스만 파서, GUI 디자인했어야 했는데, 폼빌더라는 GUI 에디터도 언제부터인지 생겼다.

사실 C++로 GUI를 필요로 하는 툴 만들 때에는 WTL 혹은 C++ Builder를 썼는데, WTL은 아무래도 할 일이 너무 많고, C++ Builder는 마이너하다는 점이 계속 걸려서 그 중간 지점으로 공부 중. 크로스플랫폼 따위 별 관심도 없다.

튜토리얼

wxPropertyGrid 기본 사용법

추가

const wxString RESOURCE_ROOT_NAME = wxT("서버 데이터 루트");
const wxString PERFORCE_SERVER_ROOT_NAME = wxT("서버 디팟 경로");
const wxString PERFORCE_CLIENT_ROOT_NAME = wxT("클라이언트 디팟 경로");
 
PropertyGrid->AppendCategory(wxT("데이터"));
PropertyGrid->Append(RESOURCE_ROOT_NAME, wxPG_LABEL, wxString(g_Option.GetResourceRoot().c_str()));
 
PropertyGrid->AppendCategory(wxT("퍼포스"));
PropertyGrid->Append(PERFORCE_SERVER_ROOT_NAME, wxPG_LABEL, wxString(g_Option.GetPerforceServerRoot().c_str()));
PropertyGrid->Append(PERFORCE_CLIENT_ROOT_NAME, wxPG_LABEL, wxString(g_Option.GetPerforceClientRoot().c_str()));

읽기

const wxString RESOURCE_ROOT_NAME = wxT("서버 데이터 루트");
const wxString PERFORCE_SERVER_ROOT_NAME = wxT("서버 디팟 경로");
const wxString PERFORCE_CLIENT_ROOT_NAME = wxT("클라이언트 디팟 경로");
 
tstring perforceServerRoot = PropertyGrid->GetPropertyValueAsString(PERFORCE_SERVER_ROOT_NAME);
tstring perforceClientRoot = PropertyGrid->GetPropertyValueAsString(PERFORCE_CLIENT_ROOT_NAME);

wxTreeListCtrl 기본 사용법

문서라고는 개떡 같은 함수 레퍼런스 밖에 없네.

tree->AddColumn(_T("타입"));
tree->AddColumn(_T("데이터베이스"));
tree->AddColumn(_T("옵션"));
 
wxTreeItemId root = tree->AddRoot("");
 
for (size_t i=0 i<5; ++i)
{
    wxTreeItemId parent = tree->AppendItem(root, "이것은 그룹 텍스트");
    //tree->SetItemBold(parent, true);
    //tree->SetItemBackgroundColour(parent, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVEBORDER));
 
    for (size_t i=0; i<10; ++i)
    {
        wxTreeItemId index = tree->AppendItem(parent, "이것은 첫번째 컬럼");
        tree->SetItemText(index, 1, "이것은 두번째 컬럼");
        tree->SetItemText(index, 2, "이것은 세번째 컬럼");
    }
}
 
tree->ExpandAll(root);

시스템 칼라 목록

wx/settings.h

// possible values for wxSystemSettings::GetColour() parameter
//
// NB: wxMSW assumes that they have the same values as the parameters of
//     Windows GetSysColor() API, don't change the values!
enum wxSystemColour
{
    wxSYS_COLOUR_SCROLLBAR,
    wxSYS_COLOUR_BACKGROUND,
    wxSYS_COLOUR_DESKTOP = wxSYS_COLOUR_BACKGROUND,
    wxSYS_COLOUR_ACTIVECAPTION,
    wxSYS_COLOUR_INACTIVECAPTION,
    wxSYS_COLOUR_MENU,
    wxSYS_COLOUR_WINDOW,
    wxSYS_COLOUR_WINDOWFRAME,
    wxSYS_COLOUR_MENUTEXT,
    wxSYS_COLOUR_WINDOWTEXT,
    wxSYS_COLOUR_CAPTIONTEXT,
    wxSYS_COLOUR_ACTIVEBORDER,
    wxSYS_COLOUR_INACTIVEBORDER,
    wxSYS_COLOUR_APPWORKSPACE,
    wxSYS_COLOUR_HIGHLIGHT,
    wxSYS_COLOUR_HIGHLIGHTTEXT,
    wxSYS_COLOUR_BTNFACE,
    wxSYS_COLOUR_3DFACE = wxSYS_COLOUR_BTNFACE,
    wxSYS_COLOUR_BTNSHADOW,
    wxSYS_COLOUR_3DSHADOW = wxSYS_COLOUR_BTNSHADOW,
    wxSYS_COLOUR_GRAYTEXT,
    wxSYS_COLOUR_BTNTEXT,
    wxSYS_COLOUR_INACTIVECAPTIONTEXT,
    wxSYS_COLOUR_BTNHIGHLIGHT,
    wxSYS_COLOUR_BTNHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
    wxSYS_COLOUR_3DHIGHLIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
    wxSYS_COLOUR_3DHILIGHT = wxSYS_COLOUR_BTNHIGHLIGHT,
    wxSYS_COLOUR_3DDKSHADOW,
    wxSYS_COLOUR_3DLIGHT,
    wxSYS_COLOUR_INFOTEXT,
    wxSYS_COLOUR_INFOBK,
    wxSYS_COLOUR_LISTBOX,
    wxSYS_COLOUR_HOTLIGHT,
    wxSYS_COLOUR_GRADIENTACTIVECAPTION,
    wxSYS_COLOUR_GRADIENTINACTIVECAPTION,
    wxSYS_COLOUR_MENUHILIGHT,
    wxSYS_COLOUR_MENUBAR,
 
    wxSYS_COLOUR_MAX
};

VC 수동 프로젝트 생성시 손봐야할 것들 (2005 기준)

기본적으로 위자드를 이용해서 생성하는 것이 가장 편하지만, 어쩔 수 없이 수동으로 생성해야 한다면…

  • C/C++ 탭
    • 일반 → 추가 포함 디렉토리 :
      $(WXWIN)/include;$(WXADDITIONS)/include;$(WXWIN)/contrib/include
    • 전처리기 → 전처리기 정의
      • Debug :
        WIN32;STRICT;__WXMSW__;__WX__;_DEBUG;__WXDEBUG__;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_HAS_ITERATOR_DEBUGGING=0;
      • Release :
        WIN32;STRICT;__WXMSW__;__WX__;NDEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;_HAS_ITERATOR_DEBUGGING=0;
    • 미리 컴파일된 헤더 : 알아서 잘~
    • 고급
      • 특정 경고 사용 안 함 : 4819
      • 강제 포함 :
        $(WXWIN)/include/wx/wxprec.h; $(WXWIN)/include/msvc/wx/setup.h
  • 링커 탭
    • 일반 → 추가 라이브러리 디렉토리 :
      $(WXWIN)/lib/vc_lib;$(WXADDITIONS)/lib/vc_lib
    • 입력 → 추가 종속성 :
      comctl32.lib rpcrt4.lib winmm.lib wsock32.lib
    • 매니페스트 파일 → 매니페스트 생성 : 아니요
  • 매니페스트 도구 탭
    • 입력 및 출력 → 매니페스트 포함 : 아니요

링크

kb/wxwidgets.txt · 마지막으로 수정됨: 2014/11/07 14:11 (바깥 편집)