请问键盘上的print screen的功能是怎么实现的? 请问键盘上的print screen的功能是怎么实现的?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 估计是这样:系统收到这个按键消息后先得到桌面的HDC然后把HDC中的内容复制到剪切板 和字面一样把屏幕拍摄下来复制到剪贴版Ctrl+printscreen 可以把当前active的窗口dc复制到剪贴版 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 } cstring 怎么用指针指向他! 关于设置对话框背景的问题 让VC支持多语言怎么弄?(是用DLL纯资源方式的) IShockwaveFlash 能否得到动画的原始尺寸(宽、高) 关于图片按钮的问题 COM接口问题 看过《深入浅出》的朋友请近来 请问一个函数调用的问题 组件中的,有关字符串问题,请教高手 双缓冲画图:为何比直接画慢了很多? 为何在Win98下面DoModal()没有反应? 有那位仁兄能告诉我,DSP和DSW有什么区别!
系统收到这个按键消息后
先得到桌面的HDC然后把HDC中的内容复制到剪切板
Ctrl+printscreen 可以把当前active的窗口dc复制到剪贴版
{
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
}