你可以在queryunload事件中判断是否是单击关闭按钮要求关闭(unloadmode 是否等于0),用一个if 语句 将form.windowstate 属性设置 为 1 ,将cancle 赋予非零值。
sub form1_queryunload(cancle , unloadmode)
    if unloadmode = 0 then
         me.windowstate=1
         cancle=1
    endif
end sub
ok,就这么简单!

解决方案 »

  1.   

    截获系统WM_SYSCOMMAND消息,判断是否为关闭消息,如是则响应最小化命令,屏蔽关闭命令。
    DELPHI 中的程序片段大致模型如下:Procedure TForm.DoMinimize(Var Msg:TMessage);
    Begin
      if Msg.wParam=SC_Close then
      begin
         // 最小化操作
      end
      else
        CallWindowProc(self.DefWndProc,Handle,Msg.Msg,Msg.wParam,Msg.lParam);
    End;
      

  2.   

    to fmj: vb中无法处理消息的,呵呵,咱们还是用delphi吧。
      

  3.   

    to Nicrosoft: VB可以处理消息,呵呵,只是得用回调函数
      

  4.   

    to anstern:
     用VB处理消息,呵呵!重写窗口程序吗?你不认为太小题大作了吗?  
    还是用前丰的方法吧。
      

  5.   

    我理解anstern只是为了说明vb可以处理消息,哈哈。
      

  6.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        Cancel = True
        Me.WindowState = 1
    End Sub