需要在标题栏上贴图,更换标题栏背景的时候,不想要标题栏显示颜色,尤其拉动改变窗体大小的时候,所以需要禁止标题栏重绘的方法。

只需要 处理WM_NCPAINT消息就好了,消息处理函数OnNcPaint中去掉CDialog::OnNcPaint(),从此世界安静了

标题栏更换颜色,标题栏贴图,窗体其他位置贴图也可以用这里的贴图函数

//*******************************************************************//

void CMyDlg::DrawTitleBar(CDC *pDC)
{
 CDC memDC;
 CBitmap bmp;
 CRect rect, rtTitle;
 CPoint point;
 GetClientRect(rect);

//获取标题栏大小
 rtTitle.left = GetSystemMetrics(SM_CXFRAME);
 rtTitle.top = GetSystemMetrics(SM_CYFRAME);
 rtTitle.right = rect.right - rect.left - GetSystemMetrics(SM_CXFRAME);
 rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);

point.x = rect.right  + GetSystemMetrics(SM_CXFRAME);
 point.y = 30;

memDC.CreateCompatibleDC(NULL);
 bmp.CreateCompatibleBitmap(pDC,point.x,point.y);
 CBitmap *pOldBit=memDC.SelectObject(&bmp);

//背景颜色
 memDC.FillSolidRect(0,0,point.x,point.y,RGB(125,0,125));

贴图
 //CBitmap pic;
 //pic.LoadBitmap(IDB_BITMAP1);
 //ShowBitmap(&memDC,0,0, rtTitle.right, 30, pic);

pDC->BitBlt(0,0,point.x,point.y,&memDC,0,0,SRCCOPY);
 
 pOldBit->DeleteObject();
 memDC.DeleteDC();
 bmp.DeleteObject();

}

LRESULT CMyDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
 //return CDialog::DefWindowProc(message, wParam, lParam);
 
 LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);

if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message==WM_NCACTIVATE ||message == WM_NOTIFY)
 {
  CDC* pWinDC = GetWindowDC();
  if (pWinDC)
   DrawTitleBar(pWinDC);
  ReleaseDC(pWinDC);
 }
 return lrst;

}

void CMyDlg::OnNcPaint()
{
 //CDialog::OnNcPaint();
}

BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
{
  return TRUE;

}

void CMyDlg::ShowBitmap(CDC *pDC, int x, int y, int nW, int nH, CBitmap &m_bitmap)
{
 CDC memDc, mdc;

memDc.CreateCompatibleDC(NULL);
 mdc.CreateCompatibleDC(NULL);

CBitmap memBitmap;
 memBitmap.CreateCompatibleBitmap(pDC,nW,nH);
 CBitmap *OldBmp = memDc.SelectObject(&m_bitmap);
 
 mdc.SelectObject(&m_bitmap);
 memDc.BitBlt(x,y,nW,nH,&mdc,0,0,SRCCOPY);

BITMAP bm;
 m_bitmap.GetBitmap( &bm );

//贴图
 //pDC->BitBlt(x, y,
 // x + bm.bmWidth,y + bm.bmHeight,
 // &MemDc, 
 // 0, 0, 
 // SRCCOPY);

//拉伸
 pDC->StretchBlt(x,y, nW, nH ,&memDc,0,0,
  bm.bmWidth,bm.bmHeight,SRCCOPY);

memDc.SelectObject(OldBmp);
 memDc.DeleteDC();

}

