首页 > 编程之美 > MFC自绘带背景颜色标题栏
2015
06-25

MFC自绘带背景颜色标题栏

最近在写一个EDID文件生成器,可以根据输入的一些参数生成EDID文件,大多数字节是固定的,主要是详细时序这几个字节的计算,界面用的是MFC,不过我重绘了,因为MFC原生界面太丑了。下图是EDID生成器初步的效果:
MFC自绘带背景颜色标题栏 - 第1张  | Jianchihu

本文主要讲怎么绘制带颜色的标题栏,就像上图的蓝色背景标题栏。
1)首先是根据向导创建一个普通对话框程序,然后修改对话框Border属性为None。
MFC自绘带背景颜色标题栏 - 第2张  | Jianchihu

2)在void XXXXDlg::OnPaint()函数中加入如下绘制代码:

代码中我除了绘制标题栏,还绘制了程序底部的边框。
3)响应鼠标点击标题栏消息,实现鼠标拖动。在对话框的OnLButtonDown消息中添加如下代码:

到此就大功告成了,实现了一个蓝色背景的标题栏。在后面的文章中我还会介绍如何完善该标题栏,加入关闭,最小化按钮。

最后编辑:
作者:Jianchihu
管理员——低调做事,低调做人

4 Responses to MFC自绘带背景颜色标题栏

  1. zhangzheng says:

    按照你的方法并没成功设置标题栏颜色,只是有了文字背景

    • Jianchihu says:

      使用gdiplus必须初始化相关东西。
      首先在你的头文件xxxDlg.h声明变量:
      ULONG_PTR m_gdiplusStartupToken;
      接着xxxDlg.cpp:初始化gdiplus:
      Gdiplus::GdiplusStartupInput gdiInput;
      Gdiplus::GdiplusStartup(&m_gdiplusStartupToken, &gdiInput, NULL);
      结束时释放gdiplus:
      Gdiplus::GdiplusShutdown(m_gdiplusStartupToken);
      我想这几步gdiplus的初始化释放你没写吧。

  2. wunian says:

    请问如何完善该标题栏,加入关闭,最小化按钮

留下一个回复

你的email不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.