青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線忘掉

讓一組相同的控制項(xiàng)有相同的行為(SuperClass)

   如果您見過本人的文章"Window簡介(二) 如何攔截ComboBox MouseMove"應(yīng)可以了解SubClass的動作是針對某一個Window來動作,像上面的這個文章就告訴大家如何透過SubClass來讓 ComboBox能偵測到MouseMove,而如果有一群ComboBox全要偵測到MouseMove那不就每一個ComboBox都要來做 SubClass的動作,有沒有一次完成不要如此麻煩的呢?原則上這是使用SuperClass可完成,SuperClass的作法是:

  1.取得原本Class的設(shè)定(如:原本ComboBox的設(shè)定),可用GetClassLong來取得
  2.更動Class的設(shè)定,可用SetClassLong來設(shè)定
  3.依新的設(shè)定Create控制項(xiàng),而且唯有新Create出的控制項(xiàng)才有作用,舊有的沒有受
    影響。

再來看一下GetClassLong,SetClassLong的第一個叁數(shù),它是hWnd,想想看,這是更動某一個Class的API,而不是只更動 某個Window的API,怎麼傳入hWnd,沒錯,那是間接的作法,由hWnd可以得知那是屬於哪一種Class的控制項(xiàng),進(jìn)而改變/取得 該hWnd所屬Class類別的設(shè)定。那現(xiàn)在就出現(xiàn)一個問題,我們要先Create出一個Window(控制項(xiàng))而後才能取得其hWnd,之後才下 SetClassLong來更動設(shè)定,而這個Window因?yàn)槭窃诟鼊釉O(shè)定之前所造出來的,所以新的設(shè)定沒有在這個Window上作用(這是Window 的作法,沒有辦法),所以我們說不得,只好將該Window Kill掉,之後Create的Window才是我們想要的。如果使用的是純Window API的設(shè)計,可能不用如此,而使用以下三個步驟:

   1.取得Class的設(shè)定,使用GetClassInfoEx()取得,并記錄下來
   2.更動原先的記錄,將之變成另外一個Class
   3.注冊該Class,并CreateWindow

但這樣做,就沒有vb的使用者介面,將Control項(xiàng)放到Form上那麼容易,一切都用API來做,我想沒有人會如此吧?

所以啦,在VB的話,就只好使用物件陣列的作法,因?yàn)橥高^它,可以做到到動態(tài)新增、移除Control項(xiàng)的功能,不過正因它是事後才產(chǎn)生的,所以我們對之的控制相對的就要付出代價(如:位置的設(shè)定)。

注釋:以下程式在module1.bas
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 Long
Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Const GCL_WNDPROC = (-24)
Public Const WM_MOUSEMOVE = &H200

Public preWinProc As Long

Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
                         ByVal wParam As Long, ByVal lParam As Long) As Long
注釋:以下程式會截取mouse move,處理完後,再將之送往原來的Window Procedure

If Msg = WM_MOUSEMOVE Then
    注釋:請?zhí)幚鞰ouse Move的動作
    Debug.Print "Combol Mouse Move , hwnd="; hwnd
End If
注釋:將之送往原來的Window Procedure
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function

注釋:以下程式在Form1, form1中有一Combo1并事先設(shè)定其Index =1
Sub Form_Load()
Dim ret As Long
Combo1(1).Move 5, 5
注釋:記錄原本的Window Procedure的位址
preWinProc = GetClassLong(Combo1(1).hwnd, GCL_WNDPROC)
注釋:設(shè)定Combo1的window Procedure到wndproc
ret = SetClassLong(Combo1(1).hwnd, GCL_WNDPROC, AddressOf wndproc)
注釋:動態(tài)產(chǎn)生兩個Combo,Mouse在這兩個Combo上才會偵測到MouseMove
Load Combo1(2)
Combo1(2).Move 5, 400
Combo1(2).Visible = True
Load Combo1(3)
Combo1(3).Move 5, 800
Combo1(3).Visible = True
Debug.Print "Combo1(1).Hwnd="; Combo1(1).hwnd
Debug.Print "Combo1(2).Hwnd="; Combo1(2).hwnd
Debug.Print "Combo1(3).Hwnd="; Combo1(3).hwnd
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
注釋:取消Message的截取,而使之又只送往原來的Window Procedure
ret = SetClassLong(Combo1(1).hwnd, GCL_WNDPROC, preWinProc)
End Sub


