注册 登录
编程论坛 VC++/MFC

关于VC++6.0的函数的小问题

gradual 发布于 2011-10-19 07:12, 644 次点击
大家好,我想问下各位高人,vc的函数都有什么区别,为什么有的函数需要在前面写些类型等,有的却不用。例如
SetWindowsHookEx(
        WH_KEYBOARD,        // hook type
        KeyboardProc,     // hook procedure
        NULL,    // handle to application instance
        GetCurrentThreadId()   // thread identifier
      );
    KeyboardProc(
        int code,       // hook code
        WPARAM wParam,  // virtual-key code
        LPARAM lParam   // keystroke-message information
);
函数SetWindowsHookEx前面什么也不用写,而函数KeyboardProc前面应该有的LRESULT CALLBACK被删掉后就报错了?
请不吝赐教!
3 回复
#2
quanshaohui2011-10-19 08:42
不是很懂
#3
sun47420027162011-10-19 17:30
KeyboardProc是回调函数,他是主函数调用的窗口过程函数,窗口类.lpfnWndProc
SetWindowsHookEx是个普通的API函数,在调用时不用声明,因为在微软头文件中已经包含。
无论回调函数还是普通的API函数,定义是必不可少的,无论是声明还是定义(如果没有声明的话,而是直接定义的),类型一定要写。
这个API函数之所以没有写类型,是因为此处它正在被调用。而且在其他头文件中已经声明和定义了。
而这个回调函数此处在使用前应该定义,且就在本程序之内,不用放在头文件中,因此定义或者声明前必须给出类型。
#4
gradual2011-10-19 22:08
差不多明白了 多谢!
为什么不把所有的这些函数都放到一个头文件里,用的时候直接用多好,还整这么多麻烦事
1