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ºÁÃë