47
고재관 Microsoft MVP [email protected] www.PDAlab.org myaustin.egloos.com

고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

고재관Microsoft [email protected] www.PDAlab.org myaustin.egloos.com

Page 2: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

Microsoft 공인 MVPMicrosoft 공인 MVP600시간세미나/강의C++ 개발실무경력 14년C++ 개발실무경력 14년집필도서

윈도우임베디드 CE 프로그래밍입문 (2008 3 정보문화사)윈도우임베디드 CE 프로그래밍입문 (2008.3, 정보문화사)윈도우임베디드 CE 프로그래밍 (2006, 정보문화사)팔아라! 실전PDA프로그래밍 (2002)팔아라! 실전PDA프로그래밍 (2002)Starting Mobile PDA Programming (2001)

전문분야전문분야VC++ 기반 Mobile & Server 응용프로그램개발Mobile Device 컨설턴트및 Market PlannerWindows Mobile 기반휴대폰 Software 제작DirectShow 기반개발

Page 3: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

주요내용주요내용

VC++ 2008VC++ 2008VC++ 업데이트VC 새로운기능VC++ 새로운기능VC++ MFC ControlVC++ 업그레이드데모데모

Page 4: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++Visual C ++MS C 7 0 이후의 Microsoft 개발도구MS C 7.0 이후의 Microsoft 개발도구Microsoft 최초의 C++ 개발도구C/C 에기반하여 Wi d 16/32 API 사용C/C++ 에기반하여 Windows 16/32 API 사용Windows 응용프로그램개발도구단독실행프로그램제작가능한유일한도구

MFCMicrosoft Foundation Class LibraryC++형태의 Windows API 클래스라이브러리C++형태의 Windows API 클래스라이브러리

Page 5: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

컴파일러버전 내부버전 MFC버전 통합제품

MS C 7. 0 - 1.0Visual C++ 1.0 1.0 2.0Visual C++ 1.5 1.5 2.5Visual C++ 2.0 2.0 3.0Visual C++ 2.1 2.1 3.1Visual C++ 2 2 2 2 3 2Visual C++ 2.2 2.2 3.2Visual C++ 4.0 4.0 4.0Visual C++ 4.1 4.1 4.1Vi l C 4 2 4 2 4 2Visual C++ 4.2 4.2 4.2Visual C++ 5.0 5.0 4.21 Visual Studio 97Visual C++ 6.0 6.0 6.0 Visual Studio 6.0 Visual C++ .NET 2002 7.0 7.0 Visual Studio .NET 2002Visual C++ .NET 2003 7.1 7.1 Visual Studio .NET 2003Visual C++ 2005 8.0 8.0 Visual Studio 2005Visual C++ 2008 9.0 9.0 Visual Studio 2008

10.0

Page 6: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

목표목표다음세대기술을리드하는네이티브개발자

전략/ 수행전략/ 수행생산성과적응력향상을위한 VC++ 향상안전&빠른최신의개발라이브러리투자네이티브와관리형코드간융합기술

지원VC++ 컴파일러향상VC++ 컴파일러향상VC++ 추가기능지원및 MFC향상Windows Vista / Office UI / Visual Studio UIWindows Vista / Office UI / Visual Studio UI관리형코드간원활한연동위한마샬링지원

Page 7: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 업데이업데이트트

VC++ 개발환경VC++ 개발환경VC++ 라이브러리VC 컴파일및링크VC++ 컴파일및링크VC++ 프로젝트젝

Page 8: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 업데이트업데이트

Windows Vista 스타일지침적용Windows Vista 스타일지침적용이전버전유지

ATL 등록옵션ATL 등록옵션‘모든사용자의구성요소등록’ 관리자권한기본 HKEY_CURRENT_USER 적용 HKEY_LOCAL_MACHINE

클래스디자이너C++클래스다이어그램기능추가C++클래스다이어그램기능추가

