星星电脑技术论坛's Archiver

xdyxzl 发表于 2007-4-21 16:50

如何将窗口文本或客户区内容以CF_BITMAP格式拷到剪贴板

/****************************************************************&]"_!e/y(l
*                                 toClipboard
+U4J[%E M6P-a*n m:z(y * Inputs:
*f|SM-~8J *       CWnd * wnd: Window whose contents are to be sent @BzE*s
*                   to the clipboard cT7X7F%OJ9]K
*       BOOL FullWnd: TRUE for entire window,
2?v B6? Zo6V9H&W *                     FALSE for client areaF9Tb!@;[Z5T1C3d
* Result: voidrXrF(Bw#{W
*      
#s2K uXu * Effect:
&e*zci)Y2j+FN *       Copies the contents of the client area or the window
2`5?]jZ g C *       to the clipboard in CF_BITMAP format.
.D[-WZHW C *****************************************************************/-D9[.Kqi(h6m R
ZuC-@:i8H%cPgb
void toClipboard(CWnd * wnd, BOOL FullWnd))HT[@3Q.EM
    {
2FEA6|_      CDC dc;ILl(].N5o&XB
     if(FullWnd)doxeo;w3}j
        { /* full window */
2C`9{Y.u k          HDC hdc = ::GetWindowDC(wnd->m_hWnd);?,Xu-];H _6{/WnC
         dc.Attach(hdc);Q{+fDo.P F6c#Iq:l0C2a
        } /* full window */Tfk Fp
     elseMV'v8h(d:E&~
        { /* client area only */
/l%K b am.h          HDC hdc = ::GetDC(wnd->m_hWnd);Gu] {&t6|
         dc.Attach(hdc);
O-H:|[0L0ev3X         } /* client area only */
F-I2?Da;_?x"J.o$VX
)F+M.V)C!Z      CDC memDC;
8A2A8oB eY      memDC.CreateCompatibleDC(&dc);/U O8}|8Y
#R t5w8k$|u
     CBitmap bm;-gQ;k!gu8S)[.dt}
     CRect r;
5J$t0q U%^m Y\      if(FullWnd)o/fDV A v
        wnd->GetWindowRect(&r);
l1YY._[4_'O@      else'e$`\?5wT
         wnd->GetClientRect(&r);
-]/s.y8Zm `
-g(P4Dk7I      CString s;W/JK4n.f-b
     wnd->GetWindowText(s);
!{ s+AM @%^L      CSize sz(r.Width(), r.Height());(m)hO#hb$t#[
     bm.CreateCompatibleBitmap(&dc, sz.cx, sz.cy); Z.fwj y:L
     CBitmap * oldbm = memDC.SelectObject(&bm);
$B(EGC!rl7gi`      memDC.BitBlt(0, 0, sz.cx, sz.cy, &dc, 0, 0, SRCCOPY);
Ge ec$d)q;LY ,}@HPC3~.uN
     wnd->GetParent()->OpenClipboard();5NZ.s"x2Wy
     ::EmptyClipboard();
xV j Uh o?.t Z-V8Z      ::SetClipboardData(CF_BITMAP, bm.m_hObject);
_woYv0ae y(j      CloseClipboard();
*c_V(KaV:h~$p!a(c
#y2wfS j2c!i*@      memDC.SelectObject(oldbm);
lW M.l ~H#n(mU      bm.Detach();  // make sure bitmap not deleted with CBitmap object"HLH7~Ey+V
    }

龍行天下 发表于 2007-6-22 08:22

好資料,支持一下,樓主

蓝深のPS:总部 发表于 2007-7-1 15:01

谢谢你的资料,支持我本人也要学习一下,支持:victory: :lol

页: [1]
手机号码所在地查询:
Google
IP地址:

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.