VB °æ (¾«»ªÇø)
·¢ÐÅÈË: bloom (ÓÖ³ôÓÖӲСʯͷ), ÐÅÇø: VB
±ê Ìâ: ÆÁ±ÎÎı¾¿òĬÈϵÄÓÒ¼ü²Ëµ¥¡
·¢ÐÅÕ¾: ¹þ¹¤´ó×϶¡Ïã (2000Äê07ÔÂ19ÈÕ13:03:35 ÐÇÆÚÈý), תÐÅ
ÆÁ±ÎÎı¾¿òµÄÓÒ¼ü²Ëµ¥£¬Ôø¾¿´µ½Ò»¸ö³ÌÐòÊÇÕâÑù×öµÄ£º
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Si
ngle, Y As Single)
Text1.Enabled = False
Text1.Enabled = True
PopupMenu yourmenu
End Sub
Õ⵱ȻÊǸö¼òµ¥µÄʵÏÖ·½·¨£¬µ«×÷Ϊһ¸öÒÔapiΪÖ÷ÌâµÄÍøÕ¾£¬ÎÒÔÚ´ËÏë½éÉÜÒ»ÖÖÓÃ
apiº¯ÊýÀ´ÊµÏֵķ½·¨£¬²¢Ïë̸µÄÉîÈëһЩ¡£
Ê×ÏÈ£¬Ì¸Ì¸ÏûÏ¢ºÍ´°¿Úº¯Êý¡£ÔÚWindowsÀÏûÏ¢ÓÐÁ½·½ÃæµÄÓÃ;£ºÊ×ÏÈ£¬ËüÃÇÓÉW
indows´«¸ø´°¿Úº¯Êý£¬Ö¸³ö·¢ÉúÁËÒ»¸öÌØ¶¨µÄʼþ¡£±ÈÈçÓû§µ¥»÷ÁËÊó±ê£¬»òÕß°´ÏÂÁË
¼üÅÌÉϵÄij¸ö¼ü¡£ÏûÏ¢Ò²¿ÉÓÉWindowsÓÃÓÚͨ¸æ·¢ÉúÁËÒ»¸öÄÚ²¿Ê¼þ£¬±ÈÈçÊäÈë½¹µãµÄ±ä
¸ü¡£ÁíÍ⣬¿É½«ÏûÏ¢×÷ΪWindowsµÄÒ»ÖÖÃüÁîʹÓá£ÕâÖÖÃüÁîÓÃÓÚ֪ͨһ¸ö´°¿ÚÖ´ÐÐÌØ¶¨
µÄÈÎÎñ¡£Æä´Î£¬Í¨³£¿É½«ÏûÏ¢´«¸øÒ»¸ö¿Ø¼þ»ò´°¿Ú£¬ÇëÇóËüÖ´ÐÐÌØ¶¨µÄ²Ù×÷¡£¶øÃ¿¸ö´°
¿Ú¶¼ÓÐÒ»¸ö´°¿Úº¯Êý£¬ËüµÄ×÷ÓÃÊǶÔÏûÏ¢½øÐд¦Àí¡£¸Ãº¯Êý¾ÍÏóÒ»¸öÌØÊâµÄVB³ÌÐò£¬Æä
Öаüº¬Á˶Ôʼþ½øÐд¦ÀíµÄ´úÂë¡£
¶ÔÓÚÓÒ»÷Îı¾¿ò£¬Ê×ÏÈÊDzúÉúÒ»Ìõ WM_CONTEXTMENU ÏûÏ¢£¬¸ÃÏûÏ¢±»Îı¾¿òµÄ´°¿Ú
º¯Êý½ÓÊÕ£¬¾Í»áµ¯³öĬÈϵIJ˵¥¡£ËùÒÔ£¬ÎÒµÄ˼·ÊÇ£º½ÓÊÕËùÓеÄÎı¾¿òÏûÏ¢£¬Èç¹ûÏû
ϢΪ WM_CONTEXTMENU £¬ÄÇôµ¯³ö×Ô¶¨Òå²Ëµ¥£¬·ñÔò£¬°ÑÏûÏ¢´«µÝ¸øÄ¬ÈϵĴ°¿Úº¯ÊýÓÉ
Ëü´¦Àí¡£
ÈçºÎ½ÓÊÕÏûÏ¢£¿Ò»¸ö·½·¨ÊÇ£¬Óà AddressOf ¹Ø¼ü×Ö£¬Ëü¿ÉÒÔ°ÑÒ»¸ö×Ô¶¨ÒåÄ£¿éµÄµØ
Ö·±äΪ´°¿Úº¯ÊýµÄµØÖ·¡£ÕâÑù£¬´°¿Úº¯Êý¾Í³ÉÁËÄãµÄ×Ô¶¨ÒåÄ£¿éÁË¡£¶øÏûÏ¢ÈÔÈ»´«µÝµ½
ÔÏÈ´°¿Úº¯ÊýµÄµØÖ·£¨Õâʱ£¬Õâ¸öµØÖ·Ö¸ÏòµÄ´°¿Úº¯ÊýÒѾÊÇÄãµÄ×Ô¶¨ÒåÄ£¿é£©
ÏÖÔھͿ´¿´ÊÇÈçºÎʵÏֵİɡ£Ê×ÏȽ¨ÒéÄã¿´¿´VBÁª»úÊÖ²á¹ØÓÚ AddressOf µÄ°ïÖú¡£
³ÌÐòÐèÒªÒ»¸ö´°Ìå¡¢´°ÌåÖÐÓÐÒ»¸öÎı¾¿ò£¬ÒÔ¼°Ò»¸ö±ê׼ģ¿é¡£
±ê׼ģ¿éµÄ´úÂ룺
Option Explicit
Public OldWindowProc As Long
' ±£´æÄ¬ÈϵĴ°¿Úº¯ÊýµÄµØÖ·
Public Const WM_CONTEXTMENU = &H7B
' µ±ÓÒ»÷Îı¾¿òʱ£¬²úÉúÕâÌõÏûÏ¢
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA
" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA
" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Lon
g
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowPr
ocA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, By
Val wParam As Long, ByVal lParam As Long) As Long
Public Function SubClass1_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg
As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Long
If Msg <> WM_CONTEXTMENU Then
SubClass1_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg,
wp, lp)
' Èç¹ûÏûÏ¢²»ÊÇWM_CONTEXTMENU£¬¾Íµ÷ÓÃĬÈϵĴ°¿Úº¯Êý´¦Àí
Exit Function
End If
SubClass1_WndMessage = True
End Function
´°ÌåµÄ´úÂ룺
Option Explicit
Private Const GWL_WNDPROC = (-4)
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Si
ngle, Y As Single)
If Button = 1 Then Exit Sub
OldWindowProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
' È¡µÃ´°¿Úº¯ÊýµÄµØÖ·
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf SubClass1_WndM
essage)
' ÓÃSubClass1_WndMessage´úÌæ´°¿Úº¯Êý´¦ÀíÏûÏ¢
End Sub
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Sing
le, Y As Single)
If Button = 1 Then Exit Sub
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWindowProc)
' »Ö¸´´°¿ÚµÄĬÈϺ¯Êý
PopupMenu usermenu
' µ¯³ö×Ô¶¨Òå²Ëµ¥
End Sub
ÔËÐÐÕâ¸ö³ÌÐò£¬ÓÒ¼ü²Ëµ¥Òѱ»×Ô¶¨Òå²Ëµ¥È¡´ú£¬²»»á³öÏÖÁ½¸ö²Ëµ¥µÄÇé¿ö¡£¹ØÓÚÕâ
¸ö³ÌÐò£¬Äã¿ÉÒÔÔÚÀý³ÌÖÐÏÂÔØËü£¬ÊµÏֵŦÄܱÈÕâÀïµÄÒªÍêÕû¡£×îºóҪ˵Ã÷µÄÊÇ£¬¾¡Á¿
²»ÒªÊ¹Óà AddressOf À´¸Ä±äÒ»¸ö´°¿ÚµÄĬÈÏ´°¿Úº¯Êý£¬Ëü¿ÉÄÜÒýÆð²»¿ÉÔ¤Áϵĺó¹û¡£ÔÚ
VBµÄÁª»úÊÖ²áÀïÒ²ÊÇÕâÑù½¨ÒéµÄ£¬ÎÒÔÚ±àÕâ¸ö³ÌÐòʱ£¬ËÀ¹ý¼¸´Î»ú£¬ÆäÖÐÒ»´Î£¬¸ãµÄÎÒ
µÄWindowsµÄ¡°¿ªÊ¼¡±²Ëµ¥Ã»Óз´Ó¦¡£
ÔÚWindows 98 + VB5.0ÏÂͨ¹ý¡£±¾ÎÄÉæ¼°µÄapiº¯Êý±¾Õ¾ÓнéÉÜ¡£
--
¡ù À´Ô´:¡¤¹þ¹¤´ó×϶¡Ïã bbs.hit.edu.cn¡¤[FROM: 202.118.233.140]
--
¡ù ÐÞ¸Ä:¡¤bloom ì¶ 07ÔÂ19ÈÕ13:03:56 Ð޸ı¾ÎÄ¡¤[FROM: jxjdadmin.hit.edu.cn]
¡ù ×ªÔØ:£®¹þ¹¤´ó×϶¡Ïã bbs.hit.edu.cn£®[FROM: jxjdadmin.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
Ò³ÃæÖ´ÐÐʱ¼ä£º2.234ºÁÃë