截取桌面背景显示在对话框背景闪烁问题 c++ mfc dc 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你的显示代码是怎么写的,另外对话框设置具有以下两个样式:WS_CLIPCHILDREN WS_CLIPSIBLINGS 我用的是版主提供的代码,截取了整个桌面HBITMAP hBitmap; // 定义为类的成员变量,在OnInitDialog中初始化BOOL CNewDlg::OnInitDialog(){ ... hBitmap = GetScreenHBITMAP(); ShowWindow(SW_MAXIMIZE); return FALSE;}HBITMAP CNewDlg::GetScreenHBITMAP(){ HDC hScrDC = GetDC(NULL); ASSERT(hScrDC); HDC hMemDC = CreateCompatibleDC(hScrDC); ASSERT(hMemDC); int nWidth = GetSystemMetrics(SM_CXSCREEN); int nHeight = GetSystemMetrics(SM_CYSCREEN); HBITMAP hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight); HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, 0, 0, SRCCOPY); hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap); DeleteDC(hMemDC); ReleaseDC(NULL, hScrDC); return hBitmap;}void CNewDlg::OnPaint(){ CPaintDC dc(this); // device context for painting ASSERT(hBitmap); CDC memDC; memDC.CreateCompatibleDC(&dc); HBITMAP hOldBmp = (HBITMAP)memDC.SelectObject(hBitmap); CRect rect; GetClientRect(&rect); dc.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY); memDC.SelectObject(hOldBmp); } 求MFC实例开发的资料和教程视频 请问如何可以设置列表框变成这样的类型CListBOX?? [请问]这样写代码有内存泄露的问题吗? 如何使Dialog中的两个Edit Box的ScrollBar同步滚动? 在csdn上混了大半年了,看看csdn上面有多少人认识我,认识我的进来说一句!谢谢 来者有分 100 分求《Progamming Applications》电子书 CRichEditCtrl中设置文字颜色的问题 如何将一个工程的位图资源拷到另一个工程的资源中? 请教高手! 线程优先级与信号量的处理 MFC对话框默认最小化
另外对话框设置具有以下两个样式:
WS_CLIPCHILDREN
WS_CLIPSIBLINGS
HBITMAP hBitmap; // 定义为类的成员变量,在OnInitDialog中初始化BOOL CNewDlg::OnInitDialog()
{
...
hBitmap = GetScreenHBITMAP();
ShowWindow(SW_MAXIMIZE);
return FALSE;
}HBITMAP CNewDlg::GetScreenHBITMAP()
{
HDC hScrDC = GetDC(NULL);
ASSERT(hScrDC); HDC hMemDC = CreateCompatibleDC(hScrDC);
ASSERT(hMemDC); int nWidth = GetSystemMetrics(SM_CXSCREEN);
int nHeight = GetSystemMetrics(SM_CYSCREEN); HBITMAP hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, 0, 0, SRCCOPY);
hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap); DeleteDC(hMemDC);
ReleaseDC(NULL, hScrDC); return hBitmap;
}void CNewDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
ASSERT(hBitmap); CDC memDC;
memDC.CreateCompatibleDC(&dc);
HBITMAP hOldBmp = (HBITMAP)memDC.SelectObject(hBitmap);
CRect rect;
GetClientRect(&rect);
dc.BitBlt(rect.left, rect.top, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY); memDC.SelectObject(hOldBmp);
}