Page 9: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 업데이트업데이트

STL/CLR 라이브러리STL/CLR 라이브러리CLR과 C++간공유하는 STL

MFC 라이브러리MFC 라이브러리Windows Vista 공용컨트롤지원클래스 18개 , 매서드 150개추가

C++ 지원라이브러리지원라이 러리표준 C++ 지원강화마샬링라이브러리추가마샬링라이브러리추가P/Invoke 사용불필요

Page 10: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 업데이트업데이트

증분빌드증분빌드종속코드영향부분만재컴파일

새로운칩셋지원새로운칩셋지원AMD, Intel 칩셋지원 APIIntel Core 2 지원성능지원

병렬빌드 (/MP옵션)병렬빌 (/ 옵션)하이퍼스레딩, 다중프로세서, 다중코어

64비트옵션제거 (/Wp64 w64)64비트옵션제거 (/Wp64 , __w64)64비트용 VC++ 2008 사용으로변경

UAC지원옵션추가UAC지원옵션추가

Page 11: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 업데이트업데이트

운영체제운영체제Windows 2000 : x86Windows XP : x86 x64Windows XP : x86, x64Windows Server 2003 : x86, x64, ItaniumWi d Vi t 86 64 It iWindows Vista : x86, x64, Itanium중단 : Windows 95, 98, ME, NTWINVER , _WIN32_WINNT 매크로 (/D 옵션)

Winable.h 제거 Winuser.h 포함제거 함Rpcndr.lib 제거 Rpcrt4.lib 링크

Page 12: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

MFCMFC리소스병렬빌드병렬빌드UAC클래스디자이너증분빌드증분빌드TR1마샬링STL/CLRSTL/CLR

Page 13: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

Visual Studio IDE 지원Visual Studio IDE 지원리본바지원 (Office 2007 스타일)Vi t C t l Cl 추가Vista Control Class 추가

CSplitButton Class , CNetAddressCtrl Class, CPagerCtrl Class

기존 Class 매소드추가기 매 추가CMonthCalCtrl(19), CButton (15), CTreeCtrl (15), CListCtrl(14), CToolBarCtrl(9), CProgressCtrl(8), ( ) ( ) g ( )CEdit(7), CComboBox (5), CDateTimeCtrl(5), CHeaderCtrl(5), ReBarCtrl(4), CToolTipCtrl(4), CSlid C l(2) CS B C l(1)CSliderCtrl(2), CStatusBarCtrl(1), CAnimateCtrl(1), CLinkCtrl(1)

Page 14: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

아이콘아이콘128x128, 256x256 추가24비트색상추가24비트색상추가

이미지PNG 지원추가

Page 15: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

멀티프로세스빌드지원 (병렬컴파일)멀티프로세스빌드지원 (병렬컴파일)속도향상및자원효율적이용/MP 컴파일러스위치지원/MP 컴파일러스위치지원

/MP 또는 /MPn (n은 CPU의개수)프로젝트 속성 구성속성 C/C++ 명령줄 추가옵션

멀티프로세스설정도구 옵션 프로젝트및솔루션 빌드및도구 옵션 프로젝트및솔루션 빌드및실행 최대병렬프로젝트빌드수최상의결과를얻기위한설정최상의결과를얻기위한설정

Page 16: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

UAC (User Account Control) 매니패스트UAC (User Account Control) 매니패스트링커옵션

||

프로젝트 속성 링커 매니페스트파일/MANIFESTUAC[:{NO|”fragment”}]/MANIFESTUAC[:{NO|”fragment”}]

Page 17: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

Class Designer (Class Diagram)Class Designer (Class Diagram)클래스구성코드다이어그램으로표현C# VB NET 기능이 VC++ 까지확대C#, VB.NET 기능이 VC++ 까지확대

Page 18: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

증분만반영증분만반영파일변경부분적용부분만반영

