원문: http://blog.daum.net/shuaihan/15535542?srchid=BR1http%3A%2F%2Fblog.daum.net%2Fshuaihan%2F15535542
Visual C++ 2008 Visual C++ 2008 Feature Pack 다운로드는 아래 주소에서 하며 참고로
영문 Visual Studio 2008 만 업데이트가 가능하다. 만약 영문이 아닌 Visual Studio 2008버전에서
Feature Pack을 설치하기위해서는 Visual Studio 2008 서비스팩1 을 설치 한 후에 가능하다.
Visual Studio: This Feature Pack is only supported on systems which have the English language (ENU) version of Visual Studio 2008 Standard Edition or aboveinstalled.
- Support for systems with non-English versions of Visual Studio 2008 installed will be available in Visual Studio 2008 Service Pack 1.
설치 후 샘플을 보려면 C:\Program Files\Microsoft Visual Studio 9.0\Samples\1033 경로로 가서 AllVCLanguageSamples.zip 압축을 푼다. 압축을 해제한 폴더 내부를 보면
C:\Program Files\Microsoft Visual Studio 9.0\Samples\1033\
AllVCLanguageSamples\C++\MFC\Visual C++ 2008 Feature Pack 경로에 바로 새로운
Feature Pack에 대한 샘플들이 있다. 사실 Feautre Pack의 샘플들과 구조는 FOSS Software사의 상용 라이브러리인 Prof-UIS(Professional User Interface Suite)와 무척이나 닮았다. 기회가 되면 Prof-UIS도 살펴보는것이 좋을 것이다.
자 그럼 샘플들을 살펴보자 .. 보고또 보면 피가 되고 살이 된다는 사실 ~~
하나씩 살펴보자 ~~
1.CustomPages
목적 : 메뉴, 툴바를 사용자의 성격에 맞게 설정 가능한 View->Toolbars->Customize...메뉴 클릭시 실행되는 Customize 다이얼로그 내에 나만의 페이지를 삽입하는 방법을 알아본다.
처음 실행하면 아래와 같은 창이 뜬다.
여기까지는 어떤 예제인지 잘모르겠지만 View -> Toolbars -> Customize... 를 실행하면 아래처럼
미리 정의된 페이지외에 내가 정의한 My Customization Page가 삽입된 것을 알 수가 있다.
2.DesktopAlert!Demo
목적 : 다양한 프로퍼티를 적용해보면서 알림영역(보통 트레이영역으로 알고있으나 MS에서는 윈도우의 오른쪽 하단영역을 알림영역으로 공식적으로 문서화하고있다.)에 보통 메신저들처럼 알림창이 나왔다 사라지는 것을 구현한다.
처음 실행하면 아래와같이 알림창에 대한 여러가지 설정을 할 수 있는 다이얼로그가 나타난다.
설정을 이것저것 변경해가면서 Show Alert! 버튼을 클릭하면 알림영역에 메세지창이 나타날 것이다.
예제를 컴파일시 아래와 같은 오류가 나타날 수 있다.
error C2039: 'IsHighContastMode' : is not a member of 'AFX_GLOBAL_DATA'
Feature Pack 의 새로운 컨트롤및 테마들을 위해 공통적인 데이터를 선언해놨는데 그 것이 바로 afxglobals.h 헤더에 있는 AFX_GLOBAL_DATA 란 구조체이다.
그 구조에 내부에 public 으로 IsHighContrastMode() 함수가 선언되어 있는데 이 예제에서는 몇 군데에서
IsHighContastMode() 식으로 정의되지 않은 함수를 호출하고 있다.
IsHighContastMode - > IsHighContrastMode 로 변경하여 컴파일하면 제대로 실행된다.
3.DlgToolTips
목적 : 이 예제는 다이얼로그 컨트롤에서 CMFCToolTipCtrl 를 어떻게 사용하는지 보여준다.
OK 또는 Cancel버튼 위에 마우스를 올려놓으면 바탕이 그레디언트고 이미지와 설명이 곁들어진 Office 2007스타일의 툴팁들을 볼 수있다.
4.DrawClient
목적 : 이 샘플은 MFC의 마이크로 소프트 Fluent User Interface 사용 방법을 보여준다.
즉 Office UI의 리본 UI및 전체적인 프래임의 완변한 재현이라고 보면 될듯하다.
좀더 자세한 것은 http://msdn.microsoft.com/officeui
거의 벡터 트로잉 툴이라고해도 손색이 없다. ^^
5.DynamicMenu
목적 : 이 샘플은 팝업 또는 메뉴바를 동적으로 변경하는 방법을 보여준다.
*동적 메뉴아이템에 이미지그리는 방법
*탑레벨 메뉴바에 동적으로 메뉴 아이템 추가하는 방법
*Edit메뉴 아래 동적으로 메뉴 아이템들을 추가하는 방법 등이다.
6.Explorer
목적 : 윈도우 탐색기를 구현하는 방법을 보여준다.
예전에 이런것을 구현하려면 사실 Shell관련 프로그래밍을 좀 할줄 알아야만 가능했다. 하지만 Feature Pack에서는 CMFCShellTreeCtrl 와 CMFCShellListCtrl 클래스를 제공하여 좌측의 쉘폴더트리와 우측의 쉘리스트뷰 구현은 그냥 누워서 떡먹기이다.
정말 프로그래밍하기 쉬워지는 세상이다. ㅠㅠ
물론 좀더 세밀한 작업을 하고싶은 경우(예를들어 리스트쪽의 썸네일뷰등) 좀더 손 이가긴하지만 이정도만해도 개발자들은 UI에 들어가는 많은 개발시간을 소비하지 않도록 배려한 MS에게 고마울 뿐이다.
앞으로도 MS는 계속 UI를 뚝딱뚝딱하면 만들어지도록 개선해 나가고 지원해줄 가능성이 크다.
실버라이트나 WPF만 봐도 앞으로의 정책이 보이기 때문이다.
7.IEDemo
목적 : 탐색기 데모를 봤으니 이제 Internet Explorer 데모를 보여줄 차례이다.
CMFCTasksPane 을 이용하여 좌측 Task Pane안의 UI를 쉽게 만들수 있으며 CHtmlView를
이용하여 우측 HTML페이지를 쉽게 꾸밀수있다 Favorites 쪽 메뉴구현도 볼만하다.
8.MDITabsDemo
목적 : Visual Studio 같은 프로퍼티창과 MDI형 탭 UI를 구현하는 방법을 보여준다.
좌측의 프로퍼티 컨트롤에서 각 옵션들을 변경하면 우측의 탭속성이 변경되는 것을 확인 할 수 있다.
프로퍼티 컨트롤 CMFCPropertyGridCtrl 클래스를 이용하여 쉽게 구현이 가능하다.
Enable MDI Tabs를 none 으로 변경하면 아래처럼 예전 MDI형식으로 차일드가 배치된다.
9.MenuSubSet
목적 : 이 샘플은 어플리케이션 시작시 특정 메뉴아이템이나 서브메뉴들을 동적으로 삭제하는 방법을 보여준다.
a.Full Configuration : 모든 메뉴들을 다 보여준다.
b.Limited Configuration : Demo 메뉴를 제외한 모든 메뉴들을 보여준다.
c.Demo Configuration : "Save"와 "Save As..." 메뉴아이템과 Demo메뉴를 제외한 모든 메뉴들을 보여준다.
각 모드를 체크 후 OK 버튼을 누르면 모드에 맞게 메뉴가 동적으로 설정되어 보여준다.
OK 후 Demo메뉴와 "Save", "Save As.." 메뉴아이템이 삭제된 것을 확인 할 수 있다.
10.MSMoneyDemo
목적 : MSMoneyDemo는 Microsoft Money 어플리케이션과 비슷한 사용자 인터페이스를 만들기위한 방법을 보여주고 있다. Feature Pack 에서 제공되는 새로운 클래스 CMFCXXX 들을 상속하여 사용하는 방법을 잘 보여주고 있다. MS Money 의 기본 프레임정도의 UI만 생성한 상태이고 내부적인 기능 예를 들어 카테고리 메뉴
(Hom, Banking 등)의 서브메뉴클릭시 네비게이트 되는것 등은 구현되어 있지 않다.
그런것 까지 구현하려면 DTHML UI 구성 방법과 MSHTMLLITE.dll 사용법등을 알아야만 한다.
11.MSOffice2007Demo
목적 : MSOffice2007Demo 샘플은 Office 2007 어플리케이션과 기능과 UI가 거진 똑같은 어플리케이션을 구현하는 방법을 보여주고 있다. MSOffice2007Demo는 Office 2007과 완전히 똑같은 ribbon UI 을 구현했고 몇몇 기능도 구현되어 있다.
12.NewControls
목적 : NewControls은 Feature Pack에서 새롭게 선보이는 버튼, 컬러픽커, 팔레트, 폰트선택 콤보박스, 이미지 에디터 대화상자, 프로퍼티 그리드, 마스크 에디트, 쉘리스트및 트리등의 MFC컨트롤들을 보여주고 있다.
처음 VC 6.0에서 .NET으로 넘어갈때 MFC는 더이상 지원을 하지 않는다고 하였으나 새로운 컨트롤들을 보면 사실이 아님을 확인 할 수 있다.
13.OutlookDemo
목적 : OutlookDemo는 Microsfot Outlook 2003/2007과 비슷한 어플리케이션 구현방법을 보여주고있다.
여러분은 View->Application Look을 사용하여 현 비주얼 테마를 변경할 수있다.
Outlook Bar Office 2003 스타일체크박스는 아웃룩바(Outlook Bar)로 잘알려진 네비케이션 펜(Navigation Pane) 의 모드를 스위칭 할 수 있다.
"New" 툴바 메뉴를 클릭하면 메일프레임이 열린다. 이 윈도우는 이메일 메세지를 작성하기위한 Microsoft Outlook 에 사용되어진 형태랑 비슷하게 만들어져있다.
14.OutlookMultiViews
OutlookMultiViews는 SDI어플리케이션 싱글 도큐먼트에 다중뷰 전환 하는 방법을 보여준다.
전환가능한 뷰의 목록들을 관리하기위해 아웃룩 바를 이용한다.
15.OwnerDrawMenu
OwnerDrawMenu는 실행중에(on the fly) 팝업 메뉴 아이템을 그리는 방법을 보여준다.
16.PaletteDemo
PaletteDemos는 오너드로우 정보영역이 있는 멀티컬럼 툴바 생성하는 방법을 보여준다.
상단 툴바의 "2", "3", "4" 버튼을 클릭하면 좌측 툴바의 컬럼 개수가 2,3,4로 변경되는것을
확인 할 수 있다.
17.PropSheetDemo
PropSheetDemo는 프로퍼티쉬트 컨트롤의 다양한 스타일을 보여준다.
처음 실행하면 아래처럼 어떤 스타일의 프로퍼시트를 디스플레이할것인지 선택하는 다이얼로그를 볼 수 있다.
1.가장 단순하고 보편적인 스타일
2.좌측에 아웃룩바를 가진 스타일
3.좌측에 트리가 있는 스타일
4.OneNote 스타일
5.좌측에 Office 2007 스타일 리스트 컨트롤을 가진 스타일
18.RebarTest
RebarTest는 리바컨트롤 (CMFCReBar)사용법을 보여준다.
19.RibbonGadgets
RibbonGadgets는 다양한 리본 요소들( CMFCRibbonButton, CMFCRibbonGallery, CMFCRibbonColorButton, CMFCRibbonEdit, CMFCRibbonComboBox, CMFCRibbonUndoButton )을 생성하고 사용하는 방법을 보여준다. 각 리본 카테고리마다 어떻게 구현 했는지의 소스코드가 하단 Source Code 에 보여진다.
20.RibbonMDIDemo
RibbonMDIDemo는 다중 도큐먼트 인터페이스를 가진 리본 컨트롤의 사용법을 보여준다.
21.RollupPane
RollupPane 일반적으로 접혀있다가
마우스 오버시 펼쳐지는 플로팅된 "information" 팬을 보여준다.
플로팅된 팬의 핀 버튼을 누르면 자동 펼쳐짐 기능을 해제 할수 있다.
22.SetPaneSize
SetPaneSize 샘플은 프로그램적으로 도킹된 팬 사이즈를 어떻게 설정하는지 보여준다.
원하는 사이즈를 에디트박스에 입력한 후 Set 버튼을 누르면 도킹된 팬 사이즈가 변경될 것이다.
23.Slider
Slider는 툴바 버튼에 외부 컨트롤(슬라이더)을 삽입하는 방법을 보여준다.
24.StateCollection
StateCollection은 실행중에 현재 menu bar, toolbars, and docking windows 상태를 로드, 저장하는 방법을 보여준다.
25.StatusBarDemo
StatusBarDemo는 상태바(CMFCStatusBar)에 다양한 컨트롤을 추가하는 방법을 보여준다.
26.TabbedView
이 샘플은 CTabbedView 클래스의 사용법을 보여준다.
탭뷰를 생성하기위해
1.CTabbedView 클래스를 상속하고
2.OnCreate 핸들러를 추가하고
3.각뷰에 대해 AddView를 호출한다.
27.TabControl
이 샘플은 탭(CMFCTabCtrl) 컨트롤 사용법을 보여주고있다.
오른쪽의 다양한 속성을 변경하면 좌측의 탭 모양이 속성에 맞게 변경되며
탭에 대한 이벤트 통지코드가 하단 리스트박스에 보여지게된다.
28.TasksPane
TasksPane 샘플은 MFC Task Pane classes의 사용법을 보여준다.
다양한 속성과 비주얼 매니저를 변경하면서 모양이 어떻게 변하는지 살펴보는데 도움이 된다.
29.ToolbarDateTimePicker
ToolbarDateTimePicker는 툴바에 date/time picker 컨트롤을 사용하는 방법을 보여주고있다.
30.ToolTipDemo
이 샘플은 향상된 툴팁기능들을 사용하는 방법을 보여준다.
이 샘플에서는 총 5가지의 툴팁 사용법을 보여준다.
1.표준 툴팁
2.말풍선 툴팁
3.다양한 속성을 가진 커스텀 툴팁
4.확장된(Visual Manager기반) 툴팁
5.커스컴(CMFCToolTipCtrl 상속) 툴팁
31.TrayMenu
TrayMenu는 시스템 트레이 구현하는 방법을 보여준다.
32.VisualStudioDemo
정말 감격이지 않는가... 마법사를 통해 생성한 이 데모는 VisaulStudio 의 인터페이스와 완전 동일한다.
정말 쉽다. 물론 내부적으로 미리 만들어진 코드를 파악할 줄알아야하지만 예전에 쌩으로 이런 UI를 만들려고하면 정말 엄청난 고생이 따른다. WIN32 SDK (without MFC) 로만 이것을 만든다고 생각해보았는가 ?
위에서 언급했듯이 이젠 특별한 알고리즘 없이 UI만작성하던 프로그래머(엔지니어가 아닌)는 밥벌어먹기 힘들고 승진도 힘들것이다. 경력이 10년이 넘는데 연봉은 적다는둥 투덜되는 개발자는 스스로 자신에 대해서 생각해봐야 할것이다. 이젠 너무나도 쉽게 남들 다 할 줄아는 이런 UI에 시간들여 공부하지말고(물론 어느정도는 학습이 필요하다) 돈벌수있는 skill에 눈을 빨리 돌려야한다.
33.WordPad
보조프로그램에 있는 워드패드를 구현한 것이다.
34.WorkSpaceToolBar
WorkSpaceToolBar 는 Visual Studio 솔류션 탐색탭내의 툴바처럼 도킹 팬(Docking Pane)에 툴바추가하는 방법을 보여준다.
자 이상 34가지의 모든 샘플을 살펴 보았다.
느끼는것은 총 3가지...
1.이제 UI만들기 정말 편해졌구나.
2.앞으로 UI만드는일은 점점 더 쉬워질것이다. ( 실버라이트 , WPF 를 보면 미래가 보임)
3.UI skill도 필요하지만 이젠 좀더 전문화된 (DB, 멀티미디어, 그래픽등) 분야에 시간을 소비해야한다.
'Programming' 카테고리의 다른 글
MS 소스 공유 라이선스 (0) | 2008.11.19 |
---|---|
Remote Debugging 방식에 대해서.. (0) | 2008.10.14 |
Drupal vs Joomla (41) | 2008.09.02 |
How to choose an open-source CMS -zdnet (0) | 2008.09.01 |
[마소] 성공적인 프로젝트를 위한 프레임워크의 재발견 (0) | 2008.09.01 |