A awind616 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-04 #1 即改变标题栏的风格和外观,用新的图标按钮来实现窗体的最大化,关闭等.类似于金山词霸主窗体标题栏的的风格
J jrq Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-04 #2 你看看吧~ 能用上的 ----------------------------------- -------如何在标题栏上增加按钮----------------- 浙大快威邮电开发部 陈勇 ---- 大家在使用某些软件的过程中,有没有注意到有些软件有一些很有趣的东西。比如说在主窗口的标题栏上居然有一个按钮。 在Internet中随处可见这样的小控件。按钮怎么可以加入到非客户区(Client)呢? ---- 在这里,最关键的一点就是,大家不要被传统知识误导:真的认为它是一个按钮。有名柄(handle)的控件当然不能放在标题栏上了。 有经验的程序员用Spy++跟踪一下的话,马上就会发现其中的秘密。它并不是一个按钮,只不过是处理成按钮的样子罢了。 ---- 既然知道了所以然,那么我们为什么不能自己来做一个呢,当然没问题,下面我们就用Delphi来实现它,讲注意我的注解。 ---- 在具体实例之前,我们应该知道几个关于标题栏的重要的消息: ---- WM_NCPAINT:重画标题栏消息。我们必须截住它,可以在这里重画按钮; ---- WM_NCLBUTTONDOWN:在标题栏上按下鼠标左键消息。我们可以截住它,在标题栏上画出按钮按下的样子, 并且可以在其中进行自已的单击事件的处理,使得它像一个按钮; ---- WM_NCLBUTTONUP:在标题栏上释放鼠标左键消息。我们可以截住它,在标题栏上画出按钮弹起的样子; ---- WM_NCLBUTTONDBLCLK:在标题栏上双击鼠标左键消息。我们可以截住它,当在按钮区域双击时, 我们就该使其无效,从而避免窗体执行最大化和还原操作。 ---- WM_NCRBUTTONDOWN:在标题栏上按下鼠标右键消息。我们可以截住它,当在按钮区域双击时,我们就该使其无效, 从而避免弹出窗体按制菜单。 ---- WM_NCMOUSEMOVE:在标题栏上移动鼠标消息。我们可以截住它,当鼠标移出按钮区域时, 我们就必须画出按钮没有被按下,即凸起时的样子。 ---- WM_NCACTIVATE:当标题栏在激活与非激活之间切换时收到该消息。我们可以截住它,当该窗口处理激活状态时, 我们可以做一些事情,比如说将我们的标题栏按钮上的字体变灰或变黑来指示该窗口的当前状态。 ---- 大家从这里可以发现,标题栏的消息都是WM_NC开头的
你看看吧~ 能用上的 ----------------------------------- -------如何在标题栏上增加按钮----------------- 浙大快威邮电开发部 陈勇 ---- 大家在使用某些软件的过程中,有没有注意到有些软件有一些很有趣的东西。比如说在主窗口的标题栏上居然有一个按钮。 在Internet中随处可见这样的小控件。按钮怎么可以加入到非客户区(Client)呢? ---- 在这里,最关键的一点就是,大家不要被传统知识误导:真的认为它是一个按钮。有名柄(handle)的控件当然不能放在标题栏上了。 有经验的程序员用Spy++跟踪一下的话,马上就会发现其中的秘密。它并不是一个按钮,只不过是处理成按钮的样子罢了。 ---- 既然知道了所以然,那么我们为什么不能自己来做一个呢,当然没问题,下面我们就用Delphi来实现它,讲注意我的注解。 ---- 在具体实例之前,我们应该知道几个关于标题栏的重要的消息: ---- WM_NCPAINT:重画标题栏消息。我们必须截住它,可以在这里重画按钮; ---- WM_NCLBUTTONDOWN:在标题栏上按下鼠标左键消息。我们可以截住它,在标题栏上画出按钮按下的样子, 并且可以在其中进行自已的单击事件的处理,使得它像一个按钮; ---- WM_NCLBUTTONUP:在标题栏上释放鼠标左键消息。我们可以截住它,在标题栏上画出按钮弹起的样子; ---- WM_NCLBUTTONDBLCLK:在标题栏上双击鼠标左键消息。我们可以截住它,当在按钮区域双击时, 我们就该使其无效,从而避免窗体执行最大化和还原操作。 ---- WM_NCRBUTTONDOWN:在标题栏上按下鼠标右键消息。我们可以截住它,当在按钮区域双击时,我们就该使其无效, 从而避免弹出窗体按制菜单。 ---- WM_NCMOUSEMOVE:在标题栏上移动鼠标消息。我们可以截住它,当鼠标移出按钮区域时, 我们就必须画出按钮没有被按下,即凸起时的样子。 ---- WM_NCACTIVATE:当标题栏在激活与非激活之间切换时收到该消息。我们可以截住它,当该窗口处理激活状态时, 我们可以做一些事情,比如说将我们的标题栏按钮上的字体变灰或变黑来指示该窗口的当前状态。 ---- 大家从这里可以发现,标题栏的消息都是WM_NC开头的
H huajianguo Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-04 #3 我靠,请注意换行!!兄弟!!! 是不是想扭断我的脖子!!
A awind616 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-04 #4 这篇文章我在'DELPHI技术论坛'上看到过了,但帮助不大, 需要对很多消息的处理,复杂着呢.
O onlyonekgx Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-04 #6 你还不如把标题栏去掉, 自己做一个虚拟标题栏
Z zxb200 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-04 #7 建議不顯示窗口標題欄,自己做一個與標題欄樣式一樣的東東。 用setwindowlong(handle,GWL_STYLE,not ws_caption);可以達到隱藏標題樣。 在Form窗口上加Panel,可在其上加按鈕,定制最大化,最小化,關閉,移動等事件。
建議不顯示窗口標題欄,自己做一個與標題欄樣式一樣的東東。 用setwindowlong(handle,GWL_STYLE,not ws_caption);可以達到隱藏標題樣。 在Form窗口上加Panel,可在其上加按鈕,定制最大化,最小化,關閉,移動等事件。
L lmstation Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-04 #8 楼上说的很有道理 还不用那么麻烦 自己画一个一贴 编写相应操作 :)
A awind616 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-05 #9 谢谢各位所提的建议,对我启发很大,过两天就给你们发奖[ 加分 ].现在我还在看看是否有更好的答案...
天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-05 #10 呵,这个最好了 form1.borderstyle:=bsnone; 然后,再放一个PANEL,align:=altop; 在PANEL上放按钮等等,自己画了,这个就当标题栏好了,最棒:)
A awind616 Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-05 #11 To 天真 将form1.borderstyle:=bsnone,这样我的窗体边框不就... 我的窗体是多文档风格,左边有一树型的工具面板,子窗体的工具栏在右边,上面就是标题栏,标题栏下面是具有边框的主菜单(同时具有XP的风格和外观),客户区有一背景图,放一些标志。若能做出漂亮的标题栏,我的整个主窗体的效果就great了...
To 天真 将form1.borderstyle:=bsnone,这样我的窗体边框不就... 我的窗体是多文档风格,左边有一树型的工具面板,子窗体的工具栏在右边,上面就是标题栏,标题栏下面是具有边框的主菜单(同时具有XP的风格和外观),客户区有一背景图,放一些标志。若能做出漂亮的标题栏,我的整个主窗体的效果就great了...