谁能发给我一个显示桌面的实例 将当前操作系统当前图像显示在对话框控件中……就好像按(print Screec)键的图像一样。邮件:[email protected] 就差最后一步了,各位大侠帮解救下。明天晚上答谢。一点了,要睡觉了。100分送出。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CDC *pDC=GetDesktopWindow()->GetDC();这样就是桌面的DC了,你想怎么做就怎么做,想画在窗口就bitblt过来就OK void CXXXDlg::OnPaint() { CPaintDC dc(this); CDC memDC; memDC.CreateCompatibleDC(&dc); ASSERT(memDC.GetSafeHdc()); CBitmap bitmap; CRect rc; GetClientRect(&rc); bitmap.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height()); ASSERT(bitmap.GetSafeHandle()); CBitmap* pBmp = (CBitmap*)memDC.SelectObject(&bitmap); CDC* pDC = GetDesktopWindow()->GetDC(); CRect rect; GetDesktopWindow()->GetWindowRect(&rect); memDC.StretchBlt(0, 0, rc.Width(), rc.Height(), pDC, 0, 0, rect.Width(), rect.Height(), SRCCOPY); dc.BitBlt(0, 0, rc.Width(), rc.Height(), &memDC, 0, 0, SRCCOPY); memDC.SelectObject(pBmp); bitmap.DeleteObject(); memDC.DeleteDC();}差不多就是这个样子了 谢谢VisualEleven帅蜗的回答,这段代码可以用,可是如果我使用如下代码最大化对话框后就显示不了,这是为什么? LONG style = GetWindowLong(m_hWnd, GWL_STYLE); //得到窗口风格 ::ShowWindow(m_hWnd, SW_MAXIMIZE); style = GetWindowLong(m_hWnd, GWL_STYLE); style &= ~(WS_DLGFRAME | WS_THICKFRAME); SetWindowLong(m_hWnd, GWL_STYLE, style); //设置窗口风格 int cx = GetSystemMetrics(SM_CXSCREEN); int cy = GetSystemMetrics(SM_CYSCREEN); ::SetWindowPos(m_hWnd, HWND_TOPMOST, -1, -1, cx+3, cy+3, SWP_FRAMECHANGED);//实现全屏显示 ::InvalidateRect(m_hWnd,NULL,TRUE); LONG style = GetWindowLong(m_hWnd, GWL_STYLE); //得到窗口风格::ShowWindow(m_hWnd, SW_MAXIMIZE);style = GetWindowLong(m_hWnd, GWL_STYLE);style &= ~(WS_DLGFRAME | WS_THICKFRAME);SetWindowLong(m_hWnd, GWL_STYLE, style); //设置窗口风格int cx = GetSystemMetrics(SM_CXSCREEN);int cy = GetSystemMetrics(SM_CYSCREEN);::SetWindowPos(m_hWnd, HWND_TOPMOST, -1, -1, cx+3, cy+3, SWP_FRAMECHANGED);//实现全屏显示::InvalidateRect(m_hWnd,NULL,TRUE); 不加上上面一句能显示,加上上面一句显示不了。这是为什么呢。我需要对话框一开始就最大化,然后显示桌面,看起来像真桌面一样,然后在上面画图。似乎屏保程序%^%%%%%%up up up up 加上那句显示不了?InvalidateRect() ? 不是的。不知道怎么回事!图像的那些cdc 什么的一看就晕 终于解脱了,谢谢大家的帮忙,对GDI一窍不通 结帖,给分 怎么用多线程技术,可以让某个定时器处于最高的优先级? 用VC怎样实现类似ps上的橡皮擦功能啊? 请教关于窗口隐藏的问题 要用VC实现软件盘的backspace键的功能,代码要怎么写呢? 如何从BYTE中提取某一位 请教GetResourceHandle函数的用法 一道程序分析题 在线等 谢谢! 在显示视图的同时执行一段代码 做毕业设计时,(我问了好几遍了) 为什么windows桌面不用双缓冲也很平滑,一点都不闪? 关于汉字输入输出 MFC初学疑问
{
CPaintDC dc(this);
CDC memDC;
memDC.CreateCompatibleDC(&dc);
ASSERT(memDC.GetSafeHdc());
CBitmap bitmap;
CRect rc;
GetClientRect(&rc);
bitmap.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
ASSERT(bitmap.GetSafeHandle());
CBitmap* pBmp = (CBitmap*)memDC.SelectObject(&bitmap);
CDC* pDC = GetDesktopWindow()->GetDC();
CRect rect;
GetDesktopWindow()->GetWindowRect(&rect);
memDC.StretchBlt(0, 0, rc.Width(), rc.Height(), pDC, 0, 0, rect.Width(), rect.Height(), SRCCOPY);
dc.BitBlt(0, 0, rc.Width(), rc.Height(), &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pBmp);
bitmap.DeleteObject();
memDC.DeleteDC();
}
差不多就是这个样子了
LONG style = GetWindowLong(m_hWnd, GWL_STYLE); //得到窗口风格
::ShowWindow(m_hWnd, SW_MAXIMIZE);
style = GetWindowLong(m_hWnd, GWL_STYLE);
style &= ~(WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(m_hWnd, GWL_STYLE, style); //设置窗口风格
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(m_hWnd, HWND_TOPMOST, -1, -1, cx+3, cy+3, SWP_FRAMECHANGED);//实现全屏显示
::InvalidateRect(m_hWnd,NULL,TRUE);
LONG style = GetWindowLong(m_hWnd, GWL_STYLE); //得到窗口风格
::ShowWindow(m_hWnd, SW_MAXIMIZE);
style = GetWindowLong(m_hWnd, GWL_STYLE);
style &= ~(WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(m_hWnd, GWL_STYLE, style); //设置窗口风格
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(m_hWnd, HWND_TOPMOST, -1, -1, cx+3, cy+3, SWP_FRAMECHANGED);//实现全屏显示
::InvalidateRect(m_hWnd,NULL,TRUE);
不加上上面一句能显示,加上上面一句显示不了。这是为什么呢。我需要对话框一开始就最大化,然后显示桌面,看起来像真桌面一样,然后在上面画图。似乎屏保程序%^%%%%%%
up
up
up
up