ËÒ¡ÁÕ¤Ó¶ÒÁ ¢ÍãËéä»â¾Êµìŧ àÇ纺ÍÃì´¨Õ·Ù¨Õà¹çµ´Íµ¤ÍÁ µÑÇãËÁèá·¹¹èФÃѺ

ËÃ×͵ԴµèÍà¢éÒÁÒ·Ò§ Inbox ·Õè à¿«ºØê¤ ¼Á¤ÃѺ

˹éÒËÅÑ¡
¢èÒÇÊÒà - º·¤ÇÒÁ ·Ñé§ËÁ´
VB 6/VB.Net
ASP/ASP.Net
¨Ñº©èÒ¤ÍÁ¾ÔÇàµÍÃì
àÃÕ¹ÃÙé¼èÒ¹ Flash Movie
º·¤ÇÒÁ·ÕèÁÕ¼ÙéµÍºÅèÒÊØ´  
 RSS Feeds
 ´ÒǹìâËÅ´â»Ãá¡ÃÁ RSS Reader ä´é·Õè¹Õè ...   Download â»Ãá¡ÃÁ RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 6 1 6 1 3 2

7 ¸Ñ¹ÇÒ¤Á ¾.È.2549
87 Users On-Line.
Visitors - Page views
 8 9 7 3 8 7 5
1 ¡ØÁÀҾѹ¸ì ¾.È.2551

Google   
àÇçº g2gnet.com
¢¹Ò´µÑÇÍÑ¡ÉÃ:  

¡ÒÃãªé§Ò¹ ComboBox ´éÇ Method ͹غÒÅáÁÇàËÁÕÂÇ ¡Ñº ¡ÒÃãªé Win32 API ÇèÒã¤ÃÁѹ¨ÐàÃçÇ¡Çèҡѹ

Category »  VB 6/VB.Net
â´Â : Webmaster àÁ×èÍ 22/3/2550 1:59:00
(ÍèÒ¹ : 19800) 
¾Ù´¶Ö§àÃ×èͧ¢Í§ Win32 API (Application Programming Interface) ¢Öé¹ÁÒ·Õäà àËÅèÒâ»Ãá¡ÃÁàÁÍÃìËÅÒ¤¹¡çá·º¨ÐÊèÒÂ˹éÒáÅéǤÃѺ ... ¾Õè¹éͧ áµè¤Ø³ÅͧÍèÒ¹º·¤ÇÒÁ¹Õé¡è͹¤ÃѺ ¼ÁÇèҤسÍÒ¨¨Ðà»ÅÕè¹ã¨ÁҪͺÁѹ¡çà»ç¹ä»ä´é (ÍÂèÒ§á¹è¹Í¹) Êèǹ¾×é¹°Ò¹ ËÃ×Í ÃÒÂÅÐàÍÕ´¢Í§ API Áѹ¤×ÍÍÐäüÁ¤§äÁè¢Í¡ÅèÒǶ֧ÅèСѹ ¡çÁÕËÅÒÂàÇ纷Õèà¢ÒºÍ¡ä»áÅéÇáËÅÐ àÍÒà»ç¹ÇèÒËÅѧ¨Ò¡·Õèä´éÍèÒ¹ä»áÅéÇ ¤Ø³¨Ð¨Ô¹µ¹Ò¡ÒÃà¾×è͹ÓÁѹä»ãªéãËéà¡Ô´»ÃÐ⪹ìä´éÍÂèÒ§äÃÅèФÃѺ ... ¾Õè¹éͧ
´ÒǹìâËÅ´ Source Code ÊÓËÃѺ MS Visual Basic 6.0 - Service Pack 6

Design Time
Design Time

Execute
Execute



' ==========================================================
' ¡Ò÷´ÊͺáÅÐà»ÃÕºà·Õº¡ÒÃà¾ÔèÁäÍà·çÁ (Add Item) ã¹ ComboBox ´éÇÂ
' 1. ¡ÒÃà¾ÔèÁäÍà·çÁ´éÇ¡ÒÃãªé Method AddItem µÒÁ»¡µÔ
' 2. ¡ÒÃà¾ÔèÁäÍà·çÁ´éÇ¡ÒÃãªé Win32 API (Application Programming Interface)
' URL: http://www.g2gnet.com
' eMail: [email protected] ËÃ×Í [email protected]
' ==========================================================

Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
            ByVal hWnd As Long, _
            ByVal wMsg As Long, _
            ByVal wParam As Long, _
            lParam As Any _
            ) As Long
			
