사용자 도구

사이트 도구


kb:wxwidgets

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

kb:wxwidgets [2014/11/07 14:11] (현재)
줄 1: 줄 1:
 +====== wxWidgets ======
 +[[http://​www.wxwidgets.org/​]]
 +
 +크로스플랫폼 GUI 라이브러리. 옛날에는 걍 소스만 파서, GUI 디자인했어야 했는데, 폼빌더라는 GUI 에디터도 언제부터인지 생겼다.
 +
 +사실 [[Cpp|C++]]로 GUI를 필요로 하는 툴 만들 때에는 [[WTL]] 혹은 C++ Builder를 썼는데, [[WTL]]은 아무래도 할 일이 너무 많고, C++ Builder는 마이너하다는 점이 계속 걸려서 그 중간 지점으로 공부 중. 크로스플랫폼 따위 별 관심도 없다.
 +
 +
 +====== 튜토리얼 ======
 +  * http://​www.wxwidgets.org/​docs/​tutorials.htm
 +  * http://​zetcode.com/​tutorials/​wxwidgetstutorial/​
 +  * http://​www.codeproject.com/​KB/​library/​wxwidgets.aspx
 +
 +
 +====== 팁 ======
 +===== wxPropertyGrid 기본 사용법 =====
 +추가
 +<code cpp>
 +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()));​
 +</​code>​
 +
 +읽기
 +<code cpp>
 +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);​
 +</​code>​
 +
 +===== wxTreeListCtrl 기본 사용법 =====
 +문서라고는 개떡 같은 함수 레퍼런스 밖에 없네.
 +<code cpp>
 +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);​
 +</​code>​
 +
 +===== 시스템 칼라 목록 =====
 +wx/​settings.h
 +<code cpp>
 +// 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
 +};
 +</​code>​
 +
 +===== VC 수동 프로젝트 생성시 손봐야할 것들 (2005 기준) =====
 +기본적으로 위자드를 이용해서 생성하는 것이 가장 편하지만,​ 어쩔 수 없이 수동으로 생성해야 한다면...
 +
 +  * C/C++ 탭
 +    * 일반 -> 추가 포함 디렉토리 : <​code>​$(WXWIN)/​include;​$(WXADDITIONS)/​include;​$(WXWIN)/​contrib/​include</​code>​
 +    * 전처리기 -> 전처리기 정의
 +      * Debug : <​code>​WIN32;​STRICT;​__WXMSW__;​__WX__;​_DEBUG;​__WXDEBUG__;​_WINDOWS;​_CRT_SECURE_NO_DEPRECATE;​_HAS_ITERATOR_DEBUGGING=0;</​code>​
 +      * Release : <​code>​WIN32;​STRICT;​__WXMSW__;​__WX__;​NDEBUG;​_WINDOWS;​_CRT_SECURE_NO_DEPRECATE;​_HAS_ITERATOR_DEBUGGING=0;</​code>​
 +    * 미리 컴파일된 헤더 : 알아서 잘~
 +    * 고급
 +      * 특정 경고 사용 안 함 : 4819
 +      * 강제 포함 : <​code>​$(WXWIN)/​include/​wx/​wxprec.h;​ $(WXWIN)/​include/​msvc/​wx/​setup.h</​code>​
 +  * 링커 탭
 +    * 일반 -> 추가 라이브러리 디렉토리 : <​code>​$(WXWIN)/​lib/​vc_lib;​$(WXADDITIONS)/​lib/​vc_lib</​code>​
 +    * 입력 -> 추가 종속성 : <​code>​comctl32.lib rpcrt4.lib winmm.lib wsock32.lib</​code>​
 +    * 매니페스트 파일 -> 매니페스트 생성 : 아니요
 +  * 매니페스트 도구 탭
 +    * 입력 및 출력 -> 매니페스트 포함 : 아니요
 +
 +
 +====== 링크 ======
 +  * http://​www.wxwidgets.org/​ \\ 공식 사이트.
 +  * http://​wxpack.sourceforge.net/​ \\ 윈도우용으로 컴파일된 바이너리들. 쓸데없이 컴파일한다고 수고할 필요없이 걍 이거 쓰자. 위자드 등록까지 해주고 좋다.
 +
  
kb/wxwidgets.txt · 마지막으로 수정됨: 2014/11/07 14:11 (바깥 편집)