K
Hi versuch mal die Classe
class CTransparentStatic : public CStatic
{
DECLARE_DYNAMIC(CTransparentStatic)
public:
CTransparentStatic();
virtual ~CTransparentStatic();
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnPaint();
};
IMPLEMENT_DYNAMIC(CTransparentStatic, CStatic)
CTransparentStatic::CTransparentStatic()
{
}
CTransparentStatic::~CTransparentStatic()
{
}
BEGIN_MESSAGE_MAP(CTransparentStatic, CStatic)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CTransparentStatic::OnPaint()
{
CPaintDC dc(this);
CRect client_rect;
GetClientRect(client_rect);
CString szText;
GetWindowText(szText);
CFont *pFont, *pOldFont;
pFont = GetFont();
pOldFont = dc.SelectObject(pFont);
#define MAP_STYLE(src, dest) if(dwStyle & (src)) dwText |= (dest)
#define NMAP_STYLE(src, dest) if(!(dwStyle & (src))) dwText |= (dest)
DWORD dwStyle = GetStyle(), dwText = 0;
MAP_STYLE( SS_RIGHT, DT_RIGHT );
MAP_STYLE( SS_CENTER, DT_CENTER );
MAP_STYLE( SS_CENTERIMAGE, DT_VCENTER | DT_SINGLELINE );
MAP_STYLE( SS_NOPREFIX, DT_NOPREFIX );
MAP_STYLE( SS_WORDELLIPSIS, DT_WORD_ELLIPSIS );
MAP_STYLE( SS_ENDELLIPSIS, DT_END_ELLIPSIS );
MAP_STYLE( SS_PATHELLIPSIS, DT_PATH_ELLIPSIS );
NMAP_STYLE( SS_LEFTNOWORDWRAP |
SS_CENTERIMAGE |
SS_WORDELLIPSIS |
SS_ENDELLIPSIS |
SS_PATHELLIPSIS, DT_WORDBREAK );
dc.SetBkMode(TRANSPARENT);
dc.DrawText(szText, client_rect, dwText);
dc.SelectObject(pOldFont);
}