본문 바로가기

Projects/CoVNC

클립보드에서 이미지 읽기

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam,
LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
char Mes[]="왼쪽 버튼을 비트맵 복사, 오른쪽 버튼은 비트맵 붙이기";
HBITMAP hBit,hOldBitmap;
HDC hmemDC;
BITMAP bmp; //비트맵 구조체 DDB형식

switch(message)
{
case WM_CREATE:
if(OpenClipboard(hWnd))
{
EmptyClipboard();
CloseClipboard();
}
return 0;
case WM_LBUTTONDOWN:
//리소스타입인 DIB를 DDB형식으로 변환함
hBit=LoadBitmap(g_hInst,MAKEINTRESOURCE(IDB_BITMAP1));
if(OpenClipboard(hWnd))
{
EmptyClipboard();
SetClipboardData(CF_BITMAP,hBit);
CloseClipboard();
}
return 0;
case WM_RBUTTONDOWN:
//클립보드상에 들어있는지 없는지 여부
if(!IsClipboardFormatAvailable(CF_BITMAP))
return 0;
if(OpenClipboard(hWnd))
{
hBit=(HBITMAP)GetClipboardData(CF_BITMAP);
CloseClipboard();
hdc=GetDC(hWnd);
//화면DC 핸들을 주면 동일한 특성을 지닌 DC를 메모리에 만들고 핸들을 리턴
hmemDC=CreateCompatibleDC(hdc);
//클립보드에 얻은 비트맵을 메모리DC에 선택하고 HBITMAP캐스팅(원래 HGDIOBJ)
hOldBitmap=(HBITMAP)SelectObject(hmemDC,hBit);
//조사하고자 하는 핸들이 첫번째 인수 비트맵의 폭, 높이, 색상 정보만 조사됨
GetObject(hBit,sizeof(BITMAP),&bmp);
//메모리DC내용을 화면 DC에 복사
BitBlt(hdc,0,0,bmp.bmWidth,bmp.bmHeight,hmemDC,0,0,SRCCOPY);
SelectObject(hmemDC,hOldBitmap);
DeleteDC(hmemDC);
ReleaseDC(hWnd,hdc);
}
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,100,100,Mes,strlen(Mes));
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}

'Projects > CoVNC' 카테고리의 다른 글

비트맵 파일 저장하고 읽기  (0) 2007.02.01
CF_BITMAP 사용하기  (0) 2007.01.30
Swap16IfLE() 매크로  (0) 2007.01.24
자바 이미지 저장  (0) 2007.01.24
자바 드래그엔 드랍, 클립보드 튜토리얼  (0) 2007.01.23