posted on 2007-07-18 00:32 旅途 閱讀(169) 評論(0)  編輯 收藏 引用 所屬分類: 深入windows

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美乳少妇欧美精品| 开心色5月久久精品| 亚洲特级毛片| 欧美电影免费观看大全| 欧美在线视频免费| 亚洲欧美在线一区二区| 亚洲一区国产一区| 久久久久9999亚洲精品| 欧美多人爱爱视频网站| 欧美大片一区二区| 一区二区福利| 久久婷婷av| 国产精品视频福利| 99国产一区| 欧美va天堂在线| 亚洲欧美综合网| 欧美精品午夜| 亚洲成色www久久网站| 亚洲午夜女主播在线直播| 久久五月激情| 亚洲香蕉视频| 蜜臀久久99精品久久久久久9 | 欧美一区二区三区播放老司机| 欧美一区国产在线| 一区在线视频观看| 欧美黄色一区| 久久久亚洲一区| 欧美日本二区| 黄色工厂这里只有精品| 一本色道久久综合精品竹菊| 欧美一区二区三区视频在线观看| 久久在线视频| 99精品视频免费观看视频| 久久激情网站| 欧美午夜不卡在线观看免费 | 欧美jizzhd精品欧美喷水 | 亚洲高清色综合| 你懂的视频欧美| 99精品欧美一区| 久久影院亚洲| 国产一区二区三区久久久| 99在线视频精品| 欧美午夜不卡在线观看免费| 性欧美长视频| 欧美96在线丨欧| 欧美日韩国产一级片| 亚洲特级毛片| av成人国产| 欧美一区二区| 日韩视频在线一区二区| 久久国产精品久久久久久| 国产精品福利在线| 99精品福利视频| 久久影院午夜论| 一区二区三区高清不卡| 欧美黄色网络| 136国产福利精品导航| 亚洲精品在线免费观看视频| 日韩午夜电影| 欧美激情一区二区久久久| 伊人成人在线| 欧美极品一区| 欧美亚洲一区二区在线观看| 亚洲免费在线| 久久成人一区| 亚洲欧美日韩成人| 国产精品久久久久999| 99精品福利视频| 亚洲国产老妈| 久久精品一区| 一区二区在线观看视频| 欧美一区综合| 亚洲欧美日韩精品一区二区 | 亚洲激情视频在线播放| 老鸭窝亚洲一区二区三区| 欧美在线视频观看| 国内综合精品午夜久久资源| 久久国产精品久久w女人spa| 午夜精品剧场| 久久精品国产v日韩v亚洲| 欧美大片在线影院| 欧美日韩的一区二区| 亚洲精品一区二区三区不| 欧美激情免费观看| 久久亚洲私人国产精品va| 在线精品福利| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久婷婷国产综合精品青草 | 欧美肉体xxxx裸体137大胆| 亚洲一区在线观看视频| 亚洲欧美日韩国产| 国内精品久久久久久久97牛牛| 免费一区二区三区| 欧美高清视频在线播放| 亚洲一区二区三区久久| 久久成人一区| 国产精品99久久久久久久vr | 欧美日韩一区二区在线视频| 亚洲一区精彩视频| 久久综合狠狠综合久久综合88| 亚洲精品在线观看视频| 亚洲直播在线一区| 久久中文字幕导航| 亚洲欧美日韩精品久久久久| 国产亚洲毛片| 亚洲精品美女在线观看| 国产精品丝袜91| 亚洲国产精品热久久| 国产麻豆精品久久一二三| 欧美承认网站| 国产日韩欧美不卡| 亚洲人成网站影音先锋播放| 国产亚洲va综合人人澡精品| 亚洲精品日韩久久| 在线观看亚洲精品| 先锋a资源在线看亚洲| 9l视频自拍蝌蚪9l视频成人| 久久久久国产精品人| 亚洲欧美日韩国产一区| 欧美精品久久久久久| 欧美大学生性色视频| 国产一区二区无遮挡| 亚洲视频精品| 亚洲婷婷免费| 欧美人成在线视频| 欧美福利网址| 亚洲电影免费在线观看| 午夜免费在线观看精品视频| 亚洲性夜色噜噜噜7777| 欧美人与禽性xxxxx杂性| 欧美黑人国产人伦爽爽爽| 韩国v欧美v日本v亚洲v| 亚洲高清视频一区| 久久久国产精品一区| 久久久亚洲欧洲日产国码αv | 国内一区二区在线视频观看| 国产精品99久久久久久久久久久久| 亚洲国产欧美在线| 另类天堂av| 亚洲第一伊人| 亚洲激情视频在线| 欧美黄色视屏| 亚洲麻豆国产自偷在线| 9久re热视频在线精品| 欧美久久电影| 99www免费人成精品| 亚洲免费中文| 国产视频丨精品|在线观看| 午夜精品久久久久久| 久久精品噜噜噜成人av农村| 国产欧美一二三区| 久久精品免费观看| 欧美成年网站| 99re6这里只有精品| 欧美日韩亚洲一区三区| 一区二区三区四区五区精品视频| 正在播放日韩| 国产精品一香蕉国产线看观看 | 亚洲精品色图| 欧美日韩国产限制| 一区二区三区久久精品| 午夜日韩在线观看| 国内在线观看一区二区三区| 久久精品国产精品亚洲精品| 欧美mv日韩mv国产网站| 中国日韩欧美久久久久久久久| 欧美日韩综合在线免费观看| 亚洲精品永久免费精品| 亚洲欧美精品suv| 久久久综合激的五月天| 亚洲激精日韩激精欧美精品| 欧美激情精品久久久久久变态| 亚洲精品一区二区在线| 亚洲欧美一区二区视频| 尤物在线精品| 欧美亚洲成人精品| 久久综合伊人77777| 日韩视频在线免费观看| 欧美一级理论片| 亚洲毛片在线看| 国产美女一区| 欧美精品一区二区三区蜜桃| 亚洲伊人一本大道中文字幕| 久久全国免费视频| 亚洲视频在线观看视频| 伊人婷婷久久| 欧美午夜激情视频| 久久婷婷国产综合尤物精品 | 国产一区二区三区在线观看网站| 极品少妇一区二区| 午夜精品久久久久影视| 免费久久99精品国产| 免费不卡亚洲欧美| 亚洲人成网站在线播| 欧美淫片网站| 91久久精品国产91久久性色| 亚洲高清资源| 国产精品久久久99| 亚洲精品日韩欧美| 欧美激情小视频|