|
| Højre klik med musen Fra : Thomas Larsen |
Dato : 20-11-02 10:38 |
|
Hej NG,
Jeg har et lille problem med at højre klikke med musen i mit VB program.
Jeg bruger Eventen MouseDown, hvor jeg fanger hvilken knap der er aktiveret.
Problemet er bare, at når jeg højre klikker på min tekst boks, så starter
den godt nok MouseDows eventen. Men når jeg slipper knappen igen, så kommer
den sædvanlige menu frem (Copy, Paste mm.)
Hvordan slipper jeg af med denne menu?
/Thomas
thomasl@amitech.dk
| |
John Doe (21-11-2002)
| Kommentar Fra : John Doe |
Dato : 21-11-02 14:48 |
|
Dette er ikke et "rigtigt" svar på dit problem ...
sad og kiggede lidt - men kunne ikke finde en brugbar løsning.
Hvis du skal bruge højreklikket til at lave din egen menu med kan du bruge
eksemplet her:
http://www.allapi.net/apilist/GetSystemMenu.shtml# - det der hedder
TrackPopupMenu.
(byt om på button 1 og 2 i eksemplet, og ændr me.hWnd til text1.hWnd)
Hvis du vil fjerne popup-menuen helt - så kan jeg desværre ikke hjælpe.
Ved brug af sub-classing burde det kunne lade sig gøre ....
Robert
"Thomas Larsen" <Test@test.dk> wrote in message
news:3ddb580c$0$23239$edfadb0f@dread13.news.tele.dk...
> Hej NG,
>
> Jeg har et lille problem med at højre klikke med musen i mit VB program.
>
> Jeg bruger Eventen MouseDown, hvor jeg fanger hvilken knap der er
aktiveret.
> Problemet er bare, at når jeg højre klikker på min tekst boks, så starter
> den godt nok MouseDows eventen. Men når jeg slipper knappen igen, så
kommer
> den sædvanlige menu frem (Copy, Paste mm.)
>
> Hvordan slipper jeg af med denne menu?
>
> /Thomas
> thomasl@amitech.dk
>
>
| |
Claus H (22-11-2002)
| Kommentar Fra : Claus H |
Dato : 22-11-02 13:44 |
|
"Thomas Larsen" <Test@test.dk> skrev i en meddelelse
news:3ddb580c$0$23239$edfadb0f@dread13.news.tele.dk...
> Hej NG,
>
> Jeg har et lille problem med at højre klikke med musen i mit VB program.
>
> Jeg bruger Eventen MouseDown, hvor jeg fanger hvilken knap der er
aktiveret.
> Problemet er bare, at når jeg højre klikker på min tekst boks, så starter
> den godt nok MouseDows eventen. Men når jeg slipper knappen igen, så
kommer
> den sædvanlige menu frem (Copy, Paste mm.)
>
> Hvordan slipper jeg af med denne menu?
>
> /Thomas
> thomasl@amitech.dk
>
Jeg fandt en gl. side via Google:
----------------------------------------------------------------------------
--------------
Disable the popup menu of a text box
A common Frequently Asked Question is how to disable the popup menu of a
TextBox. Since VB5 was released it's possible to use the AdressOf keyword to
add a Hook and a callback function. Just add this code to a .BAS module and
call the Hook sub and pass the hWnd of a textbox as an argument. You must
call the UnHook sub before you unload the form or you might get a General
Protection Fault.
Declarations
Add the following code to the declarations section of a module.
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 LongDeclare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As LongPublic Const GWL_WNDPROC = -4
Public Const WM_RBUTTONUP = &H205
Public lpPrevWndProc As Long
Private lngHWnd As Long
Module Code
Add the following code to the module.
Public Sub Hook(hWnd As Long)
lngHWnd=hWnd
lpPrevWndProc = SetWindowLong(lngHWnd, GWL_WNDPROC, _
AddressOf WindowProc)
End SubPublic Sub UnHook()
Dim lngReturnValue As Long
lngReturnValue = SetWindowLong(lngHWnd, GWL_WNDPROC, lpPrevWndProc)
End SubFunction WindowProc(ByVal hw As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As LongSelect Case uMsg
Case WM_RBUTTONUP
'Do nothing
'Or popup you own menu
Case Else
WindowProc = CallWindowProc(lpPrevWndProc, hw, _
uMsg, wParam, lParam)
End Select
End Function
Form Code
Add the following code to the Form_Load event of the form where the text box
is placed:
Call Hook(Text1.hWnd)
Where Text1 is the name of the text box you want to Subclass.
Add the following code to the Form_Unload event:
Call UnHook
Tip by Joacim Andersson
----------------------------------------------------------------------------
--------------
Jeg har ikke selv prøvet det, men den burde gøre udslaget.
Siden er iøvrigt ikke længere tilgængelig på den originale site, så denne er
den cachede version fra Google.
Håber det kan hjælpe.
Claus H.
| |
|
|