Newsgroup: it.comp.appl.access
Titolo: Codice blocco rotellina mouse causa chiusura database

Ciao, ho riutilizzato il codice per bloccare la rotellina del mouse nel
mio database preso dal sito di Ale, ma mi chiude il database.
Praticamente quando apro la frmAggiungiUtente, nel cui evento Load()
c'è quanto segue:
rotellina = false
lpPrevWndProc = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf
WindowProc)
ho la clessidra del mouse per un secondo poi il database si chiude.
Che può essere?
Grazie.

[CUT]
Ciao,
prova un pò a vedere sul sito di Giorgio Rancati 
http://web.tiscali.it/giorgiorancati/msaccess.htm
 -> ci sono 2 demo che 
fanno solo quello...magari @Alex avrà inserito altre funzionalità nel db e 
quindi ti sarai incasinato fra routine, sub e moduli! ;-)

Ah....ma il mousewheel00 è proprio quello preso da questo sito....dal
Rancati...

RISOLTO: ho scaricato un'altra versione, precisamente il mouseWhell_XP,
sempre dal sito di Ale. Funziona. Se volete che la rotellina sia
disabilitata di default, ovvero senza checkare l'interruttore,
nell'evento Load() della maschera chiamante dovete scrivere:
Me.ck_Rotellina = -1
Me.Rotellina = Me.ck_Rotellina
Hook Me
ovvero dovete settare il valore dell'interruttore via codice.
Buona notte.

Ti chiederei cortesemente di esplicitarmi esattamente come hai operato
per ottenere sto blocco della rotellina. Ci ho provato in tutti i modi,
ma mi incasino se voglio eliminare la checkata dell'interruttore..
Te ne sarei grato.
Grazie
Paolo

Non ho capito bene cosa hai detto, sinceramente :D
Dunque, innanzitutto il database in che formato è? Il mio database è
in formato 2002-2003 perciò ho dovuto usare l'esempio classificato
come XP.
Sinceramente non ho studiato per bene il codice perciò non saprei
spiegartelo ora riga per riga. Se mi scrivi in email ti mando il
database e ti spiego dove andare a guardare. Poi spieghiamo il tutto al
ng (fallo tu :D)
Ok?
Però, in pratica:
nell'evento Load() della maschera in cui voglio disabilitare la
rotellina ho messo il seguente codice:
Private Sub Form_Load()
Me.ck_Rotellina = -1
Me.Rotellina = Me.ck_Rotellina
Hook Me
Nome.SetFocus
End Sub
ck_Rotellina è un controllo Interruttore *nascosto* quindi non
visibile nel normale utilizzo del db. Via codice lo seleziono
impostandone il valore a -1. Poi passo il valore del controllo alla
variabile globale Rotellina. Poi richiamo la funzione Hook() con il
parametro Me (ovvero la form corrente).
La funzione Hook() è la seguente:
Function Hook(frm As Form)
   'Append it to our collection.
   Dim clsHook As New clsHookCollection
   clsHook.Form = frm
   clsHook.lpPrevWndProc = SetWindowLong(frm.hWnd, GWL_WNDPROC, _
                                    AddressOf WindowProc)
   clnHookFrm.Add Item:=clsHook, Key:=CStr(frm.hWnd)
   Set frm = Nothing
   Set clsHook = Nothing
End Function
e richiama WindowProc in basSubClassWindows.
WindowProc() contiene il codice seguente:
Public Function WindowProc(ByVal hWnd As Long, _
   ByVal uMsg As Long, _
   ByVal wParam As Long, _
   ByVal lParam As Long) As Long
   Dim frm As Form
   Dim clsHook As New clsHookCollection
   Dim lpPrevWndProc As Long
   Set clsHook = clnHookFrm.Item(CStr(hWnd))
   Set frm = clsHook.Form
   lpPrevWndProc = clsHook.lpPrevWndProc
   Select Case uMsg
      Case WM_SYSCOMMAND
         Select Case wParam
            Case 61458 'Spostamento Form
               If frm.Spostabile Then WindowProc = 0: Exit Function
            Case 61441 To 61448
               If frm.Ridimensionabile Then WindowProc = 0: Exit
Function
            Case Else
          End Select
      Case WM_MOUSEWHEEL
         If frm.Rotellina Then WindowProc = 0: Exit Function
      Case Else
   End Select
   WindowProc = CallWindowProc(lpPrevWndProc, hWnd, uMsg, wParam,
lParam)
   Set clsHook = Nothing
End Function
e come vedi quello che interessa a te è la riga:
If frm.Rotellina Then WindowProc = 0: Exit Function
Insomma, non ho ben chiaro il codice ma se via codice setti Rotellina a
-1 ti si blocca e stai a posto. 
Spero sia tutto chiaro....

Uso A00 ed ho provato ad adattare la funzione del sito di Giorgio
Rancati in modo tale che la rotellina sia disabilitata di default... ma
non ci sono riuscito!
Ho provato ad assegnargli il valore "false" sul caricamento della form,
ma credo che non sia il metodo corretto...
Paolo

anche io facevo così :) e non andava bene. crea un controllo
ninterruttore nascosto sulla form dove vuoi disabilitare la rotellina e
mettici il codice che ti ho detto io. fammi sapere.

E' il tentativo che ho già fatto, ma probabilmente su A00 così non
va...