MFC_禁止标题栏重绘,改变标题栏,双缓冲标题栏贴图(转载)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

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

只需要 处理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;

  &

MFC标题栏源码 首先第一点很要:给想学自的新手看最好了。 标题栏,应该是比较完善的了,应该没有什么BUG,不过代码比较粗糙,没有很好的整理,但注释非常多,比较好看懂,用到了HOOK。 立即下载

相关推荐

在非客户区上自窗体标题栏

1.准备工作。(1)得到文件夹中的位图句柄:首先要准备相应图片。HBITMAP bitmap;bitmap=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"skin//Test.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE); CBitmap cbmp;cbmp.Attach(bitmap);其...

weixin_30443075的博客 363

mfc,vc 禁止标题栏,改变标题栏双缓冲标题栏贴图

需要在标题栏贴图,更换标题栏背景的时候,不想要标题栏显示颜色,尤其拉动改变窗体大小的时候,所以需要禁止标题栏的方法。只需要 处理WM_NCPAINT消息就好了,消息处理函数OnNcPaint中去掉CDialog::OnNcPaint(),从此世界安静了标题栏更换颜色,标题栏贴图,窗体其他位置贴图也可以用这里的贴图函数//******************************

darkduck9989的专栏 4919

完美解决VC++ 自标题栏阻止系统进行(出现最大化,最小化,关闭)

