OFFICE/프로그램 54

대화상자 생성시 크기조절 하는방법

CWinDlg 클래스에 멤버함수인 OnInitDialog()에 //! Dialog의 크기를 PC 화면에 꽉 채운다. (산업용 PC의 모니터 해상도 1280 X 1024에 맞춘다) //! [주의 사항] wndTopMost 옵션을 사용하면 VC++의 Debugging 기능을 사용할 수 없게 되니 주의해야 한다. int iScreenWidth = 1280; int iScreenHeight = 1024; SetWindowPos(&wndTop, 0, 0, iScreenWidth, iScreenHeight, SWP_SHOWWINDOW); 아래와 같이 코드를 추가하면 된다.

OFFICE/프로그램 2011.07.28

MFC스레드 - 작업자 스레드

MFC가 제공하는 스레드는 특성에 따라 두 종류로 나뉜다. 1 작업자 스레드 : - 메시지 루프가 없다. - 메시지 루프가 없어, 화면에 보이지 않는 백그라운드 작업을 수행할 때 적합하다. 2. 사용자 인터페이스 스레드( UI스레드 ): - 메시지 루프가 존재한다. - 메시지 루프가 존재해서, 윈도우를 만들고 출력하거나 사용자 입력 받는등 처리에... 1. 작업자 스레드 - 작업자 스레드를 생성하는 핵심 함수는 AfxBeginThread() 이다. CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCre..

OFFICE/프로그램 2011.07.27

멀티스레드 기본이론

1. 멀티 스테드 , 멀티 태스킹의 으미 1-1. 멀티스레드 : 응용 프로그램이 여러개의 스레드를 동시에 실행한다. 1-2 멀티 태스킹 : 운영체제가 여러개의 프로세스를 동시에 실행한다. 프로세스는 실행중인 프로그램을 일컫는다. 프로그램을 실행하면, 하나의 프로세스가 실행된다 구성요소는 다음과 같다. - 가상주소공간 : 32비트 윈도우의 경루 4G - 실행파일과 DLL : 코드, 리소스, 데이터(전역, 정적변수) - 힙, - 환경변수 - 하나이상의 스레드 - 프로세스 커널객체 - 운영체제가 프로세스를 위해 할당한 각종 자원 :파일, 소켓등등.. 도스나 유닉스와 같은 운영체제의 프로세스는 CPU시간을 할당받아 실행되는 동적인 개념이다. 그러나, 윈도우 운영체제의 프로세스는 할당된 메모리 영역에 각종 자원을..

OFFICE/프로그램 2011.07.27

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