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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值