| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1864 人关注过本帖
标题:[求助]如何保持窗口大小并能使用最小化,关闭按扭
只看楼主 加入收藏
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
 问题点数:0 回复次数:11 
[求助]如何保持窗口大小并能使用最小化,关闭按扭

我想让程序窗口不能让用户调整大小.但又要保留标题栏和最小化,关闭按扭.

怎么实现,大家帮帮忙

搜索更多相关主题的帖子: 窗口 用户 调整 
2007-08-11 06:40
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 

见PK赛 连加的例程,有限制窗体最小size的API使用,只要把最大也限制为那个size。

Type POINTAPI
x As Long
y As Long
End Type

Type MINMAXINFO
ptReserved As POINTAPI
ptMaxSize As POINTAPI
ptMaxPosition As POINTAPI
ptMinTrackSize As POINTAPI
ptMaxTrackSize As POINTAPI
End Type

Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)

Public Const GWL_WNDPROC = (-4)
Public Const WM_GETMINMAXINFO = &H24

Dim OldProc&
Dim mhWnd&

'==================================================
'回调
Function WinProc&(ByVal hWnd&, ByVal wMsg&, _
ByVal wParam&, ByVal lParam&)

Select Case wMsg&
Case WM_GETMINMAXINFO
Dim MinMax As MINMAXINFO

CopyMemory MinMax, ByVal lParam, Len(MinMax)

MinMax.ptMinTrackSize.x = 567
MinMax.ptMinTrackSize.y = 250
' MinMax.ptMaxTrackSize.x = 808
' MinMax.ptMaxTrackSize.y = 250
' 注意这里 把x统一了 y统一了 去除注释

CopyMemory ByVal lParam, MinMax, Len(MinMax)

WinProc& = 1
Exit Function
End Select

WinProc& = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)
End Function
'==================================================


'==================================================
'挂钩
Sub Hook(ByVal nhWnd&)

If OldProc <> 0 Then Exit Sub

mhWnd& = nhWnd&

OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)

End Sub
'==================================================


'==================================================
'脱钩
Sub UnHook()

If OldProc = 0 Then Exit Sub

SetWindowLong mhWnd, GWL_WNDPROC, OldProc
OldProc = 0
End Sub
'==================================================

2007-08-11 07:43
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
收藏
得分:0 
你可直接在窗體的屬性里面設啊,
首先讓BorderStyle的屬性直設為1
然后再讓MinButton的屬性設為真的。


拥有蓝天的白云,拥有你的我.
2007-08-11 08:09
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
收藏
得分:0 

顶楼上。。。。。


2007-08-11 08:35
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
得分:0 
哇,谢谢大家
3楼的办法太好啦
2007-08-11 09:45
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
我没看仔细……最小化&关闭………………orz
我以为最大化也要保留
2007-08-11 11:00
BEARBEN
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2007-7-7
收藏
得分:0 
LS用Hook保持窗口大小,在编程中用了Hook一定要记得UnHook,用Hook在调试的时候,会忘记UnHook一下。

调试时没有UnHook,调试几次会出现VB自动关闭、也有VB调试过程中卡住的情况的。

2007-08-11 11:45
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
嗯 是这样。VB就是这样 容易引火烧身
2007-08-11 17:15
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
收藏
得分:0 
LZ也可以自定义窗体

Repeat  Life=Study;Until (death);
2007-08-11 17:26
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
LS说得可爱极了……
2007-08-11 17:47
快速回复:[求助]如何保持窗口大小并能使用最小化,关闭按扭
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034844 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved