분류 전체보기

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

    VC++ Data Type

    BOOL 논리 데이터 형(TRUE또는 FALSE) BYTE 8 비트 unsigned형 정수 WORD 16 비트 unsigned형 정수 UINT 32 비트 unsigned형 정수 DWORD 32 비트 unsigned형 정수 or 세그먼트:오프셋 주소 LONG 32 비트 signed형 정수 LPVOID 32비트 타입 지정이 없는 포인터 COLORREF 색상(color)을 표현하는 32비트 데이터 형 BSTR 32비트 문자형 포인터 LPSTR 32비트 문자열 포인터 LPCSTR 32비트 문자열 상수 포인터 WNDPROC 윈도우 함수에 대한 32비트 포인터 WPARAM, LPARAM 윈도우 함수 또는 Callback 함수의 인수로 넘겨주기 위한 32 비트 데이터 형 LRESULT 윈도우 함수 또는 Callbac..

    VC++ 컴파일/모드

    C/C++ Compiler Visual C++ 컴파일러는 C, C++ 구 소스 코드 다 컴파일 가능 Resource Compiler RC파일을 컴파일하여 링커에 필요한 .res 파일을 생성 *.rc : 텍스트 파일 * .res : 이진파일 Linker 컴파일러로 만든.obj 파일과 .res 파일을 읽고, LIB 파일과 결합하여, DLL과 연결하여 EXE 파일을 생성 Debugger C에서와 같이 로그를 출력하여 확인하거나 중단점(BreakPoint)을 설정해서 해당 부분에 멈추거나, 한 문장씩 코드를 실행해서 값들을 볼 수 있음 Debug 모드 프로그램 코드를 생성(Build 과정에서 디버깅 정보가 실행 파일에 포함) 실행 파일에 디버깅 정보가 포함되기 때문에 실행 파일이 원래보다 크게 생성됨 Relea..

    [VC++] MessageBox

    MessageBox(내용, 타이틀, 버튼형태); 반환 값 : int 버튼 형태 : MB_YESNO 반환값 : IDYES, IDNO MB_OK 반환값 : IDOK 코딩 형태 : ex1) int nButtonValue = MessageBox(_T("Description"), _T("Title"), MB_YESNO); if(nButtonValue == IDYES) { AfxMessageBox(_T("Y")); } else if(nButtonValue == IDNO) { AfxMessageBox(_T("N")); } ex2) if(MessageBox(_T("Description"), _T("Title"), MB_YESNO) == IDOK) { AfxMessageBox(_T("OK")); }