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

旅途

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

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

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

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

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

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

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

所以啦,在VB的話,就只好使用物件陣列的作法,因為透過它,可以做到到動態新增、移除Control項的功能,不過正因它是事後才產生的,所以我們對之的控制相對的就要付出代價(如:位置的設定)。

注釋:以下程式在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
    注釋:請處理Mouse Move的動作
    Debug.Print "Combol Mouse Move , hwnd="; hwnd
End If
注釋:將之送往原來的Window Procedure
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function

注釋:以下程式在Form1, form1中有一Combo1并事先設定其Index =1
Sub Form_Load()
Dim ret As Long
Combo1(1).Move 5, 5
注釋:記錄原本的Window Procedure的位址
preWinProc = GetClassLong(Combo1(1).hwnd, GCL_WNDPROC)
注釋:設定Combo1的window Procedure到wndproc
ret = SetClassLong(Combo1(1).hwnd, GCL_WNDPROC, AddressOf wndproc)
注釋:動態產生兩個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>
            免费欧美日韩| 狠狠色综合日日| 一二三区精品| 亚洲日本欧美在线| 玖玖视频精品| 久久久免费精品视频| 亚洲欧美国产日韩中文字幕| 亚洲国产99精品国自产| 亚洲国产精品久久久久秋霞不卡| 国产精品久久久久久久久久三级 | 一区二区三区在线免费视频| 国产精品久久久久久久9999| 欧美三级午夜理伦三级中视频| 欧美激情中文字幕乱码免费| 欧美成人精品| 国产精品久久国产三级国电话系列 | 欧美四级在线观看| 国产精品免费观看在线| 欧美激情网站在线观看| 欧美凹凸一区二区三区视频| 亚洲国产精品va| 久久精品亚洲一区| 午夜影院日韩| 亚洲国产mv| 日韩一级精品视频在线观看| 亚洲图片欧洲图片av| 美女精品在线观看| 一区二区三区高清不卡| 久久免费视频在线观看| 国产精品福利在线观看| 亚洲国产另类久久精品| 亚洲欧美另类国产| 亚洲国产天堂久久国产91| 亚洲欧美大片| 欧美日韩综合不卡| 亚洲免费观看高清完整版在线观看| 香蕉久久国产| 亚洲视频在线观看视频| 欧美日韩免费高清| 国产精品99久久不卡二区| 另类天堂av| 免费久久久一本精品久久区| 国产一区二区精品丝袜| 久久免费视频网站| 久久久久久电影| 激情一区二区| 91久久综合| 国产精品亚洲а∨天堂免在线| 亚洲精品乱码久久久久久黑人 | 在线成人av.com| 欧美日本在线视频| 日韩亚洲欧美中文三级| 亚洲国产精品日韩| 国产精品ⅴa在线观看h| 欧美一区激情| 欧美成年人网| 欧美一区二区视频网站| 老司机久久99久久精品播放免费| 亚洲国产电影| 欧美亚洲日本国产| 亚洲精品自在久久| 小黄鸭精品aⅴ导航网站入口 | 久久久一区二区| 亚洲日本乱码在线观看| 亚洲深夜影院| 在线亚洲免费| 麻豆久久久9性大片| 欧美亚洲综合网| 国产精品成人免费| 日韩一级免费| 夜夜嗨一区二区| 欧美高清在线视频| 免费91麻豆精品国产自产在线观看| 欧美三级在线视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲国产精品一区二区尤物区| 亚洲精品欧美一区二区三区| 国产在线成人| 先锋影音网一区二区| 午夜国产精品视频| 亚洲美女黄色片| 久久婷婷人人澡人人喊人人爽| 亚洲欧美国产制服动漫| 亚洲高清免费| 99精品99| 国产精品99一区二区| 亚洲女女女同性video| 久久精品亚洲一区二区| 国产欧美日韩一区二区三区在线观看 | 国产综合精品| 欧美在线影院在线视频| 久热精品在线视频| 在线视频观看日韩| 欧美日韩国产色视频| 亚洲麻豆av| 久久福利资源站| 亚洲精品国产精品国自产在线 | 亚洲欧美日韩国产综合| 国产欧美在线播放| 欧美高清不卡| 欧美在线视频日韩| 91久久精品国产91久久| 久久激情五月婷婷| 夜夜嗨av一区二区三区四区| 国产视频一区在线观看一区免费| 久久阴道视频| 亚洲欧美文学| 亚洲一区欧美一区| 亚洲国产精品久久久久秋霞不卡| 亚洲一区中文| 亚洲视频导航| 99日韩精品| 亚洲乱码国产乱码精品精98午夜| 国产女人精品视频| 国产精品免费aⅴ片在线观看| 狂野欧美激情性xxxx欧美| 亚洲欧美国产毛片在线| 日韩天堂av| 亚洲毛片在线观看.| 亚洲区免费影片| 亚洲精品小视频| 亚洲日本aⅴ片在线观看香蕉| 狠狠色狠狠色综合日日五| 国产日韩欧美日韩| 国产综合色产| 亚洲国产婷婷| 一区二区三区成人| 亚洲欧美综合另类中字| 欧美一区影院| 欧美电影免费观看高清完整版| 可以免费看不卡的av网站| 欧美国产视频在线观看| 亚洲毛片在线观看.| 亚洲无限乱码一二三四麻| 性欧美8khd高清极品| 久久午夜色播影院免费高清| 夜夜爽夜夜爽精品视频| 亚洲每日更新| 裸体歌舞表演一区二区| 99视频精品全部免费在线| 午夜性色一区二区三区免费视频| 久久伊人亚洲| 国产精品制服诱惑| 欧美精品入口| 久久躁日日躁aaaaxxxx| 欧美日韩国产黄| 激情六月婷婷综合| 欧美一区91| 亚洲一区二区三区色| 欧美成人激情视频免费观看| 国产日韩欧美一区二区三区四区| 亚洲欧洲日韩在线| 蜜桃久久精品一区二区| 新67194成人永久网站| 国产精品swag| 亚洲一区黄色| 亚洲一区观看| 欧美xx69| 欧美极品aⅴ影院| 亚洲视频狠狠| 尤物九九久久国产精品的特点| 亚洲精品视频在线播放| 欧美激情无毛| 欧美三级第一页| 午夜精品久久久久久久久久久久| 一区二区日韩精品| 国产一区二区三区奇米久涩| 久久综合久久久久88| 老牛嫩草一区二区三区日本| 99香蕉国产精品偷在线观看| 亚洲深爱激情| 亚洲欧洲一区二区三区在线观看| 亚洲高清av| 国产精品久久久久久久久久免费看| 欧美亚洲自偷自偷| 欧美理论大片| 久久婷婷成人综合色| 欧美精品亚洲精品| 久久久爽爽爽美女图片| 欧美国产视频一区二区| 欧美一二三区精品| 麻豆91精品| 久久在线精品| 国产欧美日韩麻豆91| 亚洲欧洲精品一区二区精品久久久| 国产精品欧美日韩久久| 国产亚洲精品bt天堂精选| 欧美成人精品激情在线观看| 国产精品久久久久av| 亚洲第一色在线| 亚洲国产高潮在线观看| 久久精选视频| 久久亚洲春色中文字幕久久久| 欧美体内she精视频| 亚洲精品久久久久久一区二区| 亚洲成色777777在线观看影院| 欧美乱妇高清无乱码| 久久手机免费观看| 国语自产偷拍精品视频偷| 性欧美8khd高清极品|