VC中如何强制让窗口重绘,主要是在响应OnMove时让窗口重绘

xiaohuh421 xiaohuh421 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我的直接想法是让窗透明,但是控件不要透明.我在WM_CTLCOLOR响应函数中只让对话框背景透明.
HBRUSH CTestMgDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);


if(nCtlColor==CTLCOLOR_DLG)
{
return (HBRUSH)GetStockObject(NULL_BRUSH);
}// TODO: Change any attributes of the DC here

// TODO: Return a different brush if the default is not desired
return hbr;
}

但是这个要在窗口重绘时才会得到响应

首先说明:用Invalidate,UpdateWindow,RedrawWindodw,这些函数的一些用法,都不能在OnMove中使对话框背景重绘.

//CDialog::OnPaint();
//CClientDC dc(this);
//Invalidate(FALSE);
//UpdateWindow();
//RedrawWindow(NULL,NULL,RDW_ERASENOW);
// TODO: Add your message handler code here
// HDC hDC=this-> GetDC()->m_hDC;
// LPARAM lParam=0;
//
// lParam=LOWORD(this->m_hWnd);
// lParam+=CTLCOLOR_DLG<<16;
// //::SendMessage(this-> m_hWnd,WM_CTLCOLOR,(WPARAM)hDC,lParam);
//::SendMessage(this->m_hWnd,WM_SHOWWINDOW,SW_HIDE,NULL);
//ShowWindow(SW_HIDE);
//::SendMessage(this->m_hWnd,WM_ACTIVATE,WA_ACTIVE,(LPARAM)this->m_hWnd);


问题: 还有没有其它方法让对话框背景重绘?

请大家帮下,不过还请先试试,能在OnMove时重绘背景再给我说哈,再次谢谢大家......
...全文
评论 12
收藏 已收藏
分享
返回顶部
xiaohuh421
界面 15,976 成员 115,866 内容