/INCREMENTAL 옵션/INCREMENTAL 옵션프로젝트 속성 헤더파일헤더파일11 헤더파일헤더파일22

구성속성 링커일반 증분링크 CPPCPP파일파일11 CPPCPP파일파일22

objobj

컴파일

objobj

컴파일

..objobj

링크

..objobj

.exe

Page 19: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

The Technical Report on C++ LibraryThe Technical Report on C++ Library Extensions

ISO/IEC TR19768 C++ Library ExtensionISO/IEC TR19768, C++ Library ExtensionC++ 표준라이브러리의확장

사용시STL 사용시TR1 사용시

using namespace std;using namespace std;

using namespace std::tr1;using namespace std::tr1;

VC++ 2008 이상지원반드시 Feature Pack 설치반드시 Feature Pack 설치

http://dinkumware.com/tr1.aspx

Page 20: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 새로운새로운기능기능

관리형 네이티브코드간데이터마샬링관리형, 네이티브코드간데이터마샬링#include <#include <msclrmsclr//marshal.hmarshal.h>>using namespace using namespace msclrmsclr::::interopinterop;;using namespace using namespace msclrmsclr::::interopinterop;;... ... System::String^ System::String^ srcsrc = “= “teststringteststring””const char* tar;  const char* tar;  const char  tar;  const char  tar;  marshal_contextmarshal_context ctxctx;;tar = tar = ctx.marshal_asctx.marshal_as<const char*>(<const char*>(srcsrc););

STL과 .NET 컬렉션간의데이터교환#include <#include <cliextcliext//hash maphash map>>#include <#include <cliextcliext//hash_maphash_map>>#include <#include <cliextcliext/algorithm>/algorithm>... ... cliextcliext::vector<String^> v4;::vector<String^> v4;cliextcliext::vector<String > v4;::vector<String > v4;cliextcliext::::random_shufflerandom_shuffle( v4.begin(), v4.end() );( v4.begin(), v4.end() );

Page 21: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ MFC ControlVC++ MFC Control

공용파일다이얼로그공용파일다이얼로그Split Button ControlN t k Add C t lNetwork Address ControlCommand Button ControlPager ControlSysLink ControlSysLink Control

Page 22: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ MFC ControlVC++ MFC Control Vista OnlyVista Only

공용파일다이얼로그공용파일다이얼로그Vista 형태의다이얼로그기본지원Shell Interface 형태 Component 호출Shell Interface 형태 Component 호출

IFileOpenDialog , IFileSaveDialog , IFileDialogEvents기존 API형태도유지되나기본호출되지않음기존 API형태도유지되나기본호출되지않음

GetOpenFileName , GetSaveFileName , OnNotify

Page 23: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ MFC ControlMFC Control Vista OnlyVista Only

Split Button ControlSplit Button ControlMFC : CSplitButton Class여러명령집합묶음버튼여러명령집합묶음버튼메뉴리소스를활용한다중처리버튼CS litB ttCS litB tt G tS litSiG tS litSi (   )(   )CSplitButtonCSplitButton::::GetSplitSizeGetSplitSize( ... );( ... );CSplitButtonCSplitButton::::SetDropDownMenuSetDropDownMenu(IDR_MENU, 0);(IDR_MENU, 0);CSplitButtonCSplitButton::::SetWindowTextSetWindowText("("메뉴메뉴 1 1 사용사용");");CSplitButtonCSplitButton::::SetWindowTextSetWindowText(( 메뉴메뉴 1 1 사용사용 ););

Page 24: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ MFC ControlMFC Control Vista OnlyVista Only

Network Address ControlNetwork Address ControlMFC : CNetAddressCtrl Class네트워크주소입력네트워크주소입력. IPv4, IPv6, DNS의유효성검사NET ADDRESS INFO NET ADDRESS INFO  ffNET_ADDRESS_INFO NET_ADDRESS_INFO nfonfo;;NC_ADDRESS NC_ADDRESS addraddr;;addr.pAddrInfoaddr.pAddrInfo = &= &nfonfo;;pp ;;CNetAddressCtrlCNetAddressCtrl::::SetAllowTypeSetAllowType( ( 마스크마스크 ););CNetAddressCtrlCNetAddressCtrl::::GetAddressGetAddress(&(&addraddr););

