MFC 基本对话框 重绘,了解的帮帮忙啊,先谢谢啦!! 我遇到个问题: 在基本对话框上有static控件 和 一个listBox。 当我重画static控件时,listBox消失了,只有在listbox上用什么拖一拖才显示,这是什么问题啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是在类函数中调用 Invalidate();UpdateWindow();实现的 可以一起讨论讨论嘛。 还有InvalidateRect(&rect);时static图不会被刷新。 我网上查了查都说可以的,为什么呢??? InvalidateRect(&rect)这个rect应该是static的范围。另外帖代码。。 void CServerDlg::OnPaint() { if (IsIconic()) {…… } else { CDialog::OnPaint(); //重绘图像区域 PAINTSTRUCT ps; CRect rt[n]; CDC* pDC[n]; for(int i=0; i<n; i++) { m_pDrawWnd[i]->GetClientRect(&rt[i]); pDC[i]=m_pDrawWnd[i]->BeginPaint(&ps); DrawOnMen(); pDC[i]->BitBlt(0, 0, rt[i].Width(), rt[i].Height(), &m_memDC[i], 0, 0, SRCCOPY); m_pDrawWnd[i]->EndPaint(&ps); } } }其中对应10个static控件。void CServerDlg::DrawOnMen(){ CRect rect[n]; for(int i=0; i<10; i++) { m_pDrawWnd[i]->GetClientRect(&rect[i]); if(i == 0 ) { COLORREF crl = GetSysColor(COLOR_3DFACE); m_memDC[i].FillSolidRect(rect[i], crl); m_memDC[i].FillSolidRect(&rect[i], 0x00FFFFFF); CPen pen(PS_SOLID,1,RGB(0,0,0)); m_memDC[i].SelectObject(&pen); } }}刷新后我的listbox不见了啊??为什么呢?? 给对话框增加 WS_CHILDWINDOW 风格 你的static控件把你的listbox控件盖住了? 你看下是不是创建的时候CREAT函数坐标弄覆盖了 不是被static盖住了,是被dialog覆盖了。就是那边原来的listbox没了,然后随便用什么窗口划一下或者最小化后就又有了。 发送重绘消息的时候,你的listctrl没有做处理。我碰到过 绘图程序问题 win32里 关于滚动条滚动图形+文字的问题 图像显示问题! 请教:怎么样取得组合框中输入的数据(不是从下拉列表中选,而是直接输入的)? 一个语句的意思 关于SQL Server2000 Text字段的问题,在线等,多谢 a question about vc++ 6.0 InvalidateRect为什么没有作用? 高分求助 如何得到系统的开关机时间(在WIN2K下)?? 100分求个VC的将DLL做成资源导入EXE并且释放到内存的教程或源码 用户切换?
Invalidate();
UpdateWindow();实现的
可以一起讨论讨论嘛。
还有InvalidateRect(&rect);时static图不会被刷新。 我网上查了查都说可以的,为什么呢???
这个rect应该是static的范围。另外帖代码。。
void CServerDlg::OnPaint()
{
if (IsIconic())
{
……
}
else
{
CDialog::OnPaint();
//重绘图像区域
PAINTSTRUCT ps;
CRect rt[n];
CDC* pDC[n];
for(int i=0; i<n; i++)
{
m_pDrawWnd[i]->GetClientRect(&rt[i]);
pDC[i]=m_pDrawWnd[i]->BeginPaint(&ps);
DrawOnMen();
pDC[i]->BitBlt(0, 0, rt[i].Width(), rt[i].Height(), &m_memDC[i], 0, 0, SRCCOPY);
m_pDrawWnd[i]->EndPaint(&ps);
}
}
}
其中对应10个static控件。void CServerDlg::DrawOnMen()
{
CRect rect[n];
for(int i=0; i<10; i++)
{
m_pDrawWnd[i]->GetClientRect(&rect[i]);
if(i == 0 )
{
COLORREF crl = GetSysColor(COLOR_3DFACE);
m_memDC[i].FillSolidRect(rect[i], crl);
m_memDC[i].FillSolidRect(&rect[i], 0x00FFFFFF);
CPen pen(PS_SOLID,1,RGB(0,0,0));
m_memDC[i].SelectObject(&pen);
} }
}刷新后我的listbox不见了啊??为什么呢??
不是被static盖住了,是被dialog覆盖了。就是那边原来的listbox没了,然后随便用什么窗口划一下或者最小化后就又有了。