클립보드 기능 구현

이번에는 자주 사용하는 기능인 C&P(Copy & Paste)를 구현해 보도록 하겠습니다.

C&P를 구현하기 위해서는 이미지를 DIB(장치 독립 비트맵;Device Independent Bitmap)으로 변환하여 클립보드 영역에 넘겨주거나, 클립보드 영역에서 데이터를 받아오면 됩니다.

클립보드 영역으로 데이터를 넘겨주기 위하여 CopyClipBoard맴버함수, CopyToHandle 맴버 함수를 추가하여, ID_EDIT_COPY이벤트 핸들러에 등록합니다.

먼저 CopyClipBoard 맴버 함수를 Doc Class에 작성하겠습니다.

 

반환 형식 : void

함수 이름 : CopyClipBoard

매개 변수 형식 : IplImage *

매개 변수 이름 : m_pCopyImage

다음과 같이 코딩합니다.

이번에는 아까와 같은 방법으로 CopyToHandle 맴버 함수를 작성합니다.

반환 형식 : HANDLE

함수 이름 : CopyToHandle

매개 변수 형식 : IplImage *

매개 변수 이름 : image

 

 

다음과 같이 코딩합니다. (출처 : 오픈소스 OpenCV를 이용한 컴퓨터 비전 실무 프로그래밍 p237)

이제 ID_EDIT_COPY에 대한 이벤트 핸들러만 수정해 주면 끝입니다.

이벤트 핸들러를 수정하기 위해 다음과 같이 합니다.

 

프로그램에서 Copy하여 그림판 같은 곳에 Paste했을 때 정상적으로 동작한다면 성공.

 

이번에는 Paste기능을 구현해 보도록 하겠습니다. Paste는 Copy의 역순입니다.

CreateFromHandle맴버 함수를 작성하고, ID_EDIT_PASTE에 이벤트 핸들러를 등록하고, 마지막으로 클립보드 영역에 DIB 데이터가 존재할 경우에만 ID_EDIT_PASTE가 동작하도록 하기 위해서 OnUpdateEditPaste 맴버 함수를 작성하겠습니다. 이번에는 모든 함수가 App Class에서 작성될 것이고, 코드만 첨부합니다.

 

App Class의 헤더 파일에 #include <cv.h>를 추가해 줘야 합니다.

 

cfile25.uf.19311C444D273F25031758.pdfcfile7.uf.1227C1444D273F261C4D3D.zip

댓글 남기기