不是可以设置打开的时候自动最大化,再把这个窗口设为FIXED
解决方案 »
- 【分享】不用API获取计算机系统信息
- 马上结~~~
- 一个奇怪的问题!代码写的ADO,DATAGRID控件显示不出来,用ADODC控件却可以!
- 如何将域用户添加至某个域用户组中,如何修改域用户密码?(倾力送分)
- 关于窗体的BorderStyle的问题
- 多个复选框如何判断选中了哪个
- 在vb中如何调用(*.chm)的帮助文件
- 除了使用代理服务器外还有没有其他办法改变自己的IP欺骗服务器。
- Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP 可以下载了
- 简单问题,100分送上,如何用vba或Ado的到.xls文件中的某一张表的总行数?
- 如何选定特定的flexgrid单元
- 如何自定义vsprinter按钮?
wxy_xiaoyu 和 girl1983的矛盾,今天已经调解了,wxy_xiaoyu的道歉贴:http://expert.csdn.net/Expert/topic/1511/1511361.xml?temp=.8611109一直等她来回复,后来经过提醒才发现已经被封杀了
总是被一些莫名其妙的琐事搅了。伤心…………
不管这个Girl的问题最后怎样,我真的希望CSDN能好好的成长下去,给我们这些想一心钻研技术的人一片乐土。请大家有空翻翻2001年的帖子,来感受一下那时CSDN的氛围
谁封的,能不能站出来说一下为什么封掉。
如何控制MDIFORM的最大化
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const SC_MAXIMIZE = &HF030
Private Const MF_BYCOMMAND = &H0&
Private Const WS_MAXIMIZEBOX = &H10000
Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Sub MDIForm_Load()
Dim hMenu As Long, Success As Long
hMenu = GetSystemMenu(hwnd, 0)
Success = DeleteMenu(hMenu, SC_MAXIMIZE, MF_BYCOMMAND)
Dim xl As Long
Me.Show
xl = GetWindowLong(hwnd, GWL_STYLE)
xl = xl And (Not WS_MAXIMIZEBOX)
SetWindowLong hwnd, GWL_STYLE, xl
End Sub :),好源码,大家共享。
我现在倒是赞成封杀她,虽然今天刚刚解决了他们的矛盾,只能说我的一片苦心白费了,她还是一点悔改的意思都没有
关于她的答复,技术性的我们不多说,她有一些技术实力;非技术的,实在不敢恭维,真正谩骂胡搅的是哪个,参与这些讨论帖子的兄弟姐妹都很清楚,如果自己不自爱自重,一直出口成脏,再歪曲事实,只会让人退避三尺,论坛本身是讨论问题,交流意见解决问题的地方,不是让人来骂街吵大架的如果想交流技术,相信论坛都会欢迎,如果只想胡作非为,那还真得对不起了,相信没有人会想在一个乌烟瘴气的环境下平心静气的讨论解决问题不多说了,多说也没意思。
''''MDI 窗口代码:
Private Sub MDIForm_Load()
Load Form1
Form1.Show
End Sub''''子窗口代码:
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&
Private Sub Form_Load()
Dim hSysMenu As Long, nCnt As Long
' Get handle to our form's system menu
' (Restore, Maximize, Move, close etc.)
hSysMenu = GetSystemMenu(Me.hwnd, False)
If hSysMenu Then
' Get System menu's menu count
nCnt = GetMenuItemCount(hSysMenu)
If nCnt Then
' Menu count is based on 0 (0, 1, 2, 3...)
RemoveMenu hSysMenu, 0, MF_BYPOSITION Or MF_REMOVE
'RemoveMenu hSysMenu, nCnt - 2, MF_BYPOSITION Or MF_REMOVE ' Remove the seperator
DrawMenuBar Me.hwnd
' Force caption bar's refresh. Disabling X button
Me.Caption = "Try to close me!"
End If
End If
Me.WindowState = 2
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End Sub''''还有一个模块:
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
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const GWL_WNDPROC = (-4)
Public Const SC_MAXIMIZE = &HF030&
Public Const SC_SIZE = &HF000
Public Const SC_CLOSE = &HF060
Public Const WM_SYSCOMMAND = &H112
Public Const SC_DEFAULT = &HF160
Public Const WM_NCLBUTTONDBLCLK = &HA3
Public Const SC_RESTORE = &HF120&Public prevWndProc As Long ''''默认窗口程序地址Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error GoTo ShowErr
If Msg = WM_SYSCOMMAND Then
If wParam = SC_RESTORE Then
Exit Function
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End If
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
ShowErr:
MsgBox Err.Source & "-" & Err.Description
End Function
===================================...Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error GoTo ShowErr If Msg = WM_SYSCOMMAND Then
If wParam = SC_RESTORE Then
Exit Function
ElseIf wParam = SC_MAXIMIZE Then '''这里是控制子窗口返回的
Form1.WindowState = 2
Exit Function
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End If
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
Exit Function
ShowErr:
MsgBox Err.Source & "-" & Err.Description
End Function
还有在这个过程中加msgbox 好吗?应该不好吧.
这样不好吧,即使没有其它的过程,那么系统的窗口过程还是要调用两次,我觉得总是不妥。
加msgbox确实可以起一定的作用,而且一般在程序正式完成后也不允许在窗口过程里出错,
不过我觉得没什么大作用还是不加为好,因为这样会误到读者。
还是请楼主先把这个帖子结了吧,影响太不好了
有兴趣讨论的话,请发消息给我,我开专贴和你讨论
诶,屡教不改被封也难怪!(主要是斑竹也骂,够狂的)
肯定从小给她父母宠惯了,有点技术就目中无人了!!!
楼主就回答她吧。才来没多长时间就被封了也怪可怜的!