Visual C++ 2008 새로운기능과사용법 고재관 Microsoft MVP myaustin@korea.com www.pdalab.org myaustin.egloos.com Agenda 목표와전략 빌드환경의개선 관리형코드와연계 Vista UI 컨트롤 Vista 공용컨트롤 MFC 9.0 의새로운기능 DEMO
VC++ 2008 VC++ 2008 VC++ Visual C ++ MS C 7.0 이후의 Microsoft 개발도구 Microsoft 최초의 C++ 개발도구 C/C++ 에기반하여 Windows 16/32 API 사용 Windows 응용프로그램개발도구 단독실행프로그램제작가능한유일한도구
VC++ 2008 버전 컴파일러버전내부버전통합제품 Visual C++ 1.0 1.0 Visual C++ 1.5 1.5 Visual C++ 2.0 2.0 Visual C++ 2.1 2.1 Visual C++ 2.2 2.2 Visual C++ 4.0 4.0 Visual C++ 4.1 4.1 Visual C++ 4.2 4.2 Visual C++ 5.0 5.0 Visual Studio 97 Visual C++ 6.0 6.0 Visual Studio 6.0 Visual C++.NET 2002 7.0 Visual Studio.NET 2002 Visual C++.NET 2003 7.1 Visual Studio.NET 2003 Visual C++ 2005 8.0 Visual Studio 2005 Visual C++ 2008 9.0 Visual Studio 2008 VC++ 2008 목표와전략 목표 성공하는다음세대기술을리드하는세계적네이티브개발자 전략 / 수행 생산성과적응력향상을위한최신의 Visual C++ 안전하고빠른최신개발기술을위한네이티브라이브러리투자 네이티브와관리형코드간의마찰없는융합기술
VC++ 2008 지속적지원 VC++ 컴파일러기능향상 추가기능지원 MFC 기능지원및수정보완 Vista 및 Office UI 기능확장 관리형코드와의원활한연동을위한마샬링지원 VC++ 2008 개발 Focus Windows Vista 개발 Vista 응용프로그램개발을 MFC 에서간단한작업으로빠른구현 빌드 (Build) 시간개선 병렬빌드및네이티브 - 관리형코드빌드시간단축 관리형코드연결 관리형코드포함또는기존관리형코드연결개선
VC++ 2008 개선된기능 프로젝트 솔루션열기속도향상 컴파일속도개선 관리형코드 / 네이티브코드증분빌드속도향상 병렬컴파일지원 UI Vista 지원 Control 추가 MFC 기능추가 C++ STL/CLI 지원 표준 C++ 지원강화 TR1 지원추가 VC++ 2008 /MP 컴파일러스위치지원 cl.exe 용멀티프로세스빌드 /MP 또는 /MPn (n은 CPU의개수 ) Project Properties C/C++ Command Line Additional options Multi-proc 프로젝트빌드에서동작 Multi proc 프로젝트빌드에서동작 Tools Options Project and Solutions Build and Run parallel project builds 최상의결과를얻기위한설정
VC++ 2008 UAC 노출응용프로그램생성 Linker /MANIFESTUAC[:{NO fragment }] Project Properties Linker Manifest File Project Upgrade UAC는커지고레벨은 asinvoker 로설정함 VC++ 2008 UAC 컴플라이언스 기본적으로 HKCU 로 ATL COM 등록 HKLM 레지스트리선택 IE7 보호모드디버깅지원 디버거런처 : Web Browser Debugger
VC++ 2008 Class 디자이너지원 Class Designer MFC 로되어있는현재의코드만비주얼화 VC++ 2008 관리형코드증분빌드 A.Dll ClassB b; b.f() A.dll B.meta B.dll B.meta(*) B.Dll public ref class ClassB { public String f() { //important string here return Important String ; } } 마지막빌드후중요한변경없이프로젝트스킵
Project Properties General Enable Managed Incremental Build 기본적으로 On Property 쉬트에서접근가능 관리형브릿지지원 관리형코드를 C++ 응용프로그램에서쉽게사용지원 Marshaling 라이브러리지원 STL/CLR 라이브러리지원 VC++ 2008 TR1 TR1(1st Library Extension) The Technical Report on C++ Library Extensions Boost derived classes tr1::shared_ptr tr1::function, tr1::mem_fn, tr1::bind tr1::regex tr1::tuple, tr1::array, unordered containers (hash-based) tr1::type_traitstraits 난수발생제네레이터 ANSI C99 미지원및일부수학함수지원불가
VC++ 2008 마샬링라이브러리지원 네이티브코드로부터데이터형태로마샬링지원 관리형코드와네이티브코드사이의데이터타입마샬링 마샬링컨텍스트를미요구변환마샬링 사용자에의한미지원기능확장가능 #include <msclr/marshal.h> using namespace msclr::interop; { System::String^ sourcestring1 = teststring const char* deststring1; } //Convert System::String^ to const char* using //TO to = context.marshal_as<to>(from) as<to>(from) marshal_context ctx; deststring1 = ctx.marshal_as<const char*>(sourcestring1); VC++ 2008 STL/CLR 라이브러리변경사항.NET Framework 사용응용프로그램 STL 공용사용 STL 및.NET 컬렉션사이에데이터교환 템플릿및지네릭을동시에사용 최상의성능향상및크로스 - 언어호환성성취디자인 관리형코드의어떤한부분에서의 STL 지원 #include <cliext/hash_map> #include <cliext/algorithm> void myfunction() { cliext::hash_map< Int32, String^ > mymap; mymap.insert(cliext::make_pair(5, gcnew String("String1"))); cliext::hash_map<int32,string^>::iterator itfive= mymap.find(5); cliext::vector<string^> v4; cliext::random_shuffle( v4.begin( ), v4.end( ) ); }
VC++ 2008 Windows Vista UI 지원 신규추가기능 새로운시스템폰트 (Segoe UI) 지원 Aero 테마 API 지원 추가 Common 컨트롤및추가 Common 다이얼로그지원 Windows Vista 스타일및특성과동등한아이콘및그래픽생성 다이얼로그박스및에러메시지를 Task 다이얼로그로교체 새로운 Windows Vista UX Guidelines 규격에맞게정렬 향상기능 새로운컨트롤, 이벤트, 공지및스타일에대한 MFC 지원 새로운컨트롤에대한 Dialog Editor 지원 Windows Vista UX 가이드라인에맞는다이얼로그템플릿지원 Windows Vista UX 컨트롤사용법에대한문서지원 VC++ 2008 새로운 MFC 라이브러리 UX Visual Studio IDE 지원
Office 리본바지원 VC++ 2008 메뉴바숨김기능 MFC 지원 CFrameWnd Class 에새로운매소드추가됨 virtual void CFrameWnd::SetMenuBarVisibility(DWORD nstyle); virtual DWORD CFrameWnd::GetMenuBarVisibility(); 2개의매소드를통해프로그램실행중동적으로메뉴를보이거나숨김기능동작 2개의이벤트핸들러를통해메뉴상태에다른코드적용가능 MDI, 다이얼로그에서는지원안함
VC++ 2008 Vista 에서새로운컨트롤추가지원 공용파일다이얼로그 Vista 형태의다이얼로그기본지원 Shell Interface 형태 Component 호출 IFileOpenDialog, IFileSaveDialog, IFileDialogEvents 기존 API형태도유지되나기본호출되지않음 GetOpenFileName, GetSaveFileName, OnNotify 페이져컨트롤 양끝방향버튼으로버튼페이지구성 MFC 에서는 CPagerCtrl Class VC++ 2008 Vista 에서새로운컨트롤추가지원 네트워크주소지정컨트롤 네트워크주소입력. IPv4, IPv6, DNS 의유효성검사 MFC 에서는 CNetAddressCtrl Class Command 버튼 아이콘, 노트같은커다란버튼지원 MFC 에서는 CButton Class 로연동 Split 버튼 여러명령집합묶음버튼 MFC 에서는 CSplitButton Class SysLink 컨트롤 MFC에서는 CLinkCtrl Class
VC++ 2008 MFC
MFC MFC Microsoft Foundation Class Library C++ 형태로포장된 Windows API 클래스라이브러리 1992 년 MFC 1.0 마이크로소프트 C/C++ 7.0 처음탑재 관련라이브러리 볼랜드 OWL (Object Windows Library) 매킨토시 TCL (Think Class Library) Mainsoft 유닉스용 MFC 라이브러리 MFC 버전 컴파일러버전 MFC 버전 MS-C 7.0 MFC 1.0 Visual C++ 1.0 MFC 2.0 Visual C++ 1.5 MFC 2.5 Visual C++ 2.0 MFC 3.0 Visual C++ 2.1 MFC 3.1 Visual C++ 2.2 2 MFC 3.2 Visual C++ 4.0 MFC 4.0 Visual C++ 4.1 MFC 4.1 MFC42.dll Visual C++ 4.2 MFC 4.2 MFC42.dll Visual C++ 5.0 MFC 4.21 MFC42.dll Visual C++ 6.0 MFC 6.0 MFC42.dll Visual C++.NET 2002 MFC 7.0 Visual C++.NET 2003 MFC 7.1 Visual C++ 2005 MFC 8.0 Visual C++ 2008 MFC 9.0
MFC 구성요소 개발기술 UI 구현 범용기능 CWinApp 문서 / 뷰지원 Frames Control Bars Visual Manager 탭지원 MDI Office 리본바 ToolBar, Menu, StatusBar Dialogs Views 도킹판 (Docking Panes) Vista 공용다이얼로그 예외처리 파일지원 G 데이터베이스 Vista 공용컨트롤 Window Controls OLE 지원 GDI Support 새로운컨트롤 기타 컨테이너 MFC 새로운기능 Vista 지원 Control Class 추가데스크탑통보윈도우추가 Messenger, Outlook 2007 화면우측하단팝업창새로운 UI Control 향상된버튼 Shell tree and list 마스크를지원하는 Edit Box 프로퍼티리스트 (Property list) 새로운공용 Control Command 버튼 Class Split 버튼 Class 네트워크주소지정컨트롤 Class SysLink 컨트롤 Class
MFC 추가된매소드 추가된 MFC Class 매소드 CMonthCalCtrl (19), CButton (15), CTreeCtrl (15), CListCtrl (14), CToolBarCtrl (9), CProgressCtrl (8), CEdit (7), CComboBox (5), CDateTimeCtrl (5), CHeaderCtrl (5), CReBarCtrl (4), CToolTipCtrl (4), CSliderCtrl (2), CStatusBarCtrl (1), CAnimateCtrl (1), CLinkCtrl (1) MFC DrawClient
MFC 탭지원 MDI, 툴바, 상태바 MFC 리본바
MFC 리본바 CMFCRibbonApplicationButton CMFCRibbonCategory CMFCRibbonQuickAccessToolBarC CMFCRibbonButton CMFCRibbonBar CMFCRibbonPanel CMFCRibbonColorButton C MFC 도킹판 (Docking Panes)
MFC VisualManager 응용프로그램을화려하게구성 UI 구성코드를한곳에집중. toolbars, buttons, menus, ribbons, docking panes, 기타 실행중에다른스킨으로변경 Office XP Native Windows XP/Windows Vista Office 2003 Visual Studio 2005 Office 2007 ( 색상스키마 ) MFC VisualManager
MFC 새로운기능 릴리즈 정식버전 2008 년 3 월예정 RC 버전 2007 년 12 월릴리즈 웹사이트를통해다운로드가능 추가탑재예정 MFC update TR1
다음버전 VC++ 10 네비티브코드기반개발자를위한강력한기능 Office & Windows UI 구현메이져역할 예 ) Office 14 & Windows 7 Windows 새로운기능에변화 예 ) Search & Organize Restart Manager Power Management 네이티브와관리형코드간의융합에포커스 결론 빌드환경개선 Vista 기반지원강화 MFC 기능지원강화 네이티브개발에대한지원지속 VC++ 2008 을통해새로운기술및가능성제시 VC++ 2008 지속성장
관련자료 VS 2008 Professional Trial Edition http://www.microsoft.com/downloads/details.aspx?familyid=83c3 a1ec-ed72-4a79-8961-25635db0192b&displaylang=en VC++ Blog http://blogs.msdn.com/vcblog/ VC++ Libraries forums http://forums.microsoft.com/msdn/showforum.aspx?forumid=8& SiteID=1 Channel9 VC++ videos http://channel9.msdn.com/tags/c++ p// / g/ BCGSoft http://www.bcgsoft.com/ VC++ 팀블로그관련내용 http://blogs.msdn.com/vcblog Marshaling Library in Orcas Visual Studio Express Orcas Resource Editor Updates for Orcas Visual C++ Orcas Feature Specifications online Custom Wizards MFC Updates for Vista Common Controls Multi-processor builds in Orcas Managed Incremental Build An Update to STL/CLR is Complete!
최근의 Channel 9 영상들 http://channel9.msdn.com/tags/c++ Steve Teixeira and Bill Dunlap: Visual C++ Today and Tomorrow Nikola Dudar: STLCLR - STL Development in the Managed World Marina Polishchuk: VC++ QA - The best job in the biz Sarita Bafna: VC++ "Orcas" -Marshaling Library and MFC support for Common Controls Ale Contenti: VC++ Safe Libraries and More Gordon Hogenson: Documenting Development Technologies