Devlopment/C,C++,Ruby,Python

    [VC++] Debug모드와 Release모드

    Visual Studio에는 Debug모드와 Release모드가 있다. Debug 모드로 실행할 경우에는 _DEBUG 라는 매크로가 정의된다. 6에서는 메뉴의 [Build] > [Set Active Configuration]에서 설정할 수 있다. 2008 에서는 메뉴의 [Build] > [구성 관리자]에서 선택하거나 툴바에서 선택할 수 있다. 그래서 다음과 같은 코드를 작성할 수 있다. #ifdef _DEBUG // Debug 모드 코드 #else // Release 모드 코드 #endif 그러다가 이것을 활용한 아이디어를 Yagur님의 블로그에서 보게 되었다. (출처 : http://yagur.impon.net/entry/C%EC%9D%98-ifdef-DEBUG-%EB%8C%80%EC%9A%A9-%EB..

    [VC++] 레지스트리 삭제 (저장된 설정 삭제 방법)

    [VC++] 레지스트리 삭제 (저장된 설정 삭제 방법)

    여러가지 이유로 기존에 저장된 레지스트리를 삭제하고 시작해야 할 때가 있다. 이럴 때는 App의 InitInstance()내부에서 CleanState()메소드를 호출하면 된다. * 소스 코드 BOOL ClassNameApp::InitInstance() { .. // 적절한 내용으로 수정해야 합니다. SetRegistryKey(_T("로컬 응용 프로그램 마법사에서 생성된 응용 프로그램")); CWinAppEx::CleanState(); LoadStdProfileSettings(4); // MRU를 포함하여 표준 INI 파일 옵션을 로드합니다. InitContextMenuManager(); .. } 그 밖에 직접 레지스트리를 삭제해야 한다면 [윈도우]의 "실행"메뉴를 통해 다음에 regedit 라고 입력한다..

    [VC++] 비트맵 출력

    * Function // 이미지 출력 BOOL BitBlt(int x, int y, int nWidth, int nHeight, CDC *pSrcDC, int xSrc, int ySrc, DWORD dwRop); // Bitblt()와 같지만 크기 변경 가능 BOOL StretchBlt(int x, int y, int nWidth, int nHeight, CDC *pSrcDC, int xSrc, int ySrc, int nWidthSrc, int nHeightSrc, DWORD dwRop); * 비트맵 리소스 ID : IDB_BITMAP1 * Source // 해당 비트맵을 화면 전체에 그린다. CDC MemDC; CRect rect; GetClientRect(rect); MemDC.CreateCompa..

    [VC++] 맵 사용방식

    #include using namespace std; // 변수 선언 map mMap; // 삽입 mMap.insert(pair(_T("A"), 1000)); mMap.insert(pair(_T("B"), 2000)); mMap.insert(pair(_T("C"), 3000)); mMap.insert(pair(_T("D"), 4000)); // 출력 for(map::iterator it = mMap.begin(); it != mMap.end(); it++) { // 키 : it->first or (*it).first // 값 : it->second or (*it).second } // 검색 it = mMap.find(_T("A")); if(it == mMap.end()) { // 맵에 없음 } else ..

    [VC++] Extern과 Const

    * extern 외부 파일에 정의되어 있다는 뜻 * const 상수라고 생각하면 된다. read-only기능을 부여해줌 함수에서는 3가지 형태가 있다. 1. 파라미터에 const가 붙은 경우 해당 파라미터의 값은 수정 불가능해지고, 수정할 경우에 컴파일시 에러가 발생한다. 2. 함수 끝에 const가 붙은 경우 멤버 변수 전체가 수정 불가능해진다. 3. 반환값 앞에 const가 붙은 경우 리턴값은 정해진 값으로만 되어야 한다.

    [VC++] 스레드(Thread) 동기화

    1. 이벤트(Event) 순차적으로 수행해야 하는 작업을 두 개 이상의 스레드로 수행할 경우에 사용함 - 단일 스레드 CEvent g_Event; UINT Thread01(LPVOID pParam) { while(TRUE) { g_Event.Lock(); ... } } // Lock을 푸는 방법 g_Event.SetEvent(); - 두 개 이상의 스레드 CEvent g_Event(FALSE, TRUE); UINT Thread01(LPVOID pParam) { while(TRUE) { g_Event.Lock(); ... } } // Lock을 푸는 방법 g_Event.SetEvent(); g_Event.ResetEvent(); 2. 크리티컬 섹션(Critical Section) 스레드가 두 개 이상의 리..

    [VC++] 다이어로그(Dialog) 도킹(Docking) 하기

    [VC++] 다이어로그(Dialog) 도킹(Docking) 하기

    VC++ 2008에서 다이어로그를 도킹하려고 하려고 했는데 제대로 되지 않았다. 하다보니 도킹형태가 프로젝트 생성과정에 따라서 다르게 코딩해야 된다는 것을 알았다. VC++2008에서 기존의 방법대로 만들기 위한 내가 한 생성 방법은 다음과 같다. 이전의 도킹 방법은 사용자 인터페이스에서 클래식 메뉴를 사용함으로써 되는것 같다. 응용프로그램 종류 응용프로그램 종류 :단일문서 프로젝트 스타일 : MFC표준 사용자 인터페이스 기능 명령 모음(메뉴/도구 모음/리본) : 클래식 메뉴 사용 코딩 * 도킹할 다이어로그 생성 (이건 꼭 해주어야 함) ID : IDD_DIALOG1 Border : None Style : Child MainFrame.h public: CDialogBar m_DockingBar; Main..

    [VC++] 파일 입출력시 버퍼 크기 문제

    파일 입출력시에 버퍼를 담을 char* 변수의 크기를 버퍼크기만큼만 할당할 경우에 끝에 濟濟濟濟濟濟羲羲羲濟濟濟濟 와 같이 나올 수 있다. 버퍼의 끝에 '\0'을 넣어주지 않아서 생기는 문제이다. char* buf[length ]; buf[length] = '\0'; 과 같이 해결해주면 된다.

    [VC++] 쓰레드

    쓰레드 선언 .h public: static UINT ThreadName(void *lParam); 쓰레드 정의 .cpp UINT ClassName::ThreadName(void *lParam) { // return 0; } 실행 AfxBeginThread(ThreadName, this); 쓰레드 선언 규칙 리턴값 : UINT 매개 변수 : void* lParam

    VC++ 변수 표기법

    헝가리언 표기법(Hungarian Notation) 변수들을 정의할 때 데이터형을 알아보기 쉽도록 접두어를 붙여 표기하는 것. 접두사 의미 접두사 의미 a Array lp Long Pointer ai Integer Array lpfn Function Pointer b Boolean lpsz String Pointer by Unsigned Char(Byte) m Data member of a class c Char n Short or Int cb Count of bytes np Near Pointer cr Color Reference Value p Pointer cx, cy Short(count of x, y length) psz String Pointer dw Unsigned long(dword) s S..