OFFICE 59

MFC에서 비트맵을 다루는 방법.

일단 비트맵을 출력하려면 2개의 DC가 필요하다. 1. 비트맵이 출력될 화면 윈도우의 DC 2. 메모리에 만들어진 DC CClientDC WinDC(this); // 클라이언트의 DC를 받아온다. CDC MemDC; // 메모리에 상주하기 위해서 DC를 생성한다. 3. 그 후 서로 호환이 되도록, 연결하여준다. MemDC.CreateCompatibleDC(&WinDC); // 클라이언트 DC의 주소값을 넘겨준다. 4. 비트맵 읽어온다. CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP11) ; // 리소스를 불러온다. Bitmap bmpInfo; bitmap.GetBitmap(&bmpInfo); // 비트맵 객체에 받아와서, 비트맵 정보를 알 수 있다. 5. 비트맵을 DC에..

OFFICE/프로그램 2011.07.20

#ifndef #else endif 에 대해서..

어떤 소스파일에 #include #include 이렇게 두 번의 정의가 있다고 가정하자. 안에는 #define A 10 이라고 적혀있다. 그렇다면 컴파일시, 2번 중복정의로 인해서 에러가 발생한다. 그래서 ifndef ... 을 사용하는 것이다. #ifndef A_H #define A_H #define A 10 #endif 중간소스... #ifndef A_H #define A_H #define A 10 #endif 이렇게 정의하면, 처음에는 A_H가 정의되어 있지 않으니 define A_H define A 10 을 수행한다. 하지만 동작하다가 다시 만나면, 이미 정의되어 있기 때문에 다음번에는 무시하고 endif를 수행한다. 이렇게 중복된 선언을 막을 수 있게 해준다. Mil.h 파일에도 동일한 내용이 ..

OFFICE/프로그램 2011.07.14

Mil 기초적 파악사항 - 2

Mil과 Mil Lite, Active Mil 과의 차이점.?? Mil - Lite의 경우는 Matrox Frame Grabber 설치를 위한 Driver를 제공하며 기본적인 Frame Grabber기능 즉 영상획득 디스플레이 , 영상 로드, 저장이 가능한 모듈들로 구성되어 있습니다. 주로 영상을 획득하여 이미지 확인 및 이에 대한 저장을 위해 많이 사용되며, 이미지 데이타를 직접 접근하여 독자적인 프로세싱처리 및 알고리즘을 적용할 수 있습니다. MIL의 경우에는 MIL-lite에서 제공하는 기능을 포함하며 영상처리를 위해 사용되는 알고리즘이 쉽게 사용할 수 있는 함수로 구현되어 있습니다. 즉 이미지 프로세싱 패턴 매칭 OCR blob Measurement등의 기능을 함수로써 제공하므로 누구나 쉽게 사용..

OFFICE/프로그램 2011.07.13

Mil 기초적 파악사항 - 1

Mil을 이용한 프로그래밍을 위해서는 라이브러리에 대한 기본적인 구조를 알아야한다. 카메라로부터 영상을 획득해 디스플레이 하거나, 처리를 해주기 위해서는 다음과 같은 5가지 요소가 필요합니다. 먼저 이 5가지 요소에 대한 선언을 해주고 프로그램 초기화부분에 Allocate해줍니다. 마지막으로 프로그램이 종료할때 Free를 해주면 됩니다. ■ 선언 MIL_ID Application; MIL_ID System; MIL_ID Digitizer; MIL_ID Display; MIL_ID Buffer; ■ Allocate MappAlloc() // Application 할당 MsysAlloc() // 프레임그래버 할당 MdigAlloc() // 카메라 할당. MdispAlloc() // 디스플레이 할당 Mbuff..

OFFICE/프로그램 2011.07.12

Mil시스템 구조

