VC++界面编程之--自定义标签控件(CStatic)皮肤

来源:互联网 发布:java 接口方法 public 编辑:程序博客网 时间:2024/05/03 14:02

IPhone聊天泡泡是个很不错的控件,因为它能很友好的给用户一些简短的提示信息,而不失美观。


我也想将这个泡泡,加到我的界面上,用做一些小提示:)

用什么控件做好呢?当然是CStatic控件啦,我就是喜欢CStatic的简单,易扩展性强。只要你有一个好的GDI描绘创意,就能将其效果弄得千变万化。


废话不多说,直接上使用步骤:

1. 设置父窗口,用于获取父窗口的背景画刷:

void SetThemeParent(const HWND hWnd){ATLASSERT(::IsWindow(hWnd));m_wndParent = hWnd;}


2. 设置背景图片,背景图片推荐PNG格式的,因为其支持透明色,而不会像BMP那么大。

void SetBackgroundImage(const int nImageID){ATLASSERT(nImageID > 0);m_imgBack.Load_Image(nImageID, _T("PNG"));DrawLabel();}

3. 设置文本对其方式,我这里用的是GDI+文本对其方式:

// Set text format.void SetTextAlign(const StringAlignment align){m_TextAlign = align;DrawLabel();}

4. 调整文本位置,因为有些图片与文字之间的位置,需要做些许移动,才能对称:

// Adjust text position.void AdjustTextPos(const int nTop, const int nLeft){m_nTextTop  = nTop;m_nTextLeft = nLeft;DrawLabel();}

5. 设置字体,这里使用CStatic默认的函数。但须注意:一旦设置字体时,需要捕获WM_SETFONT消息,获取新设置的字体,以刷新为最新的字体:

LRESULT OnSetFont(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled){m_Font.DeleteOldFont();CPaintDC dc(m_hWnd);m_Font.m_Font = new Font(dc, (HFONT) wParam);DrawLabel();bHandled = FALSE;return 0;}

本文工程代码免费下载链接:http://download.csdn.net/detail/renstarone/6239655

原创粉丝点击