dd ldd l i l ii l i ()() //// 오류오류CNetAddressCtrlCNetAddressCtrl::::DisplayErrorTipDisplayErrorTip(); (); // // 오류오류

Page 25: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ MFC ControlMFC Control Vista OnlyVista Only

Command Button ControlCommand Button ControlMFC : CButton Class아이콘 노트같은커다란버튼지원아이콘, 노트같은커다란버튼지원승인아이콘CB ttCB tt S tShi ldS tShi ld(TRUE)(TRUE)

버튼설명CButtonCButton::::SetShieldSetShield(TRUE);(TRUE);

CButtonCButton::::SetNoteSetNote((”버튼에”버튼에 대한대한 설명”설명”););

Page 26: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ MFC ControlMFC Control

Pager ControlPager ControlMFC : CPagerCtrl Class툴바용페이지컨트롤툴바용페이지컨트롤양끝방향버튼으로버튼페이지구성CPagerCtrlCPagerCtrl m_pctlm_pctl;;m_pctl.Createm_pctl.Create( ... );( ... );CToolBarCToolBar m toolbarm toolbarCToolBarCToolBar m_toolbarm_toolbarm_toolbar.CreateExm_toolbar.CreateEx(&(&m_pctlm_pctl););m_toolbar.LoadToolBarm_toolbar.LoadToolBar(IDR_TOOLBAR1);(IDR_TOOLBAR1);m_pctl.SetChildm_pctl.SetChild((m_toolbar.m_hWndm_toolbar.m_hWnd););

Page 27: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ MFC ControlMFC Control

SysLink ControlSysLink ControlMFC : CLinkCtrl Class링크기능수행링크기능수행링크선택시메시지핸들러연결 & 실행SHELLEXECUTEINFO se;SHELLEXECUTEINFO se;......se lpFilese lpFile==L"httpL"http://://myaustin egloos commyaustin egloos com";";se.lpFilese.lpFile==L httpL http://://myaustin.egloos.commyaustin.egloos.com ;;ShellExecuteExShellExecuteEx(&se);(&se);

Page 28: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ MFC VC++ MFC ControlControl

추가된 MFC 9 0추가된 MFC 9.0CMFCListCtrl , CMFCPropertyGridCtrl , CMFCShellTreeCtrl CMFCShellListCtrlCMFCShellTreeCtrl , CMFCShellListCtrl , CMenuButton , CThemedButton , CMFCLinkCtrl …

팝업팝업MFC : CMFCDesktopAlertWnd Class예) MSN메신져 아웃룩알람창예) MSN메신져, 아웃룩알람창

툴팁MFC : CMFCToolTipCtrl Class툴팁출력툴팁출력

Page 29: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

{{ Vista Vista & MFC & MFC ControlControl }}{{ }}

고재관Microsoft MVP

Page 30: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ VC++ 업그레이드업그레이드

VC++ 6 0 & eVC++ 4 0VC++ 6.0 & eVC++ 4.0변환전후의파일플랫폼확대플랫폼확대안전한문자열한 자열WINVER루프루프MFC & ATL메시지핸들러Class WizardClass WizardClass View

Page 31: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

VC++ 6 0 : Visual C++ 6 0 (Visual Studio 6 0)VC++ 6.0 : Visual C++ 6.0 (Visual Studio 6.0)오랜기간익숙하여많이사용VC++ 새로운기능이주춤하여정체VC++ 새로운기능이주춤하여정체VC++ .NET 2002, 2002, 2005로전환안됨기존개발프로그램 교육기관의교육문제기존개발프로그램, 교육기관의교육문제

