본문 바로가기

Development/MFC

[TIP] 빌드 이벤트 활용방법 오늘은 Visual Stuido 2003 부터 제공이 되어왔던 빌드 이벤트(Build Event) 에 대해서 알아보자. 종종 굉장히 편리하게 사용되는 기능이니 한번쯤 알아놓는 것도 도움이 될 것 같다. 여기에서 사용하는 툴은 Visual Studio 2005 Team Suite 기준이다.  빌드 이벤트 빌드 이벤트는 이름에서 알 수 있듯이 빌드(소스코드 컴파일) 작업을 할 때 발생하는 VS.NET IDE 에서 발생하는 이벤트이다. 빌드 이벤트는 다음의 두가지 단계에 거쳐 이벤트를 줄 수 있다.l 빌드 전 이벤트l 빌드 후 이벤트 빌드 전 이벤트는 개발자가 빌드를 수행하기 전에 발생하는 이벤트이다.빌드 후 이벤트는 다시 빌드 후 이벤트는 총 3가지 옵션을 선택할 수 있다.l 항상 허용l 빌드가 성공한 경우.. 더보기
Visual Studio 빌드 이벤트 매크로변수 빌드 이벤트의 매크로로, 다음과 같은 값을 반환한다. (MSDN 참조) 매크로설명$(ConfigurationName)현재 프로젝트 구성의 이름입니다. 예: "Debug|Any CPU"$(OutDir)출력 파일 디렉터리의 경로로서 프로젝트 디렉터리에 대해 상대적인 경로입니다. 이 경로는 출력 디렉터리 속성의 값이 됩니다. 뒤에는 백슬래시('\')가 붙습니다.$(DevEnvDir)드라이브와 경로로 정의되는 Visual Studio 2005의 설치 디렉터리로, 뒤에는 백슬래시(\)가 붙습니다.$(PlatformName)현재 대상 플랫폼의 이름입니다. 예: "AnyCPU".$(ProjectDir)드라이브와 경로로 정의되는 프로젝트의 디렉터리로, 뒤에는 백슬래시(\)가 붙습니다.$(ProjectPath)드라이브,.. 더보기
VC++(MFC)에서 ADO와 ADOX를 이용한 MDB 파일 생성 / 연동 / 압축에 관한 모든 것 VC++(MFC)에서 MDB 생성 / 압축 / 연동 □ 개 요○ Access로 생성하는 DB 파일인 MDB 파일의 생성과 압축 및 기본 DB연동(데이터의 추가, 삭제, 검색, 수정)에 대한 내용○ 다이얼로그 기반의 MFC 프로젝트 상에서 위의 작업들을 수행하는 CDataBase라는 사용자 정의 클래스를 만들고 구현 □ 준비 작업○ stdafx.h에 다음을 import 한다./* DB 사용을 위한 설정*/#import "C:\Program Files\Common Files\System\ADO\msado15.dll" rename("EOF", "EndOfFile") /* DB 파일 압축을 위한 설정*/#import "C:\Program Files\Common Files\System\ado\msjro.dll" .. 더보기
MDB를 연결해서 사용해보자 #include  // CDatabase, CRecordset 선언된 헤더AfxOleInit(); // VC++6 에서는 꼭 해줘야 했는데, VS2010 안해도 되었음.try {   CString strConnection(L"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=kListDB.mdb;UID=/*ID*/;PWD=/*암호*/");   // ID, 암호 없으면 입력 안함   CDatabase db;   if (db.OpenEx (strConnection/*, CDatabase::noOdbcDialog*/) == FALSE)      throw _T("데이터베이스 접속실패!");    ///////----- 쿼리문   CString strQuery = _T("selec.. 더보기
CString으로 문자열 리소스를 이용하자 문자열을 스트링 테이블에 담아놓고 사용하는게 좋다고들 말하지만 쓰기가 귀찮아서 그냥 소스에 적는 경우가 많습니다.하지만 CString에서는 스트링 테이블 사용을 쉽게 하기 위한 좋은 방법을 많이 제공합니다. 적극 활용하시기 바랍니다.혹시 압니까? 프로그램이 평가가 좋아서 수출하게 됐는데 CPP코드 죄다 뒤져가면서 "아, 여기도 문자열이 있다" "아, 100개쯤 더 있는데 어디지..." 라고 하면서 밤을 새게 될지.미리 스트링 테이블에 넣어뒀다면. "아저씨, 이거 일본어로 번역해주세요." 라고 하면서 번역 잘하는 사람에게 넘기면 끝이란 것이죠. 음하하!1. 초기화123CString strError((LPCSTR)IDS_ERROR_FAILED); strError += "너 바보?"; WriteLog(strE.. 더보기
문자열 함수 정리 1. stpcpy원형 : char *stpcpy( char *dest, char *src );헤더 : string.h기능 : 문자열 src를 문자배열 dest로 복사한다. dest 의 길이가 src 보다 작은 경우 dest 뒤의 인접 데이터가 파괴된다.리턴 : dest + strlen(src)의 번지를 리턴 2. strcat원형 : char *strcat( char *dest, const char *src );헤더 : string.h기능 : 문자열끼리 연결한다. dest의 널문자 위치에 src가 붙는다. dest의 길이가 ( dest 문자열 + src 문자열 ) 길이보다 작을 경우 인접 데이터가 파괴된다.리턴 : dest의 번지가 리턴 3. strchr원형 : char *strchr( const *src.. 더보기
CString으로 문자열 리소스를 사용하자 문자열을 스트링 테이블에 담아놓고 사용하는게 좋다고들 말하지만 쓰기가 귀찮아서 그냥 소스에 적는 경우가 많습니다. 하지만 CString에서는 스트링 테이블 사용을 쉽게 하기 위한 좋은 방법을 많이 제공합니다. 적극 활용하시기 바랍니다. 혹시 압니까? 프로그램이 평가가 좋아서 수출하게 됐는데 CPP코드 죄다 뒤져가면서 "아, 여기도 문자열이 있다" "아, 100개쯤 더 있는데 어디지..." 라고 하면서 밤을 세게 될지. 미리 스트링 테이블에 넣어뒀다면. "아저씨, 이거 일본어로 번역해주세요." 라고 하면서 번역 잘하는 사람에게 넘기면 끝이란 것이죠. 음하하! 1. 초기화 CString strError((LPCSTR)IDS_ERROR_FAILED); strError += "너 바보?"; WriteLog(st.. 더보기
CString Method 설명 CString::GetLength이 메소드는 CString 객체 안에 있는 캐릭터의 count를 반환한다.이 count는 종료null문자를 포함하지 않는다.// example for CString::GetLength CString s( "abcdef" ); ASSERT( s.GetLength() == 6 ); CString::IsEmpty이 메소드는 CString 객체가 비어있는지를 결정한다.// example for CString::IsEmpty CString s; ASSERT( s.IsEmpty() ); CString::Empty이 메소드는 CString객체를 비어있고 free memory로 만든다.// example for CString::Empty CString s( "abc" ); s.Empty.. 더보기
VC++에서 MFC나 #import를 사용하지 않고 Excel을 자동화하는 방법 인터넷에서 ExcelLib라는 소스를 구했다. URL은 http://getroot.tistory.com/entry/Excel-Automation-Library 이곳에 가면 해당 소스를 무료로 오픈하여 사용할 수 있도록 했고, 사용법과 약간의 덧글들도 달려있다. 이 소스를 자세히 뜯어보니 http://support.microsoft.com/kb/216686/ko 여기의 내용을 참고하여 만들어진 듯하다. 인터넷을 좀더 찾아보니 Excel Automation에 관련된 소스가 몇가 있어, 분석을 했지만 ExcelLib가 내가 사용하는데 무리가 없어보여 선택했다. 하지만, 프로젝트를 하면서 이 소스만 가지고 작업이 불가능하여 몇가지 기능(이미지 삽입, 시트 복사 등)을 추가했다. 이 소스를 사용하는데 나름 중요한.. 더보기