private sub form_queryunload(cancel as integer)
if msgbox("Sure to close?",vbyesno)=vbno then 
  cancel=true
else
  cancel=false
endif
   

解决方案 »

  1.   

    private sub form_queryunload(cancel as integer)
    yes = MsgBox("真的要退出吗?", vbYesNo, "标题")
    If yes = 6 Then cancel=true
    end sub
      
      

  2.   

    楼上的只是窗体关闭时的事件,只要有关闭窗体代码,上面的代码一定会执行,
    如 Unload me 。
      

  3.   

    我的写法是private sub Form_QueryUnload(cancel as integer),不知道大小写之类会不会有错?难道说msgbox是必需的吗?
      

  4.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        Form2.Show
        Form2.BackColor = QBColor(9)
    End Sub
      

  5.   

    哎,大家一个跟一个学,都学坏了~~~~~~~  ^_^本人很Lazy,所以一般都靠印象写,难免代码出错~~~~请你自己再改一下。
    嘿嘿,声明正确的是这样:
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)End Sub
      

  6.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    End Sub
      

  7.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    '如果不想点X退出,但可以通过Unload方法关闭窗体
        if unloadMOde<>vbformcode then 
             cancel=1
             ‘同时可以隐藏
             me.hide
        end ifEnd Sub
      

  8.   

    你选择一下FROM,再选一下它的事件,VB会自动给你写好函数名的。
      

  9.   

    你是想遮蔽掉“X”吧?下面是方法:
    要Disable Form "X" --> Close的功能(变暗灰色),事实上便是从Form左上方的System
    Menu将关闭(Close)的MenuItem去除掉便可以了,去除後,又该如何Enable "X"呢,那
    便是再将 关闭(Close)的MenuItem加回去,但这里有个小问题,加回去之後"X"仍是暗
    灰色,要等到我们做了某些固定的动作之後(如TitleBar上click一下,或选一下System
    Menu等),它才会再度变Enable的颜色,我不知道让TitleBar上的这些东西Refresh要送
    什麽讯息,知道者请告诉我,所以现在我暂且Send一个在TitleBar上按下Mouse左键的讯
    息给Form,令"X"能出现Enable的颜色。'需一个Command Button
    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 Declare Function AppendMenu Lib "User32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
    Private Declare Function GetMenuString Lib "User32" Alias "GetMenuStringA" (ByVal hMenu As Long, ByVal wIDItem As Long, ByVal lpString As String, ByVal nMaxCount As Long, ByVal wFlag As Long) As Long
    Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongConst WM_NCLBUTTONDBLCLK = &HA3
    Const WM_NCLBUTTONDOWN = &HA1
    Const HTCAPTION = 2
    Const MF_STRING = &H0&
    Const MF_BYCOMMAND = &H0&
    Const SC_CLOSE = &HF060Private hMenu As Long
    Private CloseStr As String '记录Close MenuItem的字串'将"关闭"的那一个MenuItem 加回来
    Private Sub Command1_Click()
    Call AppendMenu(hMenu, MF_STRING, SC_CLOSE, CloseStr)'令"X"能出现Enable的颜色
    Call SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
    End SubPrivate Sub Form_Load()
    hMenu = GetSystemMenu(Me.hwnd, 0)
    CloseStr = String(255, 0)'SC_CLOSE指的便是"关闭"的那一个MenuItem ID
    Call GetMenuString(hMenu, SC_CLOSE, CloseStr, 256, MF_BYCOMMAND)
    CloseStr = Left(CloseStr, InStr(1, CloseStr, Chr(0)) - 1)Call DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
    End Sub
     
      

  10.   

    你可以直接在
    Private Sub Form_Unload(Cancel As Integer)End Sub
    直接写代码啊!