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

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

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

void xxxxDlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting
        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = (rect.Width() - cxIcon + 1) / 2;
        int y = (rect.Height() - cyIcon + 1) / 2;
        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CPaintDC dc(this);
        Graphics graph(dc);
        RECT rc;
        SolidBrush titleBrush(Color(20, 150, 250));
        SolidBrush bottomBrush(Color(20, 150, 250));
        // 获取对话框大小
        GetClientRect(&rc);
        // 绘制标题栏
        graph.FillRectangle(&titleBrush, rc.left, rc.top, rc.right-rc.left, 23);
                //绘制底部边框
        graph.FillRectangle(&bottomBrush, rc.left, rc.bottom-5, rc.right-rc.left, 5);
        
        dc.SetBkColor(RGB(20, 150, 250));
                //设置标题栏文字
        dc.SetTextColor(RGB(255, 255, 255));
        dc.TextOut(4,4,_T("EDIDCreator"));
        DeleteObject(&titleBrush);
        DeleteObject(&bottomBrush);
        ReleaseDC(&dc);
        CDialog::OnPaint();
    }
}

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

1
2
3
4
5
6
7
8
9
10

void xxxxDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    // 判断是否在标题栏,点击移动标题栏
    if ((point.y > 0) && (point.y < 25))
    {
        PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));
    }
    
    CDialog::OnLButtonDown(nFlags, point);
}

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

  • 本文固定链接: http://blog.jianchihu.net/mfc-draw-color-titlebar.html
  • 转载请注明: Jianchihu 2015年06月25日 于 Jianchihu 发表

MFC自绘带背景颜色标题栏相关推荐

  1. html table转excel单元格带背景颜色

    html table转excel单元格带背景颜色 在浏览器端将html的table转成Excel,可以参考下面的库 https://github.com/JackGit/table2excel.js ...

  2. VC/MFC如何设置对话框背景颜色

    方法一:调用CWinApp类的成员函数SetDialogBkColor来实现.  (这个函数已经废弃) ? 1 void SetDialogBkColor(COLORREF clrCtlBk = RG ...

  3. MFC开发IM-第十一篇、MFC设置对话框的背景颜色及设置透明

    转载自:http://blog.sina.com.cn/s/blog_673ccb5b01010uwr.html 设置背景颜色:     我用了很多方法都不行,查了很多资料,现在说一下解决方案吧.   ...

  4. 转型之路之Excel单元格按数值显示带背景颜色进度条

    汇报工作进度时,很多人Excel 经常是这样的: 但领导希望看到内容通常是这样的: 这个功能怎么实现呢? 下面说下Excel单元格如何按数值显示一个背景颜色的进度条,以WPS Office为例: 注意 ...

  5. 修改基于formView的MFC单文档背景颜色

    方法: (1)先调出BOOL CXXXView::OnEraseBkgnd(CDC* pDC)函数.刚开始从类向导的虚函数中搜索OnEraseBkgnd,发现怎么也找不到(不知道是不是只有我一人这样, ...

  6. 如何自己手动修改win10磁贴背景颜色?

    前言 当我们安装完应用后,可以选择将应用图标固定到"开始"屏幕,于是就会产生一个磁贴,有的应用会自带背景颜色,有的则是默认的主题色.其实这个只不过是应用本身没有没有去适配win10 ...

  7. 【MFC】带背景的工具栏

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 带背景的工具栏可以为程 ...

  8. 【VS开发】VS2010 MFC中控件、对话框等背景颜色动态修改的方法

    [VS开发]VS2010 MFC中控件.对话框等背景颜色动态修改的方法 标签(空格分隔):[VS开发] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明: ...

  9. MFC 之 控件的颜色、字体、背景设置

    实现WM_CTLCOLOR消息 HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr = CDia ...

  10. VS2010 MFC中改变static字体颜色、大小、背景颜色(自定义类),及手动关联变量的方法...

    在MFC的Dialog工程中生成一个CStatic的自定义类,类名例如为:CColorStatic 定义必要的变量: protected:COLORREF m_crText; // 字体颜色COLOR ...

最新文章

  1. 数字资产云交易所搭建开发平台,云交易的优势在哪?
  2. asp.net c#截取指定字符串函数
  3. 尚硅谷_MySQL常见命令介绍
  4. 一个简单易用的图标字体库和CSS框架fontawesome
  5. [C++] GCC multilib
  6. Android 系统性能优化(29)---给 App 提速:Android 性能优化总结
  7. 电脑上如何进行录屏?
  8. SQL Server 2008数据备份与还原
  9. CSS---px rpx pt em rem四种单位总结
  10. @4-1 CCF 2020-06-1 线性分类器
  11. 笔记本html连接电视机,详细教您笔记本连接电视
  12. Linux下 Xpad不能移动拖动 解决办法
  13. 【BUUCTF】reverse2
  14. 胡玮炜离职,摩拜成美团大包袱,王兴后悔了吗?
  15. 电信光猫获取超级管理密码
  16. VMware vSphere Hypervisor 7(ESXi 7)
  17. PyTorch实例2——文本情绪分类器
  18. 基于BP神经网络预测日本麻将立直听牌
  19. android 音乐播放器评测,谁强大还省资源 六款主流Android音乐播放器评测
  20. Gradle 构建速度优化

热门文章

  1. 分布式GNN系统环境配置
  2. Optimization Week 4: Duality
  3. 适合运动的耳机有哪些、最好用的五款运动型耳机推荐清单
  4. win7系统安装sql2000数据库时没有反应,不出来安装界面?
  5. 直线外一点到直线的距离
  6. printf输出二进制
  7. 最新Java面试题整理!java字符大写转小写
  8. 你必须认识的五名网络女红人
  9. IOI2021集训队作业
  10. 如何判断两条线(轨迹)的重叠区域