' ͸ԺÒ¨ҡ SendMessage
' hWnd ¤×Í Çѵ¶Ø (Object) ËÃ×Í Control ·ÕèàÃÒµéͧ¡ÒõԴµè͡ѺÁѹ ã¹·Õè¹Õé¤×Í ComboBox
' wMsg ¤×Í ÊÔè§·ÕèÊè§ä»ºÍ¡Çѵ¶ØÇèÒ¨ÐãËéÁѹ·ÓÍÐäà 㹷Õè¹Õé¤×Í¡ÒÃà¾ÔèÁäÍà·çÁ â´Â¡ÒáÓ˹´¤èÒ¤§·ÕèãËé¤×Í 143 °Ò¹ 16
' wParam áÅÐ Param ¤×Í ¾ÒÃÒÁÔàµÍÃìàÊÃÔÁà¢éÒä» «Öè§ÁÕ˹éÒ·Õè áÅÐ ¤ÇÒÁËÁÒÂᵡµèÒ§¡Ñ¹ä»ã¹ Message áµèÅЪ¹Ô´
' ¾ÒÃÒÁÔàµÍÃì·Ñé§ÊͧµÑǹÕéËÒ¡äÁèä´éãªé§Ò¹ µéͧ¡Ó˹´¤èÒ 0 äÇé´éÇ Êèǹ㹡óչÕé
' wParam = 0 ËÁÒ¤ÇÒÁÇèÒ äÁèä´éãªé§Ò¹
' lParam ¤×Í ¤èÒ·ÕèÊè§ä»ãËé¡Ñº ComboBox ã¹·Õè¹Õé¤×Í ¤èÒ¨Ò¡ strItemText


' ¡Ó˹´¤èÒ¤§·Õèà¾×èÍÃкØÇèÒà»ç¹¡ÒÃà¾ÔèÁäÍà·çÁ â´Â¡Ó˹´¤èÒ¤§·Õèà»ç¹ 143 àÅ¢°Ò¹ 16
Private Const CB_ADDSTRING = &H143

' ËÃ×Í ¡Ó˹´ãËéźäÍà·çÁÍÍ¡¡çãªé
Private Const CB_DELETESTRING = &H144

' ËÃ×Í ¡Ó˹´ãËéÅéÒ§äÍà·çÁ·Ñé§ËÁ´ÍÍ¡¡çãªé
Private Const CB_RESETCONTENT = &H14B

' ================================================================
' ËÁÒÂà˵Ø: ËÒ¡¤Ø³ÂéÒ¤èÒ¤§·ÕèàËÅèÒ¹Õéä»äÇéã¹ Module (¹ÒÁÊ¡ØÅ .BAS)
' ¤Ø³µéͧà»ÅÕ蹨ҡ Private ãËéà»ç¹ Public à¾×èÍãËé·Ø¡æ¿ÍÃìÁÊÒÁÒöÁͧàËç¹´éÇÂà´éÍ ... ¾Õè¹éͧ
' ä¿Åì´ÒǹìâËÅ´·Õè¼ÁãËéÁÒ¨ÐÁÕ¤èÒ¤§·Õè (Constant) ÊÓËÃѺ¡ÒÃãªé SendMessage ÁÒ´éǤÃѺ
' ãËé´ÙµÑÇÍÑ¡ÉõÑÇ˹éÒÊÓËÃѺ Control áµèÅеÑÇ´éÇ àªè¹
' CB ËÁÒ¶֧ ComboxBox ËÃ×Í
' LB ËÁÒ¶֧ ListBox ËÃ×Í
' TB ËÁÒ¶֧ TextBox ¹Õèà»ç¹µÑÇÍÂèÒ§ äÁèãªèà»ç¹µé¹ (äÁé) ... 55555 ... â»Ãá¡ÃÁàÁÍÃìÍÒÃÁ³ìÊØ¹·ÃÕÂì
' ================================================================


