Visual C++ 2008 Feature Pack

출처 : http://blogs.msdn.com/bkchung/archive/2008/01/14/visual-c-2008-feature-pack.aspx


Download details VC++ 2008 Libraries Feature Pack Release


Visual C++ Team Blog  Q&A on our TR1 implementation


출시된 Visual Studio 2008에는 MFC의 업그레이드인 MFCNext와 Cpp0x의 새기능들이 포함된 TR1이 포함되지 않고 별도로 배포되는 Visual C++ 2008 Feature Pack에 포함되는데, 이번에 공개되었습니다. 물론 Visual Studio 2008 정식 버젼이 설치되어 있어야 합니다. 위쪽의 첫번째 링크에 있는 새 기능 내용을 살짝 빌리면 다음과 같습니다:


MFCNext:


· 오피스 리본 스타일의 인터페이스

· Office 2007, Office 2003과 Office XP 룩앤필

· Visual Studio 스타일의 도킹 툴바와 Pane

· 커스터마이징이 가능한 툴바와 메뉴

· 다양한 향상된 GUI 컨트롤들

· 향상된 MDI 탭과 그룹

· …

CreateFile() 함수를 이용하여 파일 생성후 바로 삭제하기

아래와 같이 파일을 생성시에 FILE_FLAG_DELETE_ON_CLOSE 속성을 주게 되는경우 파일 핸들이 닫히게 되면 해당 파일은 시스템에서 삭제가 된다. 또한 이미 존재하는 파일인 경우에는 FILE_SHARE_DELETE 공유 모드로 오픈하여야 한다.

hFile = CreateFile("d:\\MYFILE.TXT",           /* create MYFILE.TXT */ 
GENERIC_WRITE,                /* open for writing */ 
0,                            /* do not share */ 
NULL,                         /* no security */ 
CREATE_ALWAYS,                /* overwrite existing */ 
FILE_ATTRIBUTE_NORMAL |       /* normal file */ 
FILE_FLAG_OVERLAPPED | 
FILE_FLAG_DELETE_ON_CLOSE,  
NULL);

성공적인 프로젝트를 위한 다국어 리소스 준비-2

출처 : 데브피아 석재헌님의 글

http://www.devpia.com/Forum/BoardView.aspx?no=7282&ref=7282&page=2&forumname=vc_lec&stype=

  1. 리소스 라이브러리
    앞서의 글에서 이야기한 다국어 리소스 대응 방식으로는, 다국어 리소스가 많아지면 관리하기도 어려워지고, 컴파일되어 나온 출력물이 커지는 단점이 있습니다.

    이런 경우 각각의 언어에 대응되는 리소스들을 따로 혹은 몇 개를 묶어서 라이브러리화 하면, 유지보수 하기가 한 결 쉬어 집니다. 때때로 코드페이지의 한계로 같이 편집할 수 없는 언어들도 있습니다. 이런 경우도 분리하셔야 합니다.
  2. 리소스 라이브러리 만드는 방법
    1) dll 형식의 프로젝트를 하나 만듭니다. (MFC dll 이 아니어도 상관없습니다.).
    2) 원래의 프로젝트에서 resource.h , *.rc, 프로젝트 폴더 안에 있는 RES 폴더를 통째로 복사합니다.
    3) 필요한 언어 리소스들의 Copy를 아래 그림처럼 추가하고, 필요 없는 언어의 리소스는 모두

성공적인 프로젝트를 위한 다국어 리소스 준비-1

출처 : 데브피아 석재헌님의 글
http://www.devpia.com/Forum/BoardView.aspx?no=7281&ref=7281&page=2&forumname=vc_lec&stype=
  1. 다국어 리소스
    국내뿐만 아니라 해외에서도 널리 쓰이는 소프트웨어가 되기 위해서는 주체가 누구든지 로컬라이징(Localizing-이하 ‘지역화’)을 해 주든지 과정이 필요합니다.
    이 때 개발자가 만든 프로그램이 이러한 지역화에 준비되어 있지 않으면, 개발자 뿐만 아니라 많은 사람들이 피곤하게 됩니다. (특히, 개발자만 죽어나는 경향이 있습니다.)

     

    그러나, 다국어 리소스에 대한 준비 과정 자체는 상당히 간단하고, 미리 준비만 잘 해놓으면, 오히려 개발자가 일을 분담시킬 수 있습니다.

     

    이 글에서는 어떤 방식으로 다국어 리소스를 준비하는 사용하고지에 대해서 살펴 보도록 하겠습니다.
  2. 다국어 리소스 사용 준비
    다국어 리소스 사용 준비 과정은 무척 간단합니다.
    모든 리소스, 특히 문자열 리소스 사용시에 하드코딩을 없애고, 리소스로 따로

오피스 파일 구별하기

/* Word Document (*.doc)  : {00020906-0000-0000-C000-000000000046} */ 
static const GUID CLSID_WORD = 
{ 0x00020906, 0x0, 0x0, { 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x46 }}; 

/* Excel Worksheet (*.xls) : {00020820-0000-0000-C000-000000000046} */ 
static const GUID CLSID_EXCEL = 
{ 0x00020820, 0x0, 0x0, { 0xC0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x46 }}; 

/* PPT Presentation (*.ppt) : {64818D10-4F9B-11CF-86EA-00AA00B929E8} */ 
static const GUID CLSID_PPT = 
{ 0x64818D10, 0x4F9B, 0x11CF, { 0x86, 0xEA, 0x0, 0xAA, 0x0, 0xB9, 0x29, 0xE8 }}; 


void IDFileType(BSTR bstrFile) 
{ 
HRESULT    hr = S_OK; 
IStorage*  pStg = NULL; 
STATSTG    ST; 
char*      pszApp; 

if(NULL == bstrFile) return; 

/* Open 

new가 실패했을때의 처리

데브피아 김용현님의 글

 

보통 프로그래밍을 할때 new에 대한 실패 처리는 해주지 않고 코딩을 합니다.

 

문자열이나 new 를 쓰지 않는 어플리케이션은 없다고 해도 틀린말은 아니고 다음과 같은 코드는 일반적으로 많이 쓰이는 코드 입니다.
char* szName = new char[128];
new 에 대한 에러 처리는 하지 않습니다. 만일, 아주 큰 new 를 많이 해야 할 경우라던지, 특수한 환경의 임베디드라면, 가끔 new 에 대한 방어코딩을 하고 싶을때가 있습니다. 그럴때 대부분 다음과 같은 코드를 작성합니다.
char* szName = new char[128]; 
if(!szName)
    NewFail();

 

그러나 위와 같은 코드는 옳지 않고 동작하지 않습니다. 테스트를 할때에도 new가 할당 실패하는경우는 거의 없으므로 프로그래머는 위와 같은 코드가 동작하지

MS VC++6.0 프로젝트를 svn에 넣을 때 ignore 시킬 파일들

MS VC++6.0 프로젝트를 svn에 넣을 때 ignore (무시) 시킬 파일들 목록


아래의 파일들은 프로젝트를 열거나 컴파일 하면 자동으로 생성되는 파일이므로 svn 에 추가해줄 필요가 없다.


*/Debug */Release *.aps *.ncb *.opt *.plg *.scc *.clw *.positions *. obj *.idb *.res *.pch *.trg *.exp *.tlb *.[Tt]mp *.~* *.[Bb][Aa][Kk] *.tlh *.tli *_i.c *_p.c dlldata.c