고재관 Microsoft MVP myaustin@korea.com www.pdalab.org myaustin.egloos.com
Microsoft 공인 MVP 600시간세미나 / 강의 C++ 개발실무경력 14 년집필도서 윈도우임베디드 CE 프로그래밍입문 (2008.3, 정보문화사 ) 윈도우임베디드 CE 프로그래밍 (2006, 정보문화사 ) 팔아라! 실전 PDA 프로그래밍 (2002) Starting Mobile PDA Programming (2001) 전문분야 VC++ 기반 Mobile & Server 응용프로그램개발 Mobile Device 컨설턴트및 Market Planner Windows Mobile 기반휴대폰 Software 제작 DirectShow 기반개발
주요내용 VC++ 2008 VC++ 업데이트 VC++ 새로운기능 VC++ MFC Control VC++ 업그레이드 데모
VC++ Visual C ++ MS C 7.0 이후의 Microsoft 개발도구 Microsoft 최초의 C++ 개발도구 C/C++ 에기반하여 Windows 16/32 API 사용 Windows 응용프로그램개발도구단독실행프로그램제작가능한유일한도구 MFC Microsoft Foundation Class Library C++ 형태의 Windows API 클래스라이브러리
컴파일러버전내부버전 MFC 버전통합제품 MS C 7. 0-1.0 Visual C++ 1.0 1.0 2.0 Visual C++ 1.5 1.5 2.5 Visual C++ 2.0 2.0 3.0 Visual C++ 2.1 2.1 3.1 Visual C++ 2.22 22 2.2 32 3.2 Visual C++ 4.0 4.0 4.0 Visual C++ 4.1 4.1 4.1 Visual C++ 4.2 42 4.2 42 4.2 Visual C++ 5.0 5.0 4.21 Visual Studio 97 Visual C++ 6.0 6.0 6.0 Visual Studio 6.0 Visual C++.NET 2002 7.0 7.0 Visual Studio.NET 2002 Visual C++.NET 2003 7.1 7.1 Visual Studio.NET 2003 Visual C++ 2005 8.0 8.0 Visual Studio 2005 Visual C++ 2008 9.0 9.0 Visual Studio 2008 10.0
목표다음세대기술을리드하는네이티브개발자전략 / 수행 지원 생산성과적응력향상을위한 VC++ 향상안전 & 빠른최신의개발라이브러리투자네이티브와관리형코드간융합기술 VC++ 컴파일러향상 VC++ 추가기능지원및 MFC향상 Windows Vista / Office UI / Visual Studio UI 관리형코드간원활한연동위한마샬링지원
VC++ 업데이트 VC++ 개발환경 VC++ 라이브러리 VC++ 컴파일및링크 VC++ 프로젝트
VC++ 업데이트 Windows Vista 스타일지침적용이전버전유지 ATL 등록옵션 모든사용자의구성요소등록 관리자권한기본 HKEY_CURRENT_USER 적용 HKEY_LOCAL_MACHINE 클래스디자이너 C++ 클래스다이어그램기능추가
VC++ 업데이트 STL/CLR 라이브러리 CLR과 C++ 간공유하는 STL MFC 라이브러리 Windows Vista 공용컨트롤지원클래스 18 개, 매서드 150 개추가 C++ 지원라이브러리 표준 C++ 지원강화마샬링라이브러리추가 P/Invoke 사용불필요
VC++ 업데이트 증분빌드종속코드영향부분만재컴파일새로운칩셋지원 AMD, Intel 칩셋지원 API Intel Core 2 지원성능지원 병렬빌드 (/MP 옵션 ) 하이퍼스레딩, 다중프로세서, 다중코어 64 비트옵션제거 (/Wp64, w64) 64비트용 VC++ 2008 사용으로변경 UAC 지원옵션추가
VC++ 업데이트 운영체제 Windows 2000 : x86 Windows XP :x86 x86, x64 Windows Server 2003 : x86, x64, Itanium Windows Vista : x86, x64, Itanium 중단 : Windows 95, 98, ME, NT WINVER, _WIN32_WINNT 매크로 (/D 옵션 ) Winable.h 제거 Winuser.h 포함 Rpcndr.lib 제거 Rpcrt4.lib 링크
VC++ 새로운기능 MFC 리소스 병렬빌드 UAC 클래스디자이너 증분빌드 TR1 마샬링 STL/CLR
VC++ 새로운기능 Visual Studio IDE 지원리본바지원 (Office 2007 스타일 ) Vista Control Class 추가 CSplitButton Class, CNetAddressCtrl Class, CPagerCtrl Class 기존 Class 매소드추가 CMonthCalCtrl(19), CButton (15), CTreeCtrl (15), CListCtrl(14), CToolBarCtrl(9), CProgressCtrl(8), CEdit(7), CComboBox (5), CDateTimeCtrl(5), CHeaderCtrl(5), ReBarCtrl(4), CToolTipCtrl(4), CSliderCtrl(2), C l(2) CStatusBarCtrl(1), C CAnimateCtrl(1), CLinkCtrl(1)
VC++ 새로운기능 아이콘 128x128, 256x256 추가 24 비트색상추가 24 비트색상추가이미지 PNG 지원추가
VC++ 새로운기능 멀티프로세스빌드지원 ( 병렬컴파일 ) 속도향상및자원효율적이용 /MP 컴파일러스위치지원 /MP 또는 /MPn (n 은 CPU 의개수 ) 프로젝트 속성 구성속성 C/C++ 명령줄 추가옵션 멀티프로세스설정 도구 옵션 프로젝트및솔루션 빌드및실행 최대병렬프로젝트빌드수최상의결과를얻기위한설정
VC++ 새로운기능 UAC (User Account Control) 매니패스트링커옵션 /MANIFESTUAC[:{NO fragment }] 프로젝트 속성 링커 매니페스트파일
VC++ 새로운기능 Class Designer (Class Diagram) 클래스구성코드다이어그램으로표현 C#, VB.NET 기능이 VC++ 까지확대
VC++ 새로운기능 증분만반영파일변경부분적용부분만반영 /INCREMENTAL 옵션 프로젝트 속성 구성속성 링커 일반 증분링크 헤더파일1 CPP 파일1.obj 컴파일 헤더파일2 CPP 파일2 컴파일.obj 링크.exe
VC++ 새로운기능 The Technical Report on C++ Library Extensions ISO/IEC TR19768, C++ Library Extension C++ 표준라이브러리의확장 STL 사용시 TR1 사용시 using namespace std; using namespace std::tr1; VC++ 2008 이상지원반드시 Feature Pack 설치반드시 Feature Pack 설치 http://dinkumware.com/tr1.aspx
VC++ 새로운기능 관리형, 네이티브코드간데이터마샬링 #include <msclr/marshal.h> using namespace msclr:: ::interop interop;... System::String^ src = teststring const char* tar; marshal_context ctx; tar = ctx.marshal_as<const char*>(src); STL 과.NET 컬렉션간의데이터교환 #include <cliext cliext/hash_map hash_map> #include <cliext/algorithm>... cliext::vector<string^> v4; cliext:: ::random_shuffle( v4.begin(), v4.end() );
VC++ MFC Control 공용파일다이얼로그 Split Button Control Network Address Control Command Button Control Pager Control SysLink Control
VC++ MFC Control Vista Only 공용파일다이얼로그 Vista 형태의다이얼로그기본지원 Shell Interface 형태 Component 호출 IFileOpenDialog, IFileSaveDialog, IFileDialogEvents 기존 API 형태도유지되나기본호출되지않음 GetOpenFileName, GetSaveFileName, OnNotify
VC++ MFC Control Vista Only Split Button Control MFC : CSplitButton Class 여러명령집합묶음버튼메뉴리소스를활용한다중처리버튼 CSplitButton:: tt ::GetSplitSize GetSplitSize(... ); CSplitButton:: ::SetDropDownMenu(IDR_MENU, 0); CSplitButton:: ::SetWindowText(" 메뉴 1 사용 ");
VC++ MFC Control Vista Only Network Address Control MFC : CNetAddressCtrl Class 네트워크주소입력. IPv4, IPv6, DNS의유효성검사 NET_ADDRESS_INFO nfo; NC_ADDRESS addr; addr.paddrinfo = &nfo; CNetAddressCtrl:: ::SetAllowType( 마스크 ); CNetAddressCtrl:: ::GetAddress(&addr); CNetAddressCtrl:: ::DisplayErrorTip(); i // 오류
VC++ MFC Control Vista Only Command Button Control MFC : CButton Class 아이콘, 노트같은커다란버튼지원승인아이콘 CButton:: ::SetShield(TRUE); 버튼설명 CButton:: ::SetNote( 버튼에대한설명 );
VC++ MFC Control Pager Control MFC : CPagerCtrl Class 툴바용페이지컨트롤양끝방향버튼으로버튼페이지구성 CPagerCtrl m_pctl; m_pctl.create(... ); CToolBar m_toolbar m_toolbar.createex(& (&m_pctl); m_toolbar.loadtoolbar(idr_toolbar1); m_pctl.setchild(m_toolbar.m_hwnd);
VC++ MFC Control SysLink Control MFC : CLinkCtrl Class 링크기능수행링크선택시메시지핸들러연결 & 실행 SHELLEXECUTEINFO se;... se.lpfile=l lpfile=l"http L"http:// ://myaustin.egloos.com com"; ShellExecuteEx(&se);
VC++ MFC Control 추가된 MFC 9.0 팝업 CMFCListCtrl, CMFCPropertyGridCtrl, CMFCShellTreeCtrl, CMFCShellListCtrl, CMenuButton, CThemedButton, CMFCLinkCtrl MFC : CMFCDesktopAlertWnd Class 예 )MSN 메신져, 아웃룩알람창툴팁 MFC : CMFCToolTipCtrl Class 툴팁출력
{ Vista & MFC Control } 고재관 Microsoft MVP
VC++ 업그레이드 VC++ 6.0 & evc++ 4.0 변환전후의파일 플랫폼확대 안전한문자열 WINVER 루프 MFC & ATL 메시지핸들러 Class Wizard Class View
VC++ 업그레이드 VC++ 6.0 : Visual C++ 6.0 (Visual Studio 6.0) 오랜기간익숙하여많이사용 VC++ 새로운기능이주춤하여정체 VC++.NET 2002, 2002, 2005로전환안됨기존개발프로그램, 교육기관의교육문제 evc++ 4.0 : embedded Visual C++ 4.0 Windows CE Toolkit for Visual C++ 5.0 시작 embedded Visual C++ 3.0 & 4.0 독립버전최근몇년전공식지원중단. 최근 Platform 미지원상태. 매우불안정.
VC++ 업그레이드 VC++ 6.0 evc++ 4.0 변환전변환후변환전변환후
VC++ 업그레이드 Mobile Device 의기회확대 evc++ 4.0 의제한된플랫폼지원 VC++ 2008 로변환후확대된지원플랫폼 최신버전모두지원향후버전지속지원
VC++ 업그레이드 안전한문자열처리기능추가작업필요빌드시 Warning메시지발생 안전한 API 로교체권고함. 경고메시지만없앨수있음. #define _CRT_SECURE_NO_DEPRECATE _ #define _CRT_SECURE_NO_WARNINGS
기존 문자열을 NULL 종료 Null Termination Null Termination 런타임 API의문제점내포 Null 없는등런타임중오류발생가능성 strcpy 최근 최근 strcpy(tar, abc ); ); 안전한문자열처리권고안전한문자열처리 API 추가 strcpy_s(tar,sizeof tar,sizeof(tar), (tar), abc abc );
VC++ 업그레이드 기존 WINVER 미정의또는다른값 정상빌드 winres.h 에포함 VC++ 2008 WINVER 정의필요 ( 컴파일시기본값적용 ) 컴파일옵션 /D를통해매크로정의가능 0x0500 이상의값필요 #define WINVER 0x0500 #ifdef WINVER #undef WINVER #define WINVER 0x0500 #endif
VC++ 업그레이드 기존 루프내선언은그이후에도유효 for(int i=0; i<10;i++) { } for( i=0; i<10;i++) { } VC++ 2008 루프내선언은 Local 처리됨 for(int i=0; i<10;i++) { } for(int i=0; i<10;i++) { } 변수를미리선언하여사용권장 int i = 0; for(i=0; i<10;i++) { } for(i=0; i<10;i++) { } 기존소스코드수정불가피
VC++ 업그레이드 MFC Class ATL COM 형태로변경 사용법일부변경됨예 ) CString Class CStringT Interface 로변경기존 문자의 ASCII/Unicode값을직접넣을수있음 CString A = 0x20; VC++ 2008 변수를이용해처리 CHAR sztemp[2]= ; sztemp[0] = 0x20; CString A = sztemp; 또는 CString A = _T( \x020 );
VC++ 업그레이드 기존 메시지핸들러의파라미터생략이허용 ON_MESSAGE(WM_USER+1,OnUser) OnUser)... void 클래스명 ::OnUser(WPARAM wparam) { }... void 클래스명 ::OnUser() { }... VC++ 2008 파라미터등의생략이허용되지않음 ON_MESSAGE(WM_USER+1,OnUser)... LRESULT 클래스명 ::OnUser( WPARAM wparam, LPARAM lparam )... 기존개발소스코드수정불가피
VC++ 업그레이드 기존 Class Wizard 를통한통합관리 VC++ 2008 통합 IDE 환경구성. Class Wizard 없앰 Class 의속성창의아이콘을선택속성추가삭제의개념으로접근 Windows Message/ Event Handler 연결 UI Control Event Handler 연결
VC++ 업그레이드 기존 Class의헤더연결 Class 의프로그램파일연결 VC++ 2008 기존동일기능수행 Message/ Event Handler 연결출력기반 Class / 파생 Class 연결출력
VC++ 업그레이드 필요한경우코드검증도구사용 Visual Studio 2008 Team System 사용필수다양한코드검증을통해프로그램안정성확보응용프로그램검증도구 (Application Verifier) 런타임에러검증도구디버그 ' 응용프로그램검증도구 ' 로실행코드분석 (Code Analysis) 프로그램테스트도구프로젝트 속성 구성속성 코드분석 빌드할때 C/C++ 에코드분석사용 옵션사용 /analyze 옵션
{ 이전프로젝트변환 } 고재관 Microsoft MVP
정식버전 2008년 2월 ( 인터넷다운로드개시 ) 한글버전출시됨 Feature Pack 웹사이트를통해다운로드 MFC update TR1 현재영문만됨. 한글지원버전곧출시. 현재영문만됨한글지원버전곧출시 Visual Studio 2008 Service Pack 1 (? )
VC++ 10 네이티브코드기반개발자위한강력한기능 Office & Windows UI 구현메이져역할 예 ) Office 14 & Windows 7 Windows 새로운기능에변화 예 ) Search & Organize Restart Manager Power Management 네이티브와관리형코드간의융합에포커스 Visual C++ 지속성장
발표자료다운로드 http://myaustin.egloos.com/1784875 VS 2008 한글판 Professional 90 일버전 http://www.microsoft.com/downloads/details.aspx?displaylang=ko&familyid=83c3a1ec-ed72-4a79- l il 3 d72 79 8961-25635db0192b VC++ Team Blog http://blogs.msdn.com/vcblog/ VC++ Libraries forums http://forums.microsoft.com/msdn/showforum.a spx?forumid=8&siteid=1
2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.