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

旅途

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

讓一組相同的控制項有相同的行為(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>
            久久高清国产| 亚洲欧美精品一区| 一本久久知道综合久久| 亚洲三级电影在线观看| 在线视频精品一| 午夜精品久久久久久久久| 久久成人免费网| 久久青草久久| 亚洲黄色av一区| 久久久精品免费视频| 亚洲欧美综合另类中字| 亚洲欧美中文日韩v在线观看| 亚洲欧美日韩成人| 久久久久欧美精品| 欧美国产综合| 中文在线不卡视频| 久久成人精品无人区| 欧美高清在线| 国产伦精品一区| 亚洲肉体裸体xxxx137| 欧美影院精品一区| 亚洲国产日韩欧美在线99| 免费永久网站黄欧美| 中文一区字幕| 裸体丰满少妇做受久久99精品| 夜夜嗨av色综合久久久综合网| 欧美中日韩免费视频| 模特精品在线| 亚洲午夜羞羞片| 久久精品一二三| 国产精品成av人在线视午夜片| 国产亚洲一二三区| 一区二区免费在线观看| 免费人成精品欧美精品| 亚洲一区二区三区在线| 欧美成人国产一区二区| 国内精品福利| 欧美一区二区三区视频在线| 亚洲人屁股眼子交8| 久久精品日韩欧美| 国产精品爽爽ⅴa在线观看| 亚洲日韩成人| 国产精品v日韩精品| 欧美国产日韩a欧美在线观看| 久久人人97超碰精品888| 亚洲一区二区动漫| 欧美激情精品久久久久久蜜臀| 国产精品久久久免费| 亚洲国产欧美另类丝袜| 久久精品亚洲一区二区三区浴池| 9i看片成人免费高清| 欧美电影资源| 亚洲国产乱码最新视频| 久久久久久久一区| 亚洲欧美色婷婷| 国产精品久久久久久福利一牛影视| 亚洲精品影视在线观看| 美国成人毛片| 蜜臀av国产精品久久久久| 激情久久久久| 久久亚洲综合色一区二区三区| 亚洲免费在线视频| 国产欧美精品在线观看| 性欧美办公室18xxxxhd| 中文高清一区| 国产精品人成在线观看免费 | 国产精品久久久久久久久借妻 | 久久不射2019中文字幕| 亚洲已满18点击进入久久| 国产精品一区二区欧美| 久久精品国产清自在天天线 | 久久先锋影音av| 亚洲日本久久| 国产精品99久久久久久有的能看| 国产精品久久久久久久久久免费看| 亚洲一区综合| 欧美一级理论性理论a| 在线播放中文一区| 亚洲国产精品一区制服丝袜 | 亚洲电影在线观看| 欧美国产视频日韩| 99在线热播精品免费| 中文国产成人精品| 国内精品久久久久久久影视蜜臀| 免费日韩成人| 欧美日韩精品一区二区| 午夜日韩在线观看| 久久中文久久字幕| 午夜欧美不卡精品aaaaa| 国产精品入口福利| 久久精品91| 免费在线观看成人av| 在线一区观看| 免费观看日韩| 久久一综合视频| 欧美精品www在线观看| 欧美在线一区二区| 免费一级欧美在线大片| 午夜久久黄色| 欧美高清在线视频| 久久精品二区| 欧美日韩在线另类| 欧美黄色日本| 国产欧美日韩专区发布| 国产精品一区在线观看| 欧美高清视频www夜色资源网| 欧美三级在线视频| 欧美大片第1页| 国产亚洲福利一区| 亚洲一级黄色| 一区二区三区你懂的| 久久尤物视频| 久久国产精品72免费观看| 欧美激情亚洲另类| 免费欧美在线| 狠狠色狠狠色综合人人| 亚洲一区国产一区| 亚洲视频中文| 欧美人与性动交a欧美精品| 欧美1区3d| 日韩视频一区二区三区在线播放| 亚洲丰满在线| 国产亚洲一级| 99精品免费网| 91久久一区二区| 久久久久国产一区二区三区| 亚洲主播在线播放| 欧美精品免费在线观看| 麻豆成人小视频| 韩日欧美一区二区| 午夜欧美大尺度福利影院在线看| 亚洲每日在线| 噜噜噜噜噜久久久久久91| 久久综合给合久久狠狠色| 国产麻豆视频精品| 亚洲欧美日本日韩| 欧美在线观看一二区| 国产欧美精品在线观看| 欧美一区二区三区播放老司机| 亚洲欧洲99久久| 亚洲国产欧美一区二区三区同亚洲| 久久超碰97人人做人人爱| 久久国产精品久久国产精品 | 午夜精品久久久久久99热| 亚洲一区二区三区四区中文| 欧美日韩中文精品| 一区二区高清视频| 亚洲午夜激情| 国产精品夜夜嗨| 欧美一区久久| 欧美大片免费久久精品三p | 国产色产综合色产在线视频| 洋洋av久久久久久久一区| 最新国产成人在线观看| 欧美另类专区| 国产精品海角社区在线观看| 欧美 日韩 国产精品免费观看| 狠狠综合久久| 老巨人导航500精品| 亚洲国产高清高潮精品美女| 日韩视频一区二区三区| 欧美性一区二区| 久久不射2019中文字幕| 欧美国产日韩一二三区| 一区二区三区久久| 亚洲午夜国产一区99re久久 | 亚洲午夜精品| 久久精品99国产精品日本| 久久精品动漫| 中文日韩在线| 国内一区二区在线视频观看| 美女网站久久| 日韩视频免费观看高清完整版| 国产精品成人免费| 亚洲国产99| 欧美日韩国产欧| 亚洲欧美日韩国产精品| 久久人人超碰| 亚洲午夜精品久久久久久浪潮| 国产美女精品视频免费观看| 裸体素人女欧美日韩| 亚洲自拍啪啪| 亚洲高清色综合| 午夜精品一区二区三区在线视 | 欧美国产91| 亚洲欧美精品伊人久久| 亚洲国产美女| 国产日韩欧美自拍| 欧美日韩国语| 欧美大片91| 亚洲精品免费观看| 国产欧美日韩视频| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲国产清纯| 国产视频亚洲精品| 国产精品久久九九| 欧美色欧美亚洲另类七区| 亚洲伦理在线观看| 中文精品视频一区二区在线观看| 亚洲成色精品|