' ·´Êͺ´éÇ¡ÒÃãªé Win32 API
Private Sub cmdComboAPI_Click()
    Dim strItemText As String
    Dim CountIndex As Integer
    Dim StartTimer As Double
    
    cmbTest.Clear
    ' àÃÔèÁ¨ÑºàÇÅÒ
    StartTimer = Timer
    ' ÇÔ¸Õ¡ÒÃà¾ÔèÁäÍà·çÁ´éÇ¡ÒÃãªé§Ò¹ Win32 API
    ' ·ÓÃÒ¡ÒâÖé¹ÁÒà¾ÔèÁà¢éÒä»ÊÑ¡ 5000 ÃÒ¡Òà ¨Ðä´éàË繡ѹªÑ´æÇèҢͧã¤Ã¹èÐÁѹá¹è¡Çèҡѹ
    For CountIndex = 1 To 5000
        strItemText = "ÅӴѺ·Õè: " & CStr(CountIndex)
        ' Êè§ Message 仺͡
        ' ComboxBox (ª×èÍ cmbTest), ´éÇÂÇÔ¸Õ¡ÒÃà¾ÔèÁ¤èÒà¢éÒä» (¡Ó˹´¤èÒ 143 àÅ¢°Ò¹ 16), 0 = äÁèä´éãªé, ÃкØà»ç¹¤èÒ (ByVal) ¢Í§ strItemText
        SendMessage cmbTest.hWnd, CB_ADDSTRING, 0, ByVal strItemText
    Next
    
    ' StartTimer ¤×Í àÇÅÒ·ÕèàÃÒ¡Ó˹´¤èÒÁÒ¡è͹ «Öè§¡ç¤×ÍàÇÅÒàÃÔèÁµé¹ÅèФÃѺ
    ' Timer ¤×Í àÇÅһѨ¨ØºÑ¹ ³ ¢³Ð¹Õé «Öè§¡ç¤×ÍàÇÅÒ·ÕèÊÔé¹ÊØ´¢Í§¡Ò÷ӧҹ
    MsgBox "ãªéàÇÅÒ: " & Format(Timer - StartTimer, "0.000") & " ÇÔ¹Ò·Õ", vbOKOnly + vbInformation, "¡ÒÃãªé Win32 API"
    
    ' ËÒ¡¤Ø³ÍÂÒ¡ÅͧàÅ蹡ѺÁѹ´éÇ¡ÒÃÊÑè§ãËé Clear ¤èÒã¹ ComboBox
    ' 㹡Òà Clear »¡µÔàÃÒÊÑ觴ѧ¹Õé ... cmbTest.Clear
    ' ÊÓËÃѺ Win32 API
    ' SendMessage cmbTest.hWnd, CB_RESETCONTENT, 0, 0
    ' 0 ¡Ñº 0 ·ÕèàË繤×Í àÃÒäÁèä´éãªé§Ò¹ wParam, lParam áµèàÃÒµéͧÃкؤèÒ 0 äÇéãËéÃÙéÇèÒàÃÒäÁèÁÕ¡ÒÃãªé§Ò¹¾ÒÃÒÁÔàµÍÃì¹Õé¤ÃѺ¼Á
    
    ' ËÃ×ÍÍÂÒ¡ÅͧźäÍà·çÁµÒÁ Index ·ÕèªÕéÍÍ¡ä» ¡çãªé´Ñ§¹Õé
    ' àªè¹ ¡ÒÃãªé Method 㹡Òà Remove »¡µÔàÃÒÊÑ觴ѧ¹Õé ... cmbTest.RemoveItem 2
    ' ËÁÒ¤ÇÒÁÇèÒµéͧ¡ÒÃźäÍà·çÁ·ÕèÁÕ Index = 2 ÍÍ¡ä» (¡ÒÃàÃÔèÁµé¹¹Ñº Index ã¹ ComboBox ¨ÐàÃÔèÁ¨Ò¡ 0 ¹èФÃѺ)
    ' ÊÓËÃѺ Win32 API
    ' â´Â»¡µÔàÁ×èÍàÃÒàÅè¹ API ÍÂèÒ§¹Õé ËÒ¡ÁÕ¢éͼԴ¾ÅÒ´à¡Ô´¢Öé¹ àªè¹ ¤Ø³ÁÕ Index ·Ñé§ËÁ´¨Ò¡ 0 - 9 áµè¤Ø³ÊÑè§ä»Åº Index ·Õè 10
    ' àÃÒ¡çµéͧµÒÁ仵ÃǨÊͺàÍÒàͧ äÁè§Ñé¹ÁѹäÁèºÍ¡¤Ø³ËÃÍ¡ ... àÍêÐ áÅéÇÁѹ§èÒ¡ÇèÒËÃ×Íà»ÅèÒÅèÐà¹ÕèÂ
    ' ¡ÒõÃǨÊͺẺ§èÒÂæÇèÒÁÕ Error ËÃ×ÍäÁè ´éÇ¡Ò÷´Êͺ¤èÒ·Õè Return ¡ÅѺÁÒ
    ' Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (
    '           .................
    '            ) As Long ¡ç¤×Íà¨éÒµÑǹÕéáËÅÐà»ç¹¤èÒ·Õèµéͧ Return ¡ÅѺÁÒ
    
    ' Dim Result As Long
    ' Result = SendMessage(cmbTest.hWnd, CB_DELETESTRING, 2, 0)
    ' MsgBox Result
    ' ¡Ã³Õ¹Õé Result = 4999
    ' Result = SendMessage(cmbTest.hWnd, CB_DELETESTRING, 20000, 0)
    ' MsgBox Result
    ' ¡Ã³Õ¹Õé Result = -1 ¹Ñ蹤×Í à¡Ô´¤ÇÒÁ¼Ô´¾ÅÒ´¢Öé¹ÁÒ¹èФÃѺ ... ¾Õè¹éͧ ... »Ò·Ñ§¡éÒ àÍê ÂÙàáéÒ
    
    ' ÅͧàÅè¹´Ùà¶ÍФÃѺ¾Õè¹éͧ ... Learning By Doing Áѹ¤×Í àÃÕÂ¹ä» ¡ç·Óä» áµèµéͧãªéÊÁͧ¤Ô´+¨Ô¹µ¹Ò¡ÒõÒÁä»´éÇÂ
