54 lines
1.3 KiB
C++
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
|
|
}
|