본문 바로가기

MFC

MFC OpenGL 세팅하기 1. glut-3.7.6-bin.zip 파일을 다운받아 압축을 푼다. 2. glut.h, glut32.lib, glut32.dll 3개의 파일을 각각 아래의 위치에 복사해 넣는다. - glut.h : "C:\Program Files\Microsoft Visual Studio 8\VC\include\GL" - glut32.lib : "C:\Program Files\Microsoft Visual Studio 8\VC\lib" - glut32.dll : "C:\WINDOWS\system32" 3. visual studio에서 프로젝트->속성 메뉴 4. 구성속성->링커->입력 메뉴로 이동 5. 추가종속성란에 opengl32.lib glu32.lib glut32.lib glaux.lib 입력한다. 더보기
Visual Studio의 유용한 단축키 모음~ Visual Studio에서 자주 사용되는 단축키 모음입니다. 다 쓰지는 않겠지만 몇 개 정도 알아두면 도움이 되겠지요...^^;; Ctrl + Space : 인텔리센스 출력 Ctrl + F5 : 빌드 후 프로그램 실행 F5 : Debugging 모드로 작동 F9 : Break Point Ctrl + F2 : 북마크 F2 : 북마크로 이동 F10 : Debugging 모드로 작동하되 엔트리 포인트부터 시작 Ctrl + F10 : Debugging 모드로 작동하되 커서의 위치까지 Alt + F8 : 들여쓰기 정리 Ctrl + Shite + Space : 현재 가르키고 있는 함수의 매개변수 보기 Alt + B -> E : Clean Alt + B -> R : Rebuild All Ctrl + E : 현재 괄.. 더보기
CString과 char*간의 변환 - CString을 char* 로 변환하기 1. memcpy 사용하기 CString str = "test"; unsigned char st[30]; memcpy(st, (unsigned char*)(LPCTSTR)str,i); 2. strcpy 사용하기 CString strData = "test"; int length = strData.GetLength(); char* st = new char[length]; strcpy(st, strData.GetBuffer(0)); 3. 형변환 사용하기 CString str; str = "test"; char* st = LPSTR(LPCTSTR(str)); - char* 를 CString으로 변환하기 CString클래스의 Format함수를 사용 char st[] = .. 더보기
Dialog에 카메라 영상 띄우는 간단한 기본소스 OpenCV를 이용해 Dialog에 카메라 영상을 띄우는 간단한 소스이다. 말 그대로 영상을 띄우기만 하는 소스이다. ㅋ 카메라 연결과 관련된 부분은 Connect_camera 함수이고 CallBack함수 내에서 IplImage구조체를 이용하여 영상 데이터를 가지고 하고 싶은 걸 맘대로 하면된다. 카메라 선택창이 뜨지 않고 PC에 기본으로 설정된 카메라와 바로 연결된다. 뭐 하나 할때마다 카메라 연결 세팅하는게 귀찮아~ㅋ 더보기
Microsoft Platform SDK 설치 및 세팅 Microsoft사의 최신 Platform SDK이다. 뭐...이런 저런 용도로 많이 쓰이겠지만 이번에 GDI+를 쓸 일이 생겨서 설치를 했다...ㅋ 기본경로로 설치를 하게 되면 아래와 같은 경로를 가지게 될 것이다. 비주얼 스튜디오에 세팅을 할 때 착오없으시길....ㅎㅎ "C:\Program Files\Microsoft Platform SDK" 비주얼 스튜디오에 세팅은 Tools->Option메뉴로 들어가서 Show directories for 부분에 include files에서는 아래 그림과 같이 Show directories for 부분에 Library files에서는 아래 그림과 같이 해주면 된다. 더보기
다이얼로그의 배경색 바꾸기 다이얼로그 기반으로 프로그램을 하다보면 회색의 우중충한 다이얼로그 색 때문에 내 기분까지 우울해진다... 사실 그렇지는 않지만 언젠가 필요할 다이얼로그의 배경색을 바꾸는 법은 다음과 같이 OnEraseBkgnd() 함수의 재정의를 통해서 가능하다. BOOL XXXXXXX::OnEraseBkgnd(CDC* pDC) { CRect winRC; GetClientRect(winRC); CBrush bkBrush(RGB(0, 0, 100)); CBrush* pOldBrush = pDC->SelectObject(&bkBrush); pDC->Rectangle(winRC); pDC->SelectObject(pOldBrush); return TRUE; } OnEraseBkgnd()가 Class Wizard의 Messag.. 더보기
타이틀바가 없는 다이얼로그의 이동 타이틀바가 없는 다이얼로그 또는 타이틀바가 아니라 다른 부분을 클릭해도 다이얼로그의 이동이 가능하게 해야 할 경우 다음과 같이 OnLButtonDown() 내에서 PostMessage를 이용하여 다음과 같은 메시지를 발생시키면 이동이 가능하다. PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); WM_NCLBUTTONDOWN은 wParam으로 주어진 곳의 클라이언트을 클릭했다고 하더라도 클라이언트 영역이 아닌 곳을 클릭한 것과 같은 효과를 주며 wParam이 HTCAPTION이므로 클라이언트 영역을 클릭했어도 타이틀바를 클릭한 것과 같은 효과를 주는 것이다. wParam으로 가능한 여러가지 값들은 다음과 같다. HTTOP : 크.. 더보기
다이얼로그 기반 프로그램에서 실행과 동시에 다이얼로그 감추기 다이얼로그를 domodal로 띄울 때 실행과 동시에 다이얼로그를 트레이로 내리거나 감추어야 할 경우 일반적으로 사용하는 방법으로 윈도우를 보이지 않게 하려면 ShowWindow(FALSE); 와 같이 하면 되지만 다이얼로그 기반의 프로그램에서는 DoModal 함수가 내부적으로 WM_SHOWWINDOW 메시지를 사용하여 윈도우를 띄워버리기 때문에 OnInitalDialog나 OnCreate 처리기에서 인위적으로 ShowWindow(SW_HIDE); 라고 코딩을 해놓아도 해당 작업이 무시되어 버린다. 이러한 문제가 발생하는 이유는 DoModal 함수가 내부적으로 메시지 루프를 형성하기 직전에 SendMessage를 이용하여 대화상자를 출력시키는 방법을 사용하기 때문이다. SendMessage를 보낸 쪽은 받.. 더보기
Dialog의 class name 강제로 바꿔서 사용하기 MFC를 이용해 여러 개의 다이얼로그를 가지는 프로그램을 만들 때 한쪽 다이얼로그에서 다른 어떤 다이얼로그로 메세지를 날려줘야할 상황이 생기면 유용한 팁입니다. 특히나 메세지를 받는 쪽 다이얼로그가 캡션이 없는 다이얼로그고 클래스 네임을 이용해서 핸들을 얻어야 할 때 말이죠. SendMessage를 이용해서 특정 다이얼로그로 이벤트를 날릴려면 먼저 FindWindow함수를 이용해서 받는 쪽 다이얼로그의 핸들을 얻어와야겠죠. FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName ); FindWindow함수의 원형은 위와 같습니다. 앞 쪽의 인자가 클래스 네임이 되고, 뒤 쪽의 인자가 윈도우의 캡션입니다. 하지만 위에서 말씀드렸다시피 다이얼로그의 캡션이 없기.. 더보기
윈도우 해상도 정보 가져오기 윈도우 해상도 정보를 가져오는 방법으로 간단하게 두 가지를 들 수 있습니다. 1) CRect rect; //윈도우 해상도를 저장할 Rect형 변수 GetDesktopWindow()->GetWindowRect(rect); 저렇게 하면 변수 rect에 윈도우 해상도가 저장이 됩니다. 2) int x, y; x = GetSystemMetrics(SM_CXMAXTRACK); y = GetSystemMetrics(SM_CYMAXTRACK); 저렇게 해주면 x와 y에 각각 윈도우 해상도의 가로와 세로 값이 저장됩니다. 간단하네요 ㅋ 더보기