自定义了一个ToolBar,通过OnEraseBkgnd来改变它的背景。
当程序使用多字节编码方式时,背景就是OnEraseBkgnd中所设置的。
当程序使用UNICODE编码方式时,背景没有被绘制出来,怀疑是被OnPaint给盖住了。
遇到的兄弟,帮忙解决一下。绘制背景代码如下(OnEraseBkgnd中,):if (pDC != NULL && pDC->GetSafeHdc() != NULL)
{
RECT rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
pDC->FillRect(&rect,&m_Brush);
return TRUE;
}
else
return CToolBar::OnEraseBkgnd(pDC);
多字节下显示效果:
UNICDOE显示效果:
当程序使用多字节编码方式时,背景就是OnEraseBkgnd中所设置的。
当程序使用UNICODE编码方式时,背景没有被绘制出来,怀疑是被OnPaint给盖住了。
遇到的兄弟,帮忙解决一下。绘制背景代码如下(OnEraseBkgnd中,):if (pDC != NULL && pDC->GetSafeHdc() != NULL)
{
RECT rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
pDC->FillRect(&rect,&m_Brush);
return TRUE;
}
else
return CToolBar::OnEraseBkgnd(pDC);
多字节下显示效果:
UNICDOE显示效果:
恩,UNICODE和多字节使用不同的控件风格。所以我也怀疑是控件绘制的方式有所不同。我明天试试。
cnzdgs厉害,把#if _UNCODE部分屏蔽之后,UNICODE编译出来和多字节的效果完全一致了。
不过随之而来的是,xp风格的控件也没了。
不知道有没办法解决?
#pragma comment(linker,"/manifestdependency:\"type='win32……
语句,能显示XP风格控件,但同时背景色刷新又不正确了,貌似不能两全。
结合sjdev的解释,实际上问题还是出在控件自身的实现上, 老火~~根本上跟是否UNICODE没关系,当然,.net例外