win7 透明成效 字体移动

win7 透明效果 字体移动
先帖点代码,也都是网上当的
[code=C/C++][/code]
//----------------------
// OnEraseBkgnd的处理
.......
GetClientRect ( &rcClient );
rcText = rcClient;

if(IsCompositionEnabled())
{
pDC->FillSolidRect ( &rcClient, RGB(0,0,0) );
bDrawFlag = FALSE;
int cx = rcText.right - rcText.left;
int cy = rcText.bottom - rcText.top;

// 设置一个我们将绘制的内存DC和位图
dcMem.CreateCompatibleDC (pDC);

dib.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
dib.bmiHeader.biWidth = cx;
dib.bmiHeader.biHeight = -cy;
dib.bmiHeader.biPlanes = 1;
dib.bmiHeader.biBitCount = 32;
dib.bmiHeader.biCompression = BI_RGB;

hBitmap = CreateDIBSection (pDC->m_hDC,&dib,DIB_RGB_COLORS,NULL,NULL,0);

if(hBitmap)
{
nCount += 1;
//BeginPath(pDC->m_hDC);
// 设置DC
hOldBitmap = (HBITMAP)SelectObject(dcMem.m_hDC,hBitmap);
hOldFont = (HFONT)dcMem.SelectObject(m_font );
dcMem.SetBkMode ( TRANSPARENT );

// 绘制文本
dto.dwFlags = DTT_COMPOSITED|DTT_GLOWSIZE|DTT_TEXTCOLOR|DT_RTLREADING;
// 字体发光大小
dto.iGlowSize = 10;
dto.crText = RGB(255,0,0);


rcText2 = rcText;

hRet = DrawThemeTextEx(m_hTheme, dcMem, 0, 0, CT2CW(_T("测试应用程序")), -1,
DT_SINGLELINE|DT_CENTER|DT_BOTTOM|DT_NOPREFIX|DT_NOCLIP|DT_WORD_ELLIPSIS, 
&rcText2, &dto );

// 将文本绘制到屏幕上。
BitBlt ( pDC->m_hDC, rcText.left, rcText.top,cx, cy, dcMem, 0, 0, SRCCOPY );

//EndPath(pDC->m_hDC);

dcMem.SelectObject(hOldBitmap);
dcMem.SelectObject(hOldFont);

DeleteObject(hBitmap);

dcMem.DeleteDC();
}

}
.......

现在界面能显示透明效果,字体及位置(中间)也显示正常



但在改变窗口大小时,文字并不移动,很是怪??



测试:在窗口大小改变时擦除背景率很高,怀疑像素更新得太快,,,

求助于大侠能否有解决之策,实现像word2010标题栏上字体总是在中间的效果








------解决方案--------------------
你没有用双缓存
------解决方案--------------------
你没有CreateCompatibleBitmap