界面-求助:mfc非客户区自绘请求高手指点,不知道该怎么做

问题描述

求助:mfc非客户区自绘请求高手指点,不知道该怎么做 50C
想美化一下界面,查资料说要重绘非客户区,看的晕头转向,麻烦高手给指点一下思路,最好有代码可以参考一下

解决方案

WM_NCPAINT这个就是重绘飞客户区的消息,响应在这个消息在里面绘图就好了。

解决方案二:
http://blog.csdn.net/faihtua/article/details/8082264

解决方案三:
参考:
VC 轻松实现非客户区按钮
http://blog.csdn.net/testcs_dn/article/details/7655613
VC 窗体非客户区的绘制 OnNcPaint(UINT message WPARAM wParam LPARAM lParam) 2012-06-09 09:52
http://blog.csdn.net/testcs_dn/article/details/7647563

解决方案四:
重写这个消息WM_NCPAINT

解决方案五:
重写这个消息WM_NCPAINT

解决方案六:
MFC 自绘窗口非客户区

时间: 2024-08-03 18:03:46

界面-求助:mfc非客户区自绘请求高手指点,不知道该怎么做的相关文章

c++-MFC非客户区的刷新及防闪烁问题

问题描述 MFC非客户区的刷新及防闪烁问题 弄重绘标题栏的时候遇到了问题.. 按钮贴图什么的都好了.但是在标题栏写"菜单"项的时候遇到了刷新的问题. "菜单"项我是用pDC->DrawText()写上去的("菜单"是两个字而不是按钮啥的). 希望的效果是实时追踪鼠标的位置,若鼠标指在"菜单"所在矩形区域时就把俩字变色显示 于是我就先把之前写的字覆盖掉再重新写 但是这样就出现闪烁了.. 各位有没有好办法解决一下.. 解决方

修改窗体非客户区大小更改窗体标题栏高度

想修改窗体的非客户区,首先就得明白为什么要修改非客户区,什么是非客户区 从窗体或控件来看,非客户区就是无法放置控件的区域,比如窗体的标题栏,和边框,菜单栏也是非客户区,菜单栏不是控件是画上去的 文本框的边框,滚动条区域都是非客户区 为什么要修改非客户区呢?? 原因是为了自绘,让边框好看一些,比如要加高窗体标题栏,就需要改非客户区,自绘非客户区会响应 WM_NCPAINT消息 在这个消息里,你可以进行窗体,控件,非客户区的自绘 好啦,现在转入正题,要修改非客户大小,必须处理 WM_NCCALCSI

VC 窗体非客户区的绘制

VC 窗体非客户区的绘制 OnNcPaint(UINT message, WPARAM wParam, LPARAM lParam) . void CSkinAndLangDlg::OnNcPaint(UINT message, WPARAM wParam, LPARAM lParam) { HDC WindowDC = ::GetWindowDC(m_hWnd); // //取得整个窗体矩形 RECT WindowRect; GetWindowRect(&WindowRect); Offset

轻松实现非客户区按钮

一.简介 有时我们需要在非客户区(例如:标题栏)添加按钮,并对按钮作出响应,如下图所示: 为此我封装了两个类CNCButton和CNCButtonManager,CNCButton主要用于按钮绘制,CNCButtonManager用于按钮的管理并对非客户区的消息进行处理.如下是几个主要的非客户区消息: WM_NCHITTEST WM_NCACTIVATE WM_NCPAINT

如何按非客户区移动窗体

看到一介绍如何按非客户区移动窗体,既重载WM_NCHITTEST,返回HTCAPTION.但我认为有一点不妥就是没有了鼠标右键功能.这里我介绍一种方法,即可已在客户区移动窗体又可以实现鼠标右键功能. 1.新建一工程DLG.采用默认设置. 2.添加消息处理函数: void CDlgDlg::OnLButtonDown(UINT nFlags, CPoint point) { PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,poin

wpf 能不能直接在非客户区绘图

问题描述 如题,非客户区,除了Hook,能不能通过drawvisual绘制?还有,现在我用了Hook,用c++写的,用了双缓冲,BitBlt直接拷贝的,但是调整窗体大小时会闪烁,换成gdiplus会好很多,调整过于平凡也会偶尔闪烁.还有没有别的解决办法? 解决方案 解决方案二:非客户区难不成不是值的标题栏?边框?

VC 轻松实现非客户区按钮

源代码下载 一.简介 有时我们需要在非客户区(例如:标题栏)添加按钮,并对按钮作出响应,如下图所示: 为此我封装了两个类CNCButton和CNCButtonManager,CNCButton主要用于按钮绘制,CNCButtonManager用于按钮的管理并对非客户区的消息进行处理.如下是几个主要的非客户区消息: WM_NCHITTEST WM_NCACTIVATE WM_NCPAINT 二.使用 2.1 首先我们需要引用两个类的头文件 #include"NCButtonManager.h&qu

编程-想在窗口客户区上画很多条直线,该怎么做?

问题描述 想在窗口客户区上画很多条直线,该怎么做? 当我画完一条线后准备要画下一条线时,这条线消失了,有没有什么办法把刚画完的直线留下来,我想在这窗口上画很多条直线,如何修改代码才能实现? 解决方案 那个InvalidateRect()函数,最后一个参数写NULL就好了. 解决方案二: 弄一个数据结构,譬如数组,把每次画线的坐标存储起来,然后在PAINT中需要绘画的是每根直线

VC 窗体非客户区的绘制 OnNcPaint(UINT message, WPARAM wParam, LPARAM lParam)

void CSkinAndLangDlg::OnNcPaint(UINT message, WPARAM wParam, LPARAM lParam) { HDC WindowDC = ::GetWindowDC(m_hWnd); // //取得整个窗体矩形 RECT WindowRect; GetWindowRect(&WindowRect); OffsetRect(&WindowRect, -WindowRect.left, - WindowRect.top); // //取得客户区矩