1. Mil / Mil-Lite Modules - Application, System, Buffer, Display, Digitizer, Graphics context, Threading 으로 구성되어 있습니다. mfc에서 new와 delete가 존재하듯이 각각의 모듈들은 생성 및 소멸되어야 합니다. 각각의 모듈들은 다음과 같다. 간단하게 알아보자. Application 모듈 : Application - 어떤 프로그램이든 하나만 존재한다. - Mapp..()함수들은 Application환경을 제어합니다. -> 리소스 초기화, 에러 메시지 및 사용자 정의 함수 들을 제어 할 수 있습니다. ex) MappAlloc() System모듈 : System - 프레임 그래버를 지칭하며, 이용하는 갯수에 따라 추가가..

OFFICE/프로그램 2011.07.12

Mil설치시 컴파일시에 LINK : fatal error LNK1104: cannot open...

컴파일 할때 mil library를 찻지 못해서 나타나는 오류이다. Tools> options > Directories탭에서 library디렉토리를 추가한다. 일반적인 경우는 c:\프로그램파일\매트록스 \ 밀\ 라이브러리\winnt\msc\dll 에 있다. include 파일도 같다. c:\프로그램파일 \매트록스\밀\인클루드 혹시 이미 만들어진 소스에서 에러가 날 경우. workspace에 view 에 있는 *.lib파일을 삭제하고 다시 컴파일을 해야한다. 또한 프로젝트 마다 링크 설정을 해 줘야한다. 프로젝트 -> 세팅 -> 링크 -> 오브젝트/라이브러리 모듈 : mil.lib 를 추가해야한다.

OFFICE/프로그램 2011.07.12

Dialog 생성 방법에 대해

대화상자에는 2가지 방식이 있다. Modal 형과 Modaless 형이다. 모달형은 그 대화상자가 닫히기 전에는 다른 작업을 할 수 없는 상태이다. 모달리스 형은 그 대화상자가 떠 있어도, 사용이 가능하다. Modal형 대화상자 만드는 방법. Mydlg dlg; dlg.Domodal(); // 이렇게 하면 대화상자는 생성된다. -> 닫을때는 EndDialog 함수를 사용한다. Modaless형 대화상자 만드는 방법 모달리스 형은 일반 윈도우와 같은 형태로, Create 형으로 만들어 준다. 객체 생성도 주소값을 받아서 사용한다. Mydlg *dlg; dlg = NULL; if( dlg != NULL ) { dlg->SetFocus(); // 이미 대화상자가 열려있을 경우는 포커스를 받아온다 } else{..

OFFICE/프로그램 2011.07.07

마우스 캡쳐할때 중요한 점

마우스를 캡쳐할 시에 주의 할 점. SetCapture(); // 마우스를 캡쳐를 핟나. ::ReleaseCapture(); // 마우스 캡쳐를 해제한다. GetCapture(); // 현재 어느 윈도우가 마우스를 캡쳐중인지 확인한다. ::GetCursorPos(&point); // 현재의 포인트를 받아서CPoint ptClient= point;ScreenToClient(&ptClient); // 클라이언트 좌표로 변환한다. LButtonDown 이벤트시에 그 포인트를 가지고, 도형을 그리거나 할시에 CClientDC dc(this) ; dc.SetMapMode(MM_LOWMETRIC); // 매핑모드를 변경한다. CPoint pt = point // 좌표를 가져온다. dc.DCtoLP(&pt); // ..

OFFICE/프로그램 2011.07.06

메뉴 보이거나 사라지거나

메뉴 사라지게 할때 SetMenu(NULL); if(m_wndToolBar.IsFloating() == TRUE) m_wndToolBar.GetDockingFrame()->ShowWindow(SW_HIDE); else m_wndToolBar.ShowWindow(SW_HIDE); 메뉴 보이도록 할 경우 SetMenu( CMenu::FromHandle(m_hMenuDefault) ); if(m_wndToolBar.IsFloating() == TRUE) m_wndToolBar.GetDockingFrame()->ShowWindow(SW_SHOW); else m_wndToolBar.ShowWindow(SW_SHOW); SetMenu(NULL) 을 하면 메뉴가 사라진다. m_hMenuDefault는 CFrameWn..

OFFICE/프로그램 2011.07.06