技巧_MFC_标题栏背景相关推荐

  1. android开发 修改标题栏背景_Android哆啦A梦调试工具体验

    滴滴开发调试工具(https://github.com/didi/DoraemonKit)是滴滴开源的一款功能齐全的客户端( iOS .Android )研发助手 是什么 用图说话,这个调试工具其实就 ...

  2. 博途软件中多重背景块的建立_FB块的使用技巧和多重背景数据的使用

    FB的使用技巧:FB的执行需要专门提供一个数据块DB,背景数据块DB,只能FB块访问使用它 我们先制作一个FB块,这里不在演示制作的过程(和FC一样),具体要求见下图: FB内程序建立完成后,在OB1 ...

  3. Win10的两个实用技巧系列之华硕电脑设置面部识别的技巧、删除背景图片的方法

    Win10系统的华硕电脑怎么使用人脸解锁? 华硕电脑设置面部识别的技巧 Win10系统的华硕电脑怎么使用人脸解锁?华硕电脑想要添加面部识别,方便人脸解锁,下面我们就来看看华硕电脑设置面部识别的技巧 有 ...

  4. 简单鲁班锁拼装技巧_3个简单的技巧来消除背景时,丑陋的边缘

    简单鲁班锁拼装技巧 If you cut out a lot of objects from photographs, chances are you've run across a few roug ...

  5. android开发 修改标题栏背景_基于.NET的APP开发方式中MobileForm的使用smobiler

    样式一 一. Toolbar 1. 目标样式 我们要实现上图中的效果,需要如下的操作: 2. 修改属性 a. 修改Mobile Form的Toolbar属性 获取窗体底部工具栏,打开集合编辑器,并点击 ...

  6. android开发 修改标题栏背景_android开发修改状态栏背景色和图标颜色

    修改状态栏背景色和图标颜色 默认是黑底白字的,现在要改为白底黑字的 先看下效果图: Screenshot_2018-01-03-19-20-27-797_com.yiban1314..png 1.状态 ...

  7. PyCharm使用技巧之设置背景图片

    设置的路径为: File | Settings | Appearance & Behavior | Appearance 选择Background Image 弹窗的窗口中 Image:点击最 ...

  8. android开发 修改标题栏背景_更改标题栏(Android)中的文字和背景颜色?

    我构建了一个 Android应用程序,我正在尝试更改标题的栏背景和文本颜色. 在AndroidManifest.xml中: ... android:theme="@style/ThemeSe ...

  9. Android中自定义ScrollView的滑动监听事件,并在滑动时渐变标题栏背景颜色

    效果图 滑动前: 滑动中: 滑动到底部: 项目结构 ObservableScrollView package com.jukopro.titlebarcolor;import android.cont ...

  10. android-设置状态栏与标题栏背景

    通过下面记步,可以设置应用的title与系统的通知状态栏系统的背景颜色: 1. 设置系统Theme <style name="AppTheme.Base" parent=&q ...

最新文章

  1. cppcheck编译安装命令
  2. Effective C++ --1 让自己习惯C++
  3. Linux查看系统信息的一些命令及查看已安装软件包的命令
  4. python json.dumps慢_python json.dumps中文乱码问题解决
  5. python刘卫国实验题_MATLAB 程序设计与应用(刘卫国版)习题答案3-4
  6. Reporting Services Internal Error(诡异的问题)-【转载】
  7. python大众点评最新字体加密破解完结
  8. bzoj 2987: Earthquake(类欧几里得)
  9. 向java全台推送数据等
  10. js获取月的第一天、最后一天
  11. hdmi线和vga线哪个好?用HDMI线和VGA线,显示屏画质到底相差多大?
  12. web网关_配置手册
  13. 黑马程序员pink老师Javascript语法基础 | 总结
  14. leetcode402. 移掉 K 位数字
  15. redirectType=Found和redirectType=Permanent哪个是301哪个是302?
  16. 中国科学院大学计算机学院夏令营,中国科学院大学2018年全国大学生“软件与网络”夏令营通知...
  17. 解析智能抄表工作系统是如何运作的
  18. matlab空值NaN填充
  19. css-doodle 学习第一天
  20. 区块链产业生态发展情况-中国区块链产业生态发展

热门文章

  1. 什么是智能颈部按摩仪低频脉冲电流?它会对人体有何影响?
  2. netty:Failed to initialize a channel. Closing
  3. c语言求成绩标准差,C语言中求和、计算平均值、方差和标准差的实例
  4. MacBook Air装单独win7
  5. 机器学习_正态分布下的贝叶斯分类器
  6. c++11新特性std::is_trivial
  7. centos oracle 修改监听服务名_虚拟机(Oracle Virtual Box)下ORACLE的安装
  8. Web Strom 必备快捷键
  9. MAX3485芯片资料整理
  10. Unity 游戏数据的存档读档,数据加密与解密