一直以来,在自标题栏一直没有一个完美的方法。当然清除标题栏,完全自己也是可以的。但是失去了窗口本身的一些特性。 本人最近正好一直在研究这方面,结果也遇到了此难题。不过最终还是解决了,现在把方法共享出来分享。   第一步:载OnNcHitTest 全部返回标题栏操作。   UINT CXXDialog::OnNcHitTest( LONG x, LONG y ) { LRES

zdy6367的专栏 2112

MFC VisualManager 实现 Ribbon 修改标题 颜色

MFC 通过 VisualManager 修改 ribbon 标题 颜色和样式

huyun12041204的博客 793

OnPaint和OnDraw的区别

<br />问题:我在视图画的图象或者文字,当窗口改变后为什么不见了?OnDraw()和OnPaint()两个都是解决上面的问题,有什么不同?<br />答:OnDraw()和OnPaint()好象兄弟俩,因为它们的工作类似。<br />至于不见了的问题简单,因为当你的窗口改变后,会产生无效区域,这个无效的区域需要画。一般Windows会发送两个消息WM_PAINT(通知客户区 有变化)和WM_NCPAINT(通知非客户区有变化)。非客户区的画系统自己搞定了,而客户区的画需要我们自己来完成。这就需要O

asaasa66的专栏 522

MFC界面美化---自标题栏

MFC界面美化,MFC标题栏,自MFC按钮,自

dz131lsq的博客 5737

MFC对话框标题栏颜色自标题栏由过渡色组成,自关闭按钮

一:步骤 (1)新建一个基于对话框的MFC程序,打开对话框属性设置界面,去掉对话框的标题栏和边界BORDER(vc和vs的设置相似,这里使用的是vs2015,界面与vc稍有不同), (2)在客户曲自一个标题栏和关闭按钮,需要使用到WM_PAINT消息的处理函数,使用Class WIZARD添加OnPaint()消息相应函数 (3)为了使自标题栏能够用鼠标拖动窗口,并且使自的关闭按钮能够

ykizz的博客 5536

MFC标题栏和边框

MFC窗口有标题栏和边框的时候,不是很方便,在OnNcPaint中标题栏如果调用基类的OnNcPaint,自己的后面的都不生效,如果不调用基类的OnNcPaint,win10上的mfc程序出现了win7风格的边框,而且宽度还不能控制。 移除边框 DWORD dw = ::GetWindowLong(GetSafeHwnd(), GWL_STYLE); dw = dw &amp; ...

youyudexiaowangzi的专栏 5840

如何禁止窗体上系统按钮的

//===================//作者:aaaSoft//日期:2010年2月9日//论坛:http://bbs.scbeta.com///=================== 要做出一个好看的界面,必然要自己处理窗体的边框和标题框,也就是非客户区(Non-ClientArea)。一般来说拦截窗体的WM_NCPAINT就可以自己想画什么就画什么了。不过当窗体激活...

dingqiue1982的博客 419

VC常用控件用法

chunseye的专栏 2355

MFC标题栏、菜单栏并更改状态栏背景色

MFC标题栏、菜单栏并更改状态栏背景色 【下载地址】MFC标题栏菜单栏并更改状态栏背景色 MFC标题栏、菜单栏并更改状态栏背景色本仓库提供了一个资源文件,主要用于在MFC应用程序中标题栏、菜单栏,并更改状态栏的背景色 ...

gitblog_09767的博客 624

使用图句柄HDC在客户区、非客户区、临时客户区

首先要知道对于一个窗体,什么是客户区,什么是非客户区。例如下面一个窗体: 客户区是指:红色框框所围住的白色区域。 非客户区是指:包括蓝色标题栏、蓝色边框、白色区域在内的整个窗体。 1、客户区图:WM_PAINT是客户区显示更新消息,所有客户区图都要在此消息回调时制,也就是OnPaint()函数中进行制,以BeginPaint()开始,以EndPaint()结束。 v

小米的修行之路 3615

【亲测免费】 自定义MFC界面:标题栏、菜单栏与状态栏背景色

自定义MFC界面:标题栏、菜单栏与状态栏背景色 【下载地址】MFC标题栏菜单栏并更改状态栏背景色 MFC标题栏、菜单栏并更改状态栏背景色本仓库提供了一个资源文件,主要用于在MFC应用程序中标题栏、菜单栏,并更改状态栏的背景色 ...

gitblog_09761的博客 920

关于OnPaint函数覆盖编辑框的问题

可以使用:UpdateData(TRUE); UpdateData(FALSE);

u010743187的专栏 682

SDI和MDI程序中对非客户区(标题栏、左右下边界)的美化

下载源代码     基本思路是载CMainFrame类的DefWindowProc()函数,并判断消息为:WM_NCPAINT,WM_NCACTIVATE,WM_NOTIFY的时候,调用自己的制窗口标题栏的函数。用GetSystemMetrics(SM_CSFRAME)和GetSystemMetrics(SM_CYFRAME)可以取得标题栏的左上角的坐标。最大化,最小化的按钮自己画,如果不是

Mirage520的专栏 1706

窗口显示()与隐藏事件WM_ACAD_KEEPFOCUS、ON_WM_SIZE()、ON_WM_PAINT()、ON_WM_ERASEBKGND

//界面非客户区域失效可通过制消息进行;常与虚函数OnDraw一起使用 WM_NCPAINT() void OnNcPaint(); //界面焦点事件 //acadarx非模态对话框的焦点是当前焦点,CAD中非模态对话框一般都要用它,最简单的实现是直接返回TRUE。或判断当前光标坐标是否在对话框窗口内。 ON_MESSAGE(WM_ACAD_KEEPFOCUS, OnAcadKeepFocus) afx_msg LRESULT OnAcadKeepFocus(WPARAM, LPARAM); PO

weixin_42331112的博客 933

MFC对话框如何使用工具栏并修改工具栏的背景颜色与自对话框统一(二)

写这篇文章只是为了解决我上一篇文章遗留的一个问题,本来觉得这个问题可以不用管,但是在我写的程序中发现并不能置之不理,先来现这个问题     工具栏有一部分没有上     看红色框包围的地方,是背后 VS2010 的界面,因为程序擦成透明的啦,上一篇文章我错误的想成那块没有上上的区域是属于对话框的,也就有了我上一篇文章在 OnEaserBkgnd 和 OnPaint 画背景之分

panshiqu的专栏 5029

OnPaint()闪烁问题

void CXinDlg::OnPaint()  {    if (IsIconic())    {       CPaintDC dc(this); // device context for painting       SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);       // Center icon in c

fuzaiyin5620的博客 1969
上一篇: xmpp介绍与RFC3920学习
下一篇: 给ActiveX控件签名 (转)
zhangmoon
博客等级 码龄19年 11粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值