底色是画成渐变的形式按照网上说的可以设成透明
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor( RGB(0, 255, 0) );
return (HBRUSH)::GetStockObject(NULL_BRUSH);但是上面的字需要时时更新 但是更新了就重叠变成 黑方块
再抄网上的invalidaterect还是不行
void CClientdemosqDlg::PrintState(char *pstate)
{
CRect rtlbl;
m_lblstrstate.SetWindowText("");//先填空
m_lblstrstate.SetWindowText(pstate);//再写字
m_lblstrstate.GetClientRect(&rtlbl);
m_lblstrstate.InvalidateRect(&rtlbl);//最后刷新
}
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor( RGB(0, 255, 0) );
return (HBRUSH)::GetStockObject(NULL_BRUSH);但是上面的字需要时时更新 但是更新了就重叠变成 黑方块
再抄网上的invalidaterect还是不行
void CClientdemosqDlg::PrintState(char *pstate)
{
CRect rtlbl;
m_lblstrstate.SetWindowText("");//先填空
m_lblstrstate.SetWindowText(pstate);//再写字
m_lblstrstate.GetClientRect(&rtlbl);
m_lblstrstate.InvalidateRect(&rtlbl);//最后刷新
}
pDC->SetTextColor( RGB(0, 255, 0) );
return (HBRUSH)::GetStockObject(NULL_BRUSH); 在之前把此处应有的背景图bitblt上去
InvalidateRect让父对话框调用下试试再不行的话setwindowtext前showwindow(SW_HIDE),之后showwindow(SW_SHOW)
1、用showwindow(SW_HIDE),和showwindow(SW_SHOW)可以解决黑方块问题,但是出现有时显示有时不显示。
2 以下代码出现黑方块
CRect rtlbl;
m_lblstrstate.SetWindowText("");
m_lblstrstate.SetWindowText(pstate);
m_lblstrstate.GetClientRect(&rtlbl);
this->InvalidateRect(&rtlbl);3、 以下代码出现对话框闪烁 CRect rtlbl;
m_lblstrstate.SetWindowText("");
m_lblstrstate.SetWindowText(pstate);
m_lblstrstate.GetClientRect(&rtlbl);
this->Invalidate();
我后来弄了一个跟背景差不多的刷子,没想到别的办法就这么凑合了。
// 事前创建一个刷子,与背景色相同
HBRUSH m_hbkbrs;
m_hbkbrs = CreateSolibrush(RGB(243,223,254));pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor( RGB(0, 255, 0) );
return m_hbkbrs;
m_lblstrstate.SetWindowText(pstate);//再写字
CRect rtlbl;
m_lblstrstate.GetWindowRect(&rtlbl);
ScreenToClient(&rtlbl);
InvalidateRect(&rtlbl);//最后刷新对话框背景