'2008/04'에 해당되는 글 4건
- 2008/04/24 홀로그램을 이용한 인터랙션...
- 2008/04/22 Dialog의 class name 강제로 바꿔서 사용하기
- 2008/04/18 반복의 힘...
- 2008/04/16 IplImage 구조체
홀로그램을 이용한 인터랙션인거 같군요...
홀로그램 기술이 이 정도까지 되었다니...스타워즈에서 봤던 장면을 곧 실제로
볼 수도 있을거 같군요...허허
'Ubiquitous & IT' 카테고리의 다른 글
| 닌텐도 Wii Remote를 이용한 Head Tracking (0) | 2008/06/02 |
|---|---|
| 윈도우 비스타의 AERO와 우분투 리눅스의 BERYL 비교 동영상 (0) | 2008/05/22 |
| MS의 차세대 터치 스크린 서피스 (0) | 2008/05/22 |
| MS사의 벽걸이형 터치 컴퓨터 Touch Wall (0) | 2008/05/15 |
| Sanyo에서 나온 8cm에서 80인치를 투영하는 세계 최단거리 프로젝터 LP-XL50 (0) | 2008/05/10 |
| 홀로그램을 이용한 인터랙션... (0) | 2008/04/24 |
MFC를 이용해 여러 개의 다이얼로그를 가지는 프로그램을 만들 때
한쪽 다이얼로그에서 다른 어떤 다이얼로그로 메세지를 날려줘야할 상황이 생기면 유용한
팁입니다. 특히나 메세지를 받는 쪽 다이얼로그가 캡션이 없는 다이얼로그고 클래스 네임을 이용해서 핸들을 얻어야 할 때 말이죠.
SendMessage를 이용해서 특정 다이얼로그로 이벤트를 날릴려면 먼저 FindWindow함수를 이용해서 받는 쪽 다이얼로그의 핸들을 얻어와야겠죠.
FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName );
FindWindow함수의 원형은 위와 같습니다. 앞 쪽의 인자가 클래스 네임이 되고, 뒤 쪽의 인자가 윈도우의 캡션입니다. 하지만 위에서 말씀드렸다시피 다이얼로그의 캡션이 없기 때문에 클래스 네임을 이용해서 찾아야겠지요. 하지만 Visuak Studio의 Spy++를 이용해서 클래스 네임을 찾아보면 아래와 같이 나옵니다. 아마 다이얼로그 기반으로 만들면 모두 저런 식으로 나올겁니다.
#32770은 CDialog의 상속을 받아 만들어진 다이얼로그의 기본 클래스 네임입니다. 저런 클래스 네임으로는 정확한 핸들을 얻을 수 없습니다.
하지만 강제적으로 다이얼로그의 클래스 네임을 바꿔서 사용하면 정확한 핸들을 얻을 수 있게 되겠죠. 강제적으로 클래스 네임을 바꾸는 방법은 아래와 같습니다.
1. 프로젝트에 삽입한 다이얼로그를 클래스로 추가합니다.
저는 CCaliibDlg라는 이름의 클래스로 추가하였습니다.
그림이 조잡하지만 어쩌겠습니까...ㅡㅡ;;
2. 해당 프로젝트 폴더 내의 .rc 확장자의 리소스 파일을 메모장으로 열어서 다음과 같이 CLASS 속성을 추가하고 클래스 네임으로 사용할 이름을 넣어줍니다.
3. 다음으로 해당 다이얼로그 클래스의 생성자에 다음과 같은 코드를 추가합니다.
4. 컴파일 후 실행을 시키고 Spy++로 찍어보면~
위의 그림처럼 클래스 네임이 나오게 됩니다. 그럼 저 클래스 네임을 이용해서 핸들을 얻어 사용하면 되겠죠.
한쪽 다이얼로그에서 다른 어떤 다이얼로그로 메세지를 날려줘야할 상황이 생기면 유용한
팁입니다. 특히나 메세지를 받는 쪽 다이얼로그가 캡션이 없는 다이얼로그고 클래스 네임을 이용해서 핸들을 얻어야 할 때 말이죠.
SendMessage를 이용해서 특정 다이얼로그로 이벤트를 날릴려면 먼저 FindWindow함수를 이용해서 받는 쪽 다이얼로그의 핸들을 얻어와야겠죠.
FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName );
FindWindow함수의 원형은 위와 같습니다. 앞 쪽의 인자가 클래스 네임이 되고, 뒤 쪽의 인자가 윈도우의 캡션입니다. 하지만 위에서 말씀드렸다시피 다이얼로그의 캡션이 없기 때문에 클래스 네임을 이용해서 찾아야겠지요. 하지만 Visuak Studio의 Spy++를 이용해서 클래스 네임을 찾아보면 아래와 같이 나옵니다. 아마 다이얼로그 기반으로 만들면 모두 저런 식으로 나올겁니다.
#32770은 CDialog의 상속을 받아 만들어진 다이얼로그의 기본 클래스 네임입니다. 저런 클래스 네임으로는 정확한 핸들을 얻을 수 없습니다.
하지만 강제적으로 다이얼로그의 클래스 네임을 바꿔서 사용하면 정확한 핸들을 얻을 수 있게 되겠죠. 강제적으로 클래스 네임을 바꾸는 방법은 아래와 같습니다.
1. 프로젝트에 삽입한 다이얼로그를 클래스로 추가합니다.
저는 CCaliibDlg라는 이름의 클래스로 추가하였습니다.
그림이 조잡하지만 어쩌겠습니까...ㅡㅡ;;
2. 해당 프로젝트 폴더 내의 .rc 확장자의 리소스 파일을 메모장으로 열어서 다음과 같이 CLASS 속성을 추가하고 클래스 네임으로 사용할 이름을 넣어줍니다.
3. 다음으로 해당 다이얼로그 클래스의 생성자에 다음과 같은 코드를 추가합니다.
4. 컴파일 후 실행을 시키고 Spy++로 찍어보면~
위의 그림처럼 클래스 네임이 나오게 됩니다. 그럼 저 클래스 네임을 이용해서 핸들을 얻어 사용하면 되겠죠.
'Programming Tips > MFC' 카테고리의 다른 글
| 다이얼로그의 배경색 바꾸기 (2) | 2008/05/20 |
|---|---|
| 타이틀바가 없는 다이얼로그의 이동 (0) | 2008/05/17 |
| 다이얼로그 기반 프로그램에서 실행과 동시에 다이얼로그 감추기 (0) | 2008/05/08 |
| Dialog의 class name 강제로 바꿔서 사용하기 (0) | 2008/04/22 |
| 윈도우 해상도 정보 가져오기 (0) | 2008/03/26 |
| MFC에서 현재 실행 중인 응용프로그램 목록 얻어오기 (2) | 2008/03/19 |
반복의 힘
한 방면에 관심을 가지고
많은 노력을 기울이다 보면 그 방면에서 만큼은
남들이 모르는 세계를 점점 깊이 알게 된다.
연습이 대가를 만든다고 했듯이 연마하면 할수록
그만큼 숙달되는 것이다. 반복을 거듭하는 동안
힘이 쌓이고 거룩한 세계에 도달하게 된다.
반복은 자기 한계를 깨뜨리는 작업이다.
- 지광의《정진/행복을 부르는 힘》중에서 -
이것도 반복이고 경험이겠지.
만약에...다음에 또 이런 일이 있을때는
지금보다 더 슬기롭게 잘 대처하게 해줄
힘이 되겠지.
한 방면에 관심을 가지고
많은 노력을 기울이다 보면 그 방면에서 만큼은
남들이 모르는 세계를 점점 깊이 알게 된다.
연습이 대가를 만든다고 했듯이 연마하면 할수록
그만큼 숙달되는 것이다. 반복을 거듭하는 동안
힘이 쌓이고 거룩한 세계에 도달하게 된다.
반복은 자기 한계를 깨뜨리는 작업이다.
- 지광의《정진/행복을 부르는 힘》중에서 -
이것도 반복이고 경험이겠지.
만약에...다음에 또 이런 일이 있을때는
지금보다 더 슬기롭게 잘 대처하게 해줄
힘이 되겠지.
'좋은 글...멋진 글...' 카테고리의 다른 글
| 강을 거슬러... (0) | 2008/06/09 |
|---|---|
| S.T.O.P (0) | 2008/05/22 |
| 정면으로 부딪히기 (0) | 2008/05/13 |
| 기다려야 할 때가 있다 (0) | 2008/05/01 |
| 반복의 힘... (0) | 2008/04/18 |
OpenCV에서는 이미지를 다룰때 intel® Image Processing Library에 정의되어있는
IplImage구조체를 이용한다. 구조체는 다음과 같으며 자세한 사항은 OpenCV Library
를 설치한 후 생기는 Document를 참고하시기 바란다.
typedef struct _IplImage
{
int nSize; //구조체의 크기
int ID; //이미지헤더의 버전
int nChannels; //채널의 개수 1~4까지 이용가능
int alphaChannel; //알파채널의 개수 OpenCV에서는 무시 ㅡㅡ;
int depth; //픽셀을 표현하는 자료형 ex)IPL_DEPTH_8U
char colorModel[4];
char channelSeq[4];
int dataOrder;
int origin; //이미지의 방향
int align;
int width; //이미지의 가로 크기
int height; //이미지의 세로 크기
struct _IplROI *roi; //ROI의 포인터
struct _IplImage *maskROI; //ROI마스크의 포인터
void *imageId;
struct _IplTileInfo *tileInfo;
int imageSize; //이미지의 크기를 바이트로 나타낸 것.
char *imageData; //이미지 픽셀 데이터의 포인터
int widthStep; //이미지의 한 행을 나타내기 위한 바이트의 수
int BorderMode[4];
int BorderConst[4];
char *imageDataOrigin; //정렬되지 않은 이미지 전체에 대한 포인터
}
IplImage;
자주 사용되는 것들만~
IplImage구조체를 이용한다. 구조체는 다음과 같으며 자세한 사항은 OpenCV Library
를 설치한 후 생기는 Document를 참고하시기 바란다.
typedef struct _IplImage
{
int nSize; //구조체의 크기
int ID; //이미지헤더의 버전
int nChannels; //채널의 개수 1~4까지 이용가능
int alphaChannel; //알파채널의 개수 OpenCV에서는 무시 ㅡㅡ;
int depth; //픽셀을 표현하는 자료형 ex)IPL_DEPTH_8U
char colorModel[4];
char channelSeq[4];
int dataOrder;
int origin; //이미지의 방향
int align;
int width; //이미지의 가로 크기
int height; //이미지의 세로 크기
struct _IplROI *roi; //ROI의 포인터
struct _IplImage *maskROI; //ROI마스크의 포인터
void *imageId;
struct _IplTileInfo *tileInfo;
int imageSize; //이미지의 크기를 바이트로 나타낸 것.
char *imageData; //이미지 픽셀 데이터의 포인터
int widthStep; //이미지의 한 행을 나타내기 위한 바이트의 수
int BorderMode[4];
int BorderConst[4];
char *imageDataOrigin; //정렬되지 않은 이미지 전체에 대한 포인터
}
IplImage;
자주 사용되는 것들만~
'Programming Tips > OpenCV' 카테고리의 다른 글
| OpenCV Library의 구성. (0) | 2008/06/30 |
|---|---|
| Dialog에 카메라 영상 띄우는 간단한 기본소스 (0) | 2008/06/12 |
| OpenCV를 이용한 카메라 Calibration ToolBox (0) | 2008/05/20 |
| IplImage 구조체 (0) | 2008/04/16 |
| OpenCV Library (0) | 2008/03/15 |

Prev