End Sub

' ·´Êͺ´éÇ Method AddItem µÒÁ»¡µÔ
Private Sub cmdComboVB_Click()
    Dim strItemText     As String
    Dim CountIndex        As Integer
    Dim StartTimer        As Double
    
    cmbTest.Clear
    StartTimer = Timer
    ' ÇÔ¸Õ¡ÒÃà¾ÔèÁäÍà·çÁà¢éÒÊÙè ComboBox ´éÇ¡ÒÃãªé§Ò¹ Method AddItem µÒÁ»¡µÔ
    ' ·ÓÃÒ¡ÒâÖé¹ÁÒà¾ÔèÁà¢éÒä»ÊÑ¡ 5000 ÃÒ¡ÒÃ
    For CountIndex = 1 To 5000
        strItemText = "ÅӴѺ·Õè: " & CStr(CountIndex)
        cmbTest.AddItem strItemText
    Next
    MsgBox "ãªéàÇÅÒ: " & Format(Timer - StartTimer, "0.000") & " ÇÔ¹Ò·Õ", vbOKOnly + vbInformation, "¡ÒÃãªé Method AddItem µÒÁ»¡µÔ"
End Sub

Private Sub Form_Load()
    cmbTest.Clear
End Sub

Conclusion:
ÁѹäÁèä´éËÁÒ¤ÇÒÁÇèÒ¡ÒÃãªé API ¨Ð´ÕàÊÁÍä»ËÃÍ¡¹èФÃѺ à¾ÃÒÐÁѹ´ÙÂØè§ÂÒ¡ÁÒ¡¡ÇèÒÇÔ¸Õ¡Òû¡µÔ«èÐÍÕ¡ API ã¹ÅѡɳйÕé¨Ö§àËÁÒСѺ»ÃÔÁÒ³¢éÍÁÙÅ·Õè¹ÓÁÒãÊè ComboBox à»ç¹¨Ó¹Ç¹ÁÒ¡æ «Öè§âÍ¡ÒÊ㹡ÒùÓÁÒãªéÁѹ¤è͹¢éÒ§¨Ð¹éÍ (¨ÃÔ§æ) »ÃÐà´ç¹ÊӤѭÁÑÕ¹äÁèä´éÍÂÙè ³ ¨Ø´¹Õé áµèÁѹÊӤѭ·ÕèàÃÒä´éÈÖ¡ÉÒ ä´éÅͧàÅ蹡Ѻ API Ẻ¾×é¹°Ò¹ àªè¹ SendMessage ¹ÕèáËÅÐãËé¡ÃШèÒ§¢Öé¹ÁÒ (ÍÕ¡â¢) ¨Ò¡¹Ñ鹡ç¹Ó仾Ѳ¹Òãªé§Ò¹¡Ñº Object µÑÇÍ×è¹æ ËÃ×Í Ê¶Ò¹Ð¡ÒóìÍ×è¹æ ·ÕèàÃÒÍÒ¨äÁèà¤ÂÅèǧÃÙéÁÒ¡è͹ áµèÊÒÁÒö¹Óá¹Ç·Ò§·Õèä´éÈÖ¡ÉÒ¹Õéä»ãªéà¾×èÍ»ÃСͺ㹡ÒõѴÊÔ¹ã¨ÍÕ¡¤ÃÑé§Ë¹Öè§ä§àÅèÒ¤ÃѺ

