不是可以设置打开的时候自动最大化,再把这个窗口设为FIXED

解决方案 »

  1.   

    同情ing,回答问题多也有罪?倒!
      

  2.   

    很遗憾我把问题处理的不够及时
    wxy_xiaoyu 和 girl1983的矛盾,今天已经调解了,wxy_xiaoyu的道歉贴:http://expert.csdn.net/Expert/topic/1511/1511361.xml?temp=.8611109一直等她来回复,后来经过提醒才发现已经被封杀了
      

  3.   

    唉,VB版就不能风平浪静的研究技术吗?
    总是被一些莫名其妙的琐事搅了。伤心…………
    不管这个Girl的问题最后怎样,我真的希望CSDN能好好的成长下去,给我们这些想一心钻研技术的人一片乐土。请大家有空翻翻2001年的帖子,来感受一下那时CSDN的氛围
      

  4.   

    这个Girl做的确实有点过,但还不到封的地步吧(至少我认为)。
    谁封的,能不能站出来说一下为什么封掉。
      

  5.   

    你可以使用下面的代码禁止对MDI窗体最大化:
    如何控制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 :),好源码,大家共享。
      

  6.   

    再读一遍,对于这位girl1983所说的"最近由于在CSDN回答问题太多,有很多人红眼,对我又是谩骂又是封杀",我说一点--她在狡辩,歪曲事实
    我现在倒是赞成封杀她,虽然今天刚刚解决了他们的矛盾,只能说我的一片苦心白费了,她还是一点悔改的意思都没有
    关于她的答复,技术性的我们不多说,她有一些技术实力;非技术的,实在不敢恭维,真正谩骂胡搅的是哪个,参与这些讨论帖子的兄弟姐妹都很清楚,如果自己不自爱自重,一直出口成脏,再歪曲事实,只会让人退避三尺,论坛本身是讨论问题,交流意见解决问题的地方,不是让人来骂街吵大架的如果想交流技术,相信论坛都会欢迎,如果只想胡作非为,那还真得对不起了,相信没有人会想在一个乌烟瘴气的环境下平心静气的讨论解决问题不多说了,多说也没意思。
      

  7.   

    我懒得再说什么了我给 GIRL 解决好了问题好了,能不能用随便她,楼主你可以回她信了========================================
    ''''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
      

  8.   

    楼主会不会是那个Girl(大胆猜测).
      

  9.   

    改好了。把模块中的函数加个条件就行了:
    ===================================...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
      

  10.   

    这个窗口过程有问题,怎么可以调用两次callwindowproc呢?
    还有在这个过程中加msgbox 好吗?应该不好吧.
      

  11.   

    to: 楼上,你先试试看。你可以在 每个callwindowproc 后都加上 Exit Function ,其实效果是一样的,两次是一样的,不过确实是多余至于MsgBox是为了一旦出错了,可以明确知道是哪里错了,而设置的。没有错误的话不会出现。当然一旦错了,那整个程序肯定也全部挂掉了因为我这里没有使用其他,所以象征性的使用这个方法。如果有其他控件,比如 listbox ,那就可以把错误写在里面,而不用 MsgBox总的来说,只是一个范例,你可以自己修改
      

  12.   

    假如有人在你之前把自己的窗口过程挂在了这个窗口上,那么他的过程可能要执行两次,
    这样不好吧,即使没有其它的过程,那么系统的窗口过程还是要调用两次,我觉得总是不妥。
    加msgbox确实可以起一定的作用,而且一般在程序正式完成后也不允许在窗口过程里出错,
    不过我觉得没什么大作用还是不加为好,因为这样会误到读者。
      

  13.   

    那个girl一个月内生到了5个三角,我怎么没见她回答多少问题啊!
      

  14.   

    to icnetcn(yoyo之无双) :关于你的这个问题我们可以另外开一个帖子讨论
    还是请楼主先把这个帖子结了吧,影响太不好了
      

  15.   

    to icnetcn(yoyo之无双) :
     有兴趣讨论的话,请发消息给我,我开专贴和你讨论
      

  16.   

    几日没来那GIRL到给封掉拉?
    诶,屡教不改被封也难怪!(主要是斑竹也骂,够狂的)
    肯定从小给她父母宠惯了,有点技术就目中无人了!!!
    楼主就回答她吧。才来没多长时间就被封了也怪可怜的!