请问键盘上的print screen的功能是怎么实现的?
谢谢

解决方案 »

  1.   

    估计是这样:
    系统收到这个按键消息后
    先得到桌面的HDC然后把HDC中的内容复制到剪切板
      

  2.   

    和字面一样把屏幕拍摄下来复制到剪贴版
    Ctrl+printscreen 可以把当前active的窗口dc复制到剪贴版
      

  3.   

    void toClipboard(CWnd * wnd, BOOL FullWnd)
        {
         CDC dc;
         if(FullWnd)
            { /* full window */
             HDC hdc = ::GetWindowDC(wnd->m_hWnd);
             dc.Attach(hdc);
            } /* full window */
         else
            { /* client area only */
             HDC hdc = ::GetDC(wnd->m_hWnd);
             dc.Attach(hdc);
            } /* client area only */     CDC memDC;
         memDC.CreateCompatibleDC(&dc);     CBitmap bm;
         CRect r;
         if(FullWnd)
            wnd->GetWindowRect(&r);
         else
             wnd->GetClientRect(&r);     CString s;
         wnd->GetWindowText(s);
         CSize sz(r.Width(), r.Height());
         bm.CreateCompatibleBitmap(&dc, sz.cx, sz.cy);
         CBitmap * oldbm = memDC.SelectObject(&bm);
         memDC.BitBlt(0, 0, sz.cx, sz.cy, &dc, 0, 0, SRCCOPY);     wnd->GetParent()->OpenClipboard();
         ::EmptyClipboard();
         ::SetClipboardData(CF_BITMAP, bm.m_hObject);
         CloseClipboard();     memDC.SelectObject(oldbm);
         bm.Detach();  // make sure bitmap not deleted with CBitmap object
        }