eVC++ 4.0 : eMbedded Visual C++ 4.0Windows CE Toolkit for Visual C++ 5.0 시작eMbedded Visual C++ 3.0 & 4.0 독립버전독립버전최근몇년전공식지원중단.최근 Platform 미지원상태 매우불안정최근 Platform 미지원상태. 매우불안정.

Page 32: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

eVC++ 4 0VC++ 6 0 eVC++ 4.0 VC++ 6.0

변환전 변환후 변환전 변환후변환전 변환후 변환전 변환후

Page 33: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

Mobile Device의기회확대Mobile Device의기회확대eVC++ 4.0 의제한된플랫폼지원

VC 2008로변환후확대된지원플랫폼VC++ 2008로변환후확대된지원플랫폼최신버전모두지원향후버전지속지원

Page 34: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

안전한문자열처리기능추가작업필요안전한문자열처리기능추가작업필요빌드시 Warning메시지발생

안전한 API로교체권고함.경고메시지만없앨수있음.#define  _CRT_SECURE_NO_DEPRECATE#define  _CRT_SECURE_NO_DEPRECATE_ _ _ __ _ _ _

#define  _CRT_SECURE_NO_WARNINGS#define  _CRT_SECURE_NO_WARNINGS

Page 35: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

기존기존문자열을 NULL종료

Null TerminationNull Termination런타임 API의문제점내포Null없는등런타임중오류발생가능성Null없는등런타임중오류발생가능성

최근strcpystrcpy((tar,”abctar,”abc”);”);

최근안전한문자열처리권고안전한문자열처리 API추가strcpy_sstrcpy_s((tar,sizeoftar,sizeof(tar),”(tar),”abcabc”);”);py_py_ (( ,, ( ),( ), ););

Page 36: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

기존기존WINVER 미정의또는다른값 정상빌드winres h에포함winres.h에포함

VC++ 2008WINVER 정의필요 (컴파일시기본값적용)컴파일옵션 /D를통해매크로정의가능0x0500 이상의값필요#define  WINVER#define  WINVER 0x05000x0500#define  WINVER#define  WINVER 0x05000x0500

##ifdefifdef WINVERWINVER##undefundef WINVERWINVER#define  WINVER  0x0500#define  WINVER  0x0500##endifendif

Page 37: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

기존기존루프내선언은그이후에도유효for(int i=0; i<10;i++) {   }for(int i=0; i<10;i++) {   }

VC++ 2008

for(int i=0; i<10;i++) { … }for(int i=0; i<10;i++) { … }for(    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++) {   }

변수를미리선언하여사용권장

for(int i=0; i<10;i++) { … }for(int i=0; i<10;i++) { … }for(int i=0; i<10;i++) { … }for(int i=0; i<10;i++) { … }변수를미리선언하여사용권장intint i = 0;i = 0;for(i=0; i<10;i++) { … }for(i=0; i<10;i++) { … }

기존소스코드수정불가피for(i=0; i<10;i++) { … }for(i=0; i<10;i++) { … }

Page 38: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

MFC Class ATL COM형태로변경MFC Class ATL COM형태로변경사용법일부변경됨

예) CSt i Cl CSt i T I t f 로변경예) CString Class CStringT Interface로변경

기존문자의 ASCII/Unicode값을직접넣을수있음CString A = 0x20;CString A = 0x20;

VC++ 2008변수를이용해처리변수를이용해처리CHAR szTemp[2]=””;CHAR szTemp[2]=””;szTemp[0] = 0x20;szTemp[0] = 0x20; 는 CSt i  A    T(”CSt i  A    T(”\\ 020”)020”)szTemp[0] = 0x20;szTemp[0] = 0x20;CString A = szTemp;CString A = szTemp;

또는 CString A = _T(”CString A = _T(”\\x020”);x020”);

Page 39: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