¾Ñ¡ËÅѧæàËç¹àËÅèÒ¹éͧæ¹Ñ¡ÈÖ¡ÉÒËÔéǵÓÃÒ·Õèᨡà»ç¹ CD µÑÇÍÂèÒ§ÁÒãËé´éÇ ÃÇÁä»¶Ö§¾Ç¡ÃѺ¨éÒ§·Óâ»Ãਤ¹Ñ¡ÈÖ¡ÉÒ ¡çÂѧàÍÒÁÒËÅÍ¡¢Ò ·ÓÁÒËÒ¡Ô¹¡Ñº¹éͧæ¹Ñ¡ÈÖ¡ÉÒ (·Õè¢Õéà¡Õ¨) àËÅèÒ¹ÕéáËÅÐ ... àÍÒäÇéÇèÒ§æ¨ÐÁÒàÅèҾĵԡÃÃÁ·ØàÃÈæ¢Í§¡ÅØèÁ¤¹àËÅèÒ¹Õé ·ÕèÍÂÙè㹨ѧËÇÑ´¢Í¹á¡è¹ãËéä´éÃѺÃÙé¡Ñ¹ ºÒ§¤¹ÂѧÁÕ¤ÓÇèÒÍÒ¨ÒÃÂì¹Ó˹éÒàÅ ... Áѹ¡ç·Óä»ä´é ¤Ô´´Ù¤ÃѺ¾Õè¹éͧ à¨Í˹éÒÍÂÒ¡´èÒà»ç¹ÀÒÉÒáÍÊà«ÁºÅÕéÊÑ¡·Õ
mov AX, The Dog ¡çá»Åà»ç¹ÀÒÉÒ¤¹ä´éÇèÒ âËÅ´¢éÍÁÙÅà¢éÒÃÕ¨ÕÊàµÍÃì AX ´éÇÂÊØ¹Ñ¢ ¤ÃѺ·èÒ¹ ... 55555

àÍéÒ à´ÕëÂǨÐ仡ѹãË­è ¤×Í ¤¹·Õèáµè§µÓÃÒÍÍ¡ÁÒ¢Ò (â·É¹èФÃѺ ¨Óª×èÍäÁèä´é) à¢Ò¡çÁÕਵ¹Ò·Õè´ÕÍÂÙèáÅéÇ ·Õ¹ÕéàÁ×èÍàÃÒÈÖ¡ÉÒ´ÙáÅéÇ ËÒ¡ÍÂÒ¡¾Ñ²¹ÒµÑÇàͧãËéÁÒ¡¢Öé¹ ¡çÅͧãÊèäÍà´ÕµÑÇàͧà¢éÒ仫ԤÃѺ àÍÒà»ç¹ÇèÒ¼ÁÅͧ¹Ó·Ò§ä»ãËéÊÑ¡àÃ×èͧáÅéǡѹ àªè¹


Ẻà´ÔÁ¹èÐ àÇÅҤس¨Ðà¢éÒä»á¡é䢡çµéͧ´ÑºàºÔéŤÅÔꡨҡá¶Ç·Õèµéͧ¡ÒâÖé¹ÁÒ ¤Ø³¡çÅͧà»ÅÕè¹ (½Ö¡½¹ÇÔ·ÂÒÂØ·¸¹Ñè¹áËÅÐ) â´Âãªé ComboBox à¢éÒÁÒªèÇ â´ÂãËéáÊ´§ã¹µÓáË¹è§ Cell ¢Í§ÃËÑÊÊÔ¹¤éÒ ËÃ×Í ª×èÍÊÔ¹¤éÒ ËÃ×Í ... á·¹ (ãËéÍèÒ¹º·¤ÇÒÁ µÒÃÒ§¡ÃÔ´¸ÃÃÁ´Ò ·ÕèäÁè¸ÃÃÁ´Ò ¢Í§¼Á»ÃСͺ仴éǤÃѺ ... Åͧ´Ù Åͧ·Ó仡è͹Ãͺ˹éÒ¼Á¨ÐÁÕà©ÅÂãËé) «Ö觡óչÕé»ÃÔÁÒ³ÊÔ¹¤éÒÁѹÍÒ¨¨ÐÁÕà»ç¹¨Ó¹Ç¹ÁÒ¡ ´Ñ§¹Ñé¹µéͧÍÒÈÑ Win32 API à¢éÒÁÒªèÇÂä§ÅèФÃѺ à¾×èÍãËéà¡Ô´¡ÒÃáÊ´§¼Å¢éÍÁÙÅ·ÕèÃÇ´àÃçÇ ... à»ç¹ä§ÅèФÃѺ ... º·ÊÃØ»¢Í§¼Á.

 


¨Õ ·Ù ¨Õ à¹çµ ´Íµ ¤ÍÁ - g2gNet Dot Com
àÅ¢·ÐàºÕ¹¾Ò³ÔªÂìÍÔàÅç¡·Ã͹ԡÊì 0407314800231
CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
Email: [email protected] ËÃ×Í â·Ã. 08-6862-6560