Newsgroup: it.comp.appl.access
Titolo: disattivazione pulsante chiusura applicazione

Ho seguito l'esempio del sitocomune che presenta un metodo per escludere la
grande X.
6.32 Rimuovere il pulsante di chiusura (X), il menu e i pulsanti di
ridimensionamento di Access.
di antogal
Avevo utilizzato tempo addietro ma non sono mai riuscito a farlo funzionare.
C'è qualcuno per caso che sia in grado di darmi una dritta in tal senso?
Ho provato a mettere la funzione in una autoexec o all'attivazione della
form principale ma trovo sempre messaggi di errore.
grazie anticipate.


Io uso questa
Private Declare Function SendMessage Lib "user32" _
  Alias "SendMessageA" _
  (ByVal hwnd As Long, ByVal wMsg 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 Function GetWindowLong Lib "user32" _
  Alias "GetWindowLongA" (ByVal hwnd As Long, _
  ByVal nIndex As Long) As Long
 Private Const GWL_STYLE = -16
 Private Const WS_SYSMENU = &H80000
 Private Const WM_NCPAINT = &H85
 Public Sub ShowAccessBtn(ShowIt As Boolean)
     On Error GoTo Errors
     Dim lngOldStyle As Long
     Dim lngNewStyle As Long
     Dim mhWnd As Long
     mhWnd = Application.hWndAccessApp
     'Legge il valore attuale
     lngOldStyle = GetWindowLong(mhWnd, GWL_STYLE)
     If ShowIt Then
         lngNewStyle = lngOldStyle Or WS_SYSMENU
     Else
         lngNewStyle = lngOldStyle And Not WS_SYSMENU
     End If
     'Questa è l'unica Funzione indispensabile
     'che esegue realmente il comando Hide/Show
     'dei Pulsanti
     Call SetWindowLong(mhWnd, GWL_STYLE, lngNewStyle)
     'Manda un Repaint alla Finestra di Access
     Call SendMessage(mhWnd, WM_NCPAINT, 1, 0)
ExitHere:
     Exit Sub
Errors:
    MsgBox err.Description, vbCritical, "Errore n° = " & err.Number
    Resume ExitHere
 End Sub
e nella prima maschera su load ci metti
    Dim s As Boolean
    ShowAccessBtn s
    s = Not s
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa1 - I° Conferenza Italiana per Sviluppatori Access Arezzo 4+5
Giugno 2005 Info:  
www.donkarl.com/it

 ha scritto nel messaggio
news:%uFpe.15498$TR5....@news.edisontel.com...

ulla lla! funziona!
non sai che mi hai risolto.
Le colleghe del personaggio che voleva che gli eliminassi la grande X gli
avevano messo sull'angolo in alto a destra del monitor un post it giallo che
gliela nascondesse! Il poveretto si è sentito un po' in imbarazzo ... gli
chiederò un premio produzione che spartiremo fifty fifty!

 chiederň un premio produzione che spartiremo fifty fifty!
Adesso che funziona fai questa prova:
Vai con il Mouse sulla CaptionBar di Access e premi il RightClick
quindi premi CLOSE...!
Mi sfugge qualche cosa...?
;-)
Devi aggiungere la disabilitazione dei Menů Popup sull'Hwnd di Access
aggiungendo questa e richiamandola subito prima di questo commento:
     Call RemoveIte(mhWnd)
     'Questa č l'unica Funzione indispensabile
     'che esegue realmente il comando Hide/Show
     'dei Pulsanti
' LE API METTILE CON LE ALTRE NELL'ALVEARE.
Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal
bRevert As Long) As Long
Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal
nPosition As Long, ByVal wFlags As Long) As Long
Sub RemoveItem(hwnd As Long)
      Dim hMnu, y, i
      Const MF_BYPOSITION As Long = 1024
      Const MF_GRAYED As Long = 1
      Const MF_DISABLED As Long = 2
      hMnu = GetSystemMenu(hwnd, 0)
      For i = 6 To 0 Step -1
         y = RemoveMenu(hMnu, i, MF_BYPOSITION)
      Next i
End Sub
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------