API函数
Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
传递的第一个参数是窗口句柄(me.hwnd),但是第二参数也是长整型,传递参数时,第二值应该怎么设置。是传递常数、常量还是其他?为什么要这么传递?在学API过程中,遇到这些问题,
1.在传递参数时,为什么有些地方要用常数,有些地方要用自定义变量?

解决方案 »

  1.   


    '其实该函数也可以这样定义:
    Private Declare Function EnableWindow Lib "user32" Alias "EnableWindow" (ByVal hwnd As Long, ByVal fEnable As Boolean) As Long
    第二个参数传递True,则使能窗口
    如果传递Flase,则禁止窗口而函数本身的返回值,如果返回的是0,则表示该窗口之前不是被禁止的;如果返回的值大于0,则表示该窗口之前是被禁止的
    至于你的那个问题“1.在传递参数时,为什么有些地方要用常数,有些地方要用自定义变量?”
    你就要看是什么API函数了,在API浏览器搜索的时候取该API函数的每个单词的首字母,再加一个下划线“_”,如果有常量显示的话,则表示该API需要用到这几个常量举几个常用的例子:
    GetWindowLong
    该API需要用到的常量则为GWL_开头,即取Get、Window、Long开头的字母ShowWindow
    以SW_开头的常量,即取Show、Window开头的字母SetWindowPos
    以SWP_开头的常量…………还有很多API都是这样定义的,但只限于微软提供的API,如果是第三方提供的话就很难保证了!
      

  2.   

    实际的函数中,本来 就是long参数
      

  3.   

    ByVal fEnable As Long,在函数中只使用参数的值,传递时可以给常量也可以给变量(调用时传递变量的值);假设改成ByRef fEnable As Long,在函数中会改变参数的值,传递时必须给变量(调用时传递变量的储存单元地址)。