类似进程通信的文图额,我用一个进程Client.exe一些内容写进剪贴板,然后用Server.exe接受,我想用的是Server.exe监听Client将位图改变的消息,也就是剪贴板的的改变,然后Server.exe随时能接受到将之改变为Client.exe的要求改变的样子!但是我出了问题,说什么内存不能读!
首先我用的2个WM_...和WM_..消息大家懂的!
我Server程序主要代码:
static int flag=0;
// TODO: Add your message handler code here
if(OpenClipboard())
{
if(IsClipboardFormatAvailable(CF_BITMAP))
{
DC=GetDC();
memDC.CreateCompatibleDC(DC);
Bitmap.Attach(hBitmap);
HBITMAP hBitmap=(HBITMAP)GetClipboardData(CF_BITMAP);
LPRECT lp=new RECT;
POINT pt;
GetClientRect(lp);
pt.x=1*(lp->right - lp->left);
pt.y=1*(lp->bottom - lp->top);
hBmpOld = ::SelectObject(memDC.m_hDC, hBitmap);
DC->StretchBlt( 0, 0,pt.x ,pt.y , &memDC, 0, 0,80,80, SRCCOPY );
}
CloseClipboard();
}
首先我用的2个WM_...和WM_..消息大家懂的!
我Server程序主要代码:
static int flag=0;
// TODO: Add your message handler code here
if(OpenClipboard())
{
if(IsClipboardFormatAvailable(CF_BITMAP))
{
DC=GetDC();
memDC.CreateCompatibleDC(DC);
Bitmap.Attach(hBitmap);
HBITMAP hBitmap=(HBITMAP)GetClipboardData(CF_BITMAP);
LPRECT lp=new RECT;
POINT pt;
GetClientRect(lp);
pt.x=1*(lp->right - lp->left);
pt.y=1*(lp->bottom - lp->top);
hBmpOld = ::SelectObject(memDC.m_hDC, hBitmap);
DC->StretchBlt( 0, 0,pt.x ,pt.y , &memDC, 0, 0,80,80, SRCCOPY );
}
CloseClipboard();
}
if(OpenClipboard()){
HGDIOBJ hBmpOld=::SelectObject(memDC.m_hDC,hBitmap);
EmptyClipboard();
}
SetClipboardData(CF_BITMAP,Bitmap.m_hObject);
CloseClipboard();
}
用剪贴板!谢谢...
xuddk727
知道吗?求教啊?