#include Clipboard::Clipboard(HWND hOwnerWnd) : mhOwnerWnd(hOwnerWnd), mhNextViewerWnd(0) { if(!mhOwnerWnd)return; mhNextViewerWnd=::SetClipboardViewer(mhOwnerWnd); } Clipboard::~Clipboard() { if(!isOkay())return; ::ChangeClipboardChain(mhOwnerWnd,mhNextViewerWnd); } void Clipboard::changeClipboardChain(WORD message,WPARAM wParam,LPARAM lParam) { if(!isOkay())return; if((HWND)wParam==mhNextViewerWnd)mhNextViewerWnd=(HWND)LOWORD(lParam); else ::SendMessage(mhNextViewerWnd,message,wParam,lParam); } WORD Clipboard::drawClipboard(WORD message,WPARAM wParam,LPARAM lParam) { if(!isOkay())return FALSE; ::SendMessage(mhNextViewerWnd,message,wParam,lParam); handleClipboardData(); return TRUE; } void Clipboard::handleClipboardData(void)const { #if 0 HGLOBAL hGlobalClipboard(0); BITMAPINFO FAR *lpSourceBitmapInfo; RGBQUAD FAR *lpRGBQuad; BYTE FAR *lpDataBytes; ::OpenClipboard(mhOwnerWnd); hGlobalClipboard=::GetClipboardData(CF_DIB); if(hGlobalClipboard) { lpSourceBitmapInfo=(BITMAPINFO FAR *)::GlobalLock(hGlobalClipboard); if(lpSourceBitmapInfo->bmiHeader.biBitCount==8) { lpRGBQuad=(RGBQUAD FAR *)((char FAR *)lpSourceBitmapInfo+sizeof(BITMAPINFOHEADER)); lpDataBytes=(BYTE FAR *)((BYTE FAR *)lpSourceBitmapInfo+(sizeof(BITMAPINFOHEADER)*256)); } ::GlobalUnlock(hGlobalClipboard); } ::CloseClipboard(); #endif }