请问一个api函数怎么理解,多谢

请教一个api函数如何理解,谢谢.以下是窗工程的全部代码,只有一个窗体,在窗体加一个列表框就行.OptionExpli

请教一个api函数如何理解,谢谢.
以下是窗工程的全部代码,只有一个窗体,在窗体加一个列表框就行.  
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  
Private   Const   LB_SETHORIZONTALEXTENT   =   &H194  
     
Private   Sub   setListWidth()  
        '如果列表框不够宽,则增加水平滚动条  
        Dim   i   As   Integer  
        Dim   List_MaxL   As   Integer  
         
        '   获得选项内容的最大长度  
        For   i   =   0   To   demo_lbox.ListCount   -   1  
                '让list_maxl中保存最长的一条字串  
                If   Len(demo_lbox.List(i))   >   List_MaxL   Then  
                        List_MaxL   =   Len(demo_lbox.List(i))   +   2  
                End   If  
        Next   i  
         
        '   判断是否内容显示不完全,如果是则添加水平滚动条  
        If   Me.TextWidth( "AA ")   *   List_MaxL   >   demo_lbox.Width   Then  
                SendMessage   demo_lbox.hwnd,   LB_SETHORIZONTALEXTENT,   Me.TextWidth( "AA ")   *   List_MaxL,   ByVal   0&  
        End   If  


End   Sub  
     

Private   Sub   Form_Load()  
      Dim   i   As   Integer  
      '   为ListBox控件添加选项  
      For   i   =   0   To   100  
            demo_lbox.AddItem   ( "这是列表框中的一项,最后数字表示这是第几行数据:(第   "   +   CStr(i))   &   "行) "  
            'demo_lbox.AddItem   ( "(第   "   +   CStr(i))   &   "行) "  
      Next   i  
       
      '   设置窗体坐标尺度模式和字体大小  
      Me.ScaleMode   =   vbPixels  
      Me.FontSize   =   demo_lbox.FontSize  
      '设置列表框的水平滚动条  
      Call   setListWidth  
End   Sub  
-----------------------------  
我要问的是:  
这个api函数如何理解,当然它的功能就是为列表框加一个水平滚动条.  
可是有几个地方我不明白:    
第一:下面定义常数的作用是什么?  
Private   Const   LB_SETHORIZONTALEXTENT   =   &H194  

第二:以下这一句,几个参数不明白  
SendMessage   demo_lbox.hwnd,   LB_SETHORIZONTALEXTENT,   Me.TextWidth( "AA ")   *   List_MaxL,   ByVal   0&  

&H194是消息的标识符,我最不明白的就是这个常数对应的是什么意思呀,还有,最后一个参数是什么意思?  


[解决办法]
LB_SETHORIZONTALEXTENT是列表框能接受的消息之一,其值和作用微软都规定好了。其实重点在于&H194,之所以定义常量,是我为了提高程序的可读性
SendMessage demo_lbox.hwnd, LB_SETHORIZONTALEXTENT, Me.TextWidth( "AA ") * List_MaxL, ByVal 0&
的意思是向demo_lbox发送一个LB_SETHORIZONTALEXTENT消息,其附带的第一个参数是滚动条的长度(准确来说是文本长度,滚动条必须适合这个最长文本,方便滚动),第二个参数对这个功能无效,使用0即可。
[解决办法]
Private Const LB_SETHORIZONTALEXTENT = &H194
&H194 是 API 的约定,唯一标识一个消息,该消息通过 wParam 指明列表框需要显示内容的宽度(Pixel 单位),消息处理过程会根据当前列表框的宽度决定是否需要显示水平滚动条。

SendMessage demo_lbox.hwnd, LB_SETHORIZONTALEXTENT, Me.TextWidth( "AA ") * List_MaxL, ByVal 0&
最后一个参数表示参数 lParam 为 C 类型的 NULL。