Files
Work/mdiwin/CLIPBRD.CPP
2024-08-07 09:16:27 -04:00

54 lines
1.3 KiB
C++

#include <mdiwin/clipbrd.hpp>
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
}