以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助自定义窗口最小化  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=55383)

--  作者:bzfc57
--  发布时间:2014/8/15 14:57:00
--  求助自定义窗口最小化
这是天问的自定义窗口,我希望点击任务栏图标可以最小化:
图片点击可在新窗口打开查看此主题相关图片如下:01_副本.png
图片点击可在新窗口打开查看

安装bin老师提供的
全局代码
<DllImport("user32.dll", EntryPoint := "GetWindowLong", CharSet := CharSet.Auto)> _
Public Function GetWindowLong(hWnd As HandleRef, nIndex As Integer) As Integer
End Function

<DllImport("user32.dll", EntryPoint := "SetWindowLong", CharSet := CharSet.Auto)> _
Public Function SetWindowLong(hWnd As HandleRef, nIndex As Integer, dwNewLong As Integer) As IntPtr
End Function

窗口afterload代码

Dim WS_SYSMENU As Integer = &H00080000
Dim Min As Integer = &H00020000
Dim windowLong As Integer = GetWindowLong(new HandleRef(e.Form.Baseform, e.Form.Baseform.Handle), -16)
SetWindowLong(new HandleRef(e.Form.Baseform, e.Form.Baseform.Handle), -16, windowLong Or WS_SYSMENU Or min)

这样可以实现,但是导致窗口大小不能调整了。
求助老师帮忙解决这个问题,即点击任务栏可以最小化,又不影响窗口调整大小。


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自定义皮肤商业版.zip






--  作者:有点甜
--  发布时间:2014/8/15 15:08:00
--  

代码

 

Dim x As new  BlueSkin(e.Form)
forms("窗口1").baseform.ShowInTaskBar = True

Dim WS_SYSMENU As Integer = &H00080000
Dim Min As Integer = &H00020000
Dim Size As Integer = &H00040000
Dim windowLong As Integer = GetWindowLong(new HandleRef(e.Form.Baseform, e.Form.Baseform.Handle), -16)
SetWindowLong(new HandleRef(e.Form.Baseform, e.Form.Baseform.Handle), -16, windowLong Or WS_SYSMENU Or min Or size)


--  作者:bzfc57
--  发布时间:2014/8/15 15:20:00
--  
原本可以调整大小的呢,不希望多一个透明框。能不能在原基础上实现窗口最小化。
--  作者:bzfc57
--  发布时间:2014/8/15 15:32:00
--  
不改变原有功能与状态,就增加点击图标实现最小化
--  作者:有点甜
--  发布时间:2014/8/15 15:38:00
--  
 做不到。
--  作者:bzfc57
--  发布时间:2014/8/15 15:41:00
--  
难道是熊掌与鱼么
--  作者:有点甜
--  发布时间:2014/8/15 15:41:00
--  

测试了一下,你试试调换 一下位置

 

forms("窗口1").baseform.ShowInTaskBar = True
Dim WS_SYSMENU As Integer = &H00080000
Dim Min As Integer = &H00020000
Dim Size As Integer = &H00040000
Dim windowLong As Integer = GetWindowLong(new HandleRef(e.Form.Baseform, e.Form.Baseform.Handle), -16)
SetWindowLong(new HandleRef(e.Form.Baseform, e.Form.Baseform.Handle), -16, windowLong Or WS_SYSMENU Or min Or size)
Dim x As new  BlueSkin(e.Form)


--  作者:有点甜
--  发布时间:2014/8/15 15:48:00
--  
 再测试了一下,不能并存的。