求助无边框窗口的缩放问题

问题描述

C#中formborderstyle为none的窗口怎样实现缩放,用鼠标任意的改变它大小?还有,这种类型的窗口做主窗口时,点击任务栏中标签的时候无法实现最小化,怎么解决?要用到窗口和任务栏的句柄么?

解决方案

解决方案二:
privateconstintWM_NCHITTEST=0x84;privateconstintHTCLIENT=0x1;privateconstintHTCAPTION=0x2;protectedoverridevoidWndProc(refMessagem){base.WndProc(refm);if(m.Msg==WM_NCHITTEST&&this.FormBorderStyle==FormBorderStyle.None){Pointz=Control.MousePosition;if(z!=null){Pointtmp=this.PointToScreen(newPoint());z.X-=tmp.X;z.Y-=tmp.Y;}PaddingresizePadding=newPadding(3);intresult=0;if(z.X<(Left+resizePadding.Left))result=10;elseif(z.X>(Right-resizePadding.Right))result=11;if(z.Y<(Top+resizePadding.Top)){switch(result){case0:result=12;break;case10:result=13;break;case11:result=14;break;default:break;}}elseif(z.Y<(Top+20)){switch(result){case0:result=2;break;default:break;}}elseif(z.Y>(Bottom-resizePadding.Bottom)){switch(result){case0:result=15;break;case10:result=16;break;case11:result=17;break;default:break;}}if(result!=0)m.Result=(IntPtr)result;}}
解决方案三:
加上移动部分:protectedoverridevoidWndProc(refMessagem){base.WndProc(refm);#regionMovewithoutFormBorderif(m.Msg==WM_NCHITTEST){this.DefWndProc(refm);if(m.Result.ToInt32()==HTCLIENT)m.Result=newIntPtr(HTCAPTION);}#endregion#regionResizewithoutFormBorderif(m.Msg==WM_NCHITTEST&&this.FormBorderStyle==FormBorderStyle.None){Pointz=Control.MousePosition;if(z!=null){Pointtmp=this.PointToScreen(newPoint());z.X-=tmp.X;z.Y-=tmp.Y;}PaddingresizePadding=newPadding(3);intresult=0;if(z.X<(Left+resizePadding.Left))result=10;elseif(z.X>(Right-resizePadding.Right))result=11;if(z.Y<(Top+resizePadding.Top)){switch(result){case0:result=12;break;case10:result=13;break;case11:result=14;break;default:break;}}elseif(z.Y<(Top+20)){switch(result){case0:result=2;break;default:break;}}elseif(z.Y>(Bottom-resizePadding.Bottom)){switch(result){case0:result=15;break;case10:result=16;break;case11:result=17;break;default:break;}}if(result!=0)m.Result=(IntPtr)result;}#endregion}

解决方案四:
谢谢!但点击任务栏中标签的时候无法实现最小化的问题还是没能解决。当前窗口如何知道鼠标在点击任务栏标签?

时间: 2024-12-11 05:43:42

求助无边框窗口的缩放问题的相关文章

【Qt编程】基于Qt的词典开发系列&amp;lt;四&amp;gt;--无边框窗口的缩放与拖动

        在现在,绝大多数软件都向着简洁,时尚发展.就拿有道的单词本和我做的单词本来说,绝大多数用户肯定喜欢我所做的单词本(就单单界面,关于颜色搭配和布局问题,大家就不要在意了).有道的单词本: 我所做的单词本:         很明显,两者的主要区别就是周围的边框问题.你可以对比QQ以前的版本和这几年的版本,就会发现都倾向于下面这种窗口模式.下面我们就说说如何用Qt实现无边框窗口的缩放与拖动.         对于无边框窗口的拖动其实很简单,其基本思想是,在鼠标移动前后记录鼠标的坐标,然

【Qt编程】基于Qt的词典开发系列&amp;lt;五&amp;gt;--无边框窗口的拖动

       在上一篇文章中,我们讲述了如何进行无边框窗口的缩放与拖动,而在一些情况下,我们的窗口只需要进行拖动也不需要改变其大小,比如:QQ的登录窗口.本来在上一篇文章中已经讲述了如何进行窗口的拖动,但是却与窗口的缩放相关的程序放在一起,下面专门单独分离出来.       窗口的拖放只涉及到鼠标事件:按下操作.释放操作和移动操作,因此只需要重写这三个函数.由于程序比较简单,并且注释也比较详细,就不作过多介绍.新建一个基类为QWidget的Qt Gui应用程序,只需修改widget.h和widg

全新无边框窗口实现方式(转自yesky)

一种没有边框及菜单栏.工具栏.地址栏.状态栏等的无边框窗口(CW)曾经一度很流行,被很多网站尤其是个人网站所采用,CW也有现成的源码供网友们使用,但是最初的CW使用起来很不方便,有两个JS文件,还要设置一些参数,这对一些初学者来讲是很困难的事情.所以我就有了一个想法:重新写一个全新的无边框窗口,只用一个函数实现,以供网友方便使用. 我给这个全新的无边框窗口起名为NBW,NBW即No Border Window的缩写,只是想区别于CW.这个无边框窗口可以随意拖动.最小化.关闭等等,不仅在IE5/I

MFC 无边框窗口

问题描述 用MFC无边框窗口建立了三个对话框,一个为主对话框,其他两个为子对话框,为何当我在子对话框中操作完毕关闭子对话框后,点击主对话框中的按钮需要点第二次的时候才有响应呢?求教! 解决方案 解决方案二:你仔细检查一下你的代码顺序写错了吧解决方案三:引用1楼nemonwd的回复: 你仔细检查一下你的代码顺序写错了吧 检查了,应该没有解决方案四:求高手现身解决方案五:加我qq78122398.我给你改.这个简单解决方案六:要不你贴代码.我看看怎么写的.

无边框窗口代码详解_JSP编程

/*代码思路 此代码会以fullscreen方式打开一个空白窗口,然后用window.resize改变其大小. 最后在以写入onload="location.replace='url'"的办法将网址改变. 打开的窗口会是一个带有FRAME的窗口,其中窗口顶端会有一个高22的框架网页. 此网页是用来操纵窗口移动及关闭. */ /*说明 代码分两个部分,但总共牵涉到5个HTML文件及4个图像文件 第一部分是用来打开窗口,放在哪个文件都无所谓. 第二部分是用来控制窗口的移动及关闭,必须放在指

无边框窗口代码详解

/*代码思路 此代码会以fullscreen方式打开一个空白窗口,然后用window.resize改变其大小. 最后在以写入onload="location.replace='url'"的办法将网址改变. 打开的窗口会是一个带有FRAME的窗口,其中窗口顶端会有一个高22的框架网页. 此网页是用来操纵窗口移动及关闭. */ /*说明 代码分两个部分,但总共牵涉到5个HTML文件及4个图像文件 第一部分是用来打开窗口,放在哪个文件都无所谓. 第二部分是用来控制窗口的移动及关闭,必须放在指

winform中如何处理无边框窗体的缩放和托动

在winform经常用到无边框的窗体,原因就是想使自己的程序界面完全的自定义,网上也有过不少的相关资料 今天我发了一下的午的时间整理了一下.觉得还不错,贴出来看看. 为了提高托动的缩放的效率,减少系统开销,一般软件都用支持只显示窗体四周的虚线的方法,这也是windows默认的设置 首先看下其它软件的窗体托动,先说QQ2009吧,QQ2009的主窗体在托动时如果在屏幕上来回快速托动,等停下来时你会发现,很有可能鼠标现在在窗体的位置已经不是按下的位置了.再说酷我音乐盒.鼠标在托动或缩放窗体时,如果鼠

全新无边框窗口的制作的一个例子

<html> <head> <script language=javascript> minimizebar="minimize.gif"; //窗口右上角最小化"按钮"的图片 minimizebar2="minimize2.gif"; //鼠标悬停时最小化"按钮"的图片 closebar="close.gif"; //窗口右上角关闭"按钮"的图片 c

node-webkit无边框窗口用纯JS实现拖动改变大小

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <meta charset="utf-8" />     <title></title>     <script src="../jquery-1.11.0.min.js"></script>     <l