기존기존메시지핸들러의파라미터생략이허용ON MESSAGE(WM USER+1 OnUser)ON MESSAGE(WM USER+1 OnUser)ON_MESSAGE(WM_USER+1,OnUser)ON_MESSAGE(WM_USER+1,OnUser)... ... void void 클래스명클래스명::::OnUser(WPARAM wParam) { … } ...OnUser(WPARAM wParam) { … } ...

VC++ 2008void void 클래스명클래스명::::OnUser() { … }OnUser() { … } ... ... 

파라미터등의생략이허용되지않음ON_MESSAGE(WM_USER+1,OnUser)ON_MESSAGE(WM_USER+1,OnUser)......LRESULT LRESULT 클래스명클래스명::::OnUser(OnUser( WPARAM wParam, WPARAM wParam, 

LPARAM lParam ) LPARAM lParam ) 기존개발소스코드수정불가피

LPARAM lParam ) ...LPARAM lParam ) ...

Page 40: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

기존기존Class Wizard 를통한통합관리

VC++ 2008VC++ 2008통합 IDE환경구성. Class Wizard 없앰Class의속성창의아이콘을선택속성추가삭제의개념으로접근Windows Message/ Event Handler 연결UI Control Event Handler 연결연결

Page 41: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

기존기존Class의헤더연결Class의프로그램파일연결Class의프로그램파일연결

VC++ 2008기존동일기능수행Message/ Event Handler 연결출력기반 Class / 파생 Class 연결출력

Page 42: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++VC++업그레이드업그레이드

필요한경우코드검증도구사용필요한경우코드검증도구사용Visual Studio 2008 Team System 사용필수다양한코드검증을통해프로그램안정성확보다양한코드검증을통해프로그램안정성확보

응용프로그램검증도구 (Application Verifier)런타임에러검증도구디버그 '응용프로그램검증도구'로실행

코드분석 (Code Analysis)프로그램테스트도구프로그램테스트도구프로젝트 속성 구성속성 코드분석 ’빌드할때 C/C++에코드분석사용‘ 옵션사용때 C/C++에코드분석사용 옵션사용/analyze 옵션

Page 43: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

{{이전프로젝트이전프로젝트변환변환 }}{{이전 젝이전 젝 변환변환 }}

고재관Microsoft MVP

Page 44: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

정식버전정식버전2008년 2월 (인터넷다운로드개시)한글버전출시됨한글버전출시됨

Feature Pack 웹사이트를통해다운로드MFC updateTR1현재영문만됨. 한글지원버전곧출시.현재영문만됨 한글지원버전곧출시

Visual Studio 2008 Service Pack 1 ( ? )

Page 45: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

VC++ 10VC++ 10네이티브코드기반개발자위한강력한기능Offi & Wi d UI 구현메이져역할Office & Windows UI 구현메이져역할예) Office 14 & Windows 7

Windows 새로운기능에변화예) Search & Organize예) Search & Organize

Restart ManagerPower ManagementPower Management

네이티브와관리형코드간의융합에포커스Visual C++ Visual C++ 지속성장지속성장

Page 46: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

발표자료다운로드발표자료다운로드http://myaustin.egloos.com/1784875

VS 2008 한글판 Professional 90일버전VS 2008 한글판 Professional 90일버전http://www.microsoft.com/downloads/details.aspx?di l l k &F il ID 83 3 1 d72 4 79?displaylang=ko&FamilyID=83c3a1ec-ed72-4a79-8961-25635db0192bVC T BlVC++ Team Bloghttp://blogs.msdn.com/vcblog/

VC++ Libraries forumshttp://forums.microsoft.com/MSDN/ShowForum.ahttp://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=8&SiteID=1

Page 47: 고재관 Microsoft MVPpds7.egloos.com/pds/200803/21/70/VC2008Update.pdf · 윈도우윈도우임베디드임베디드CE 프로그래밍프로그래밍 입문입문 (2008 3(2008.3,

© 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.