有关wndproc问题
wndprocprevproc;这算是定义一个变量还是函数为什么没有括号像prevproc()但是后面为什么调用prevproc(hwnd,umsg,......);??...
wndproc prevproc;
这算是定义一个变量还是函数
为什么没有括号像 prevproc()
但是后面为什么调用 prevproc(hwnd,umsg,......);
?? 展开
这算是定义一个变量还是函数
为什么没有括号像 prevproc()
但是后面为什么调用 prevproc(hwnd,umsg,......);
?? 展开
展开全部
但是后面为什么调用 prevproc(hwnd,umsg,......);
-- 从这句话来看, prevproc是"函数指针".
函数指针就是函数的地址, 比如说:
typedef void (*FType)(int); // 函数指针的语法, 返回值和参数类型可以不同.
void fun(int i); // 真正的函数
void main(){
FType ptr = fun; // 函数指针ptr指向fun函数
fun(100);
ptr(100); // 这两句的效果是一样的.
}
-- 从这句话来看, prevproc是"函数指针".
函数指针就是函数的地址, 比如说:
typedef void (*FType)(int); // 函数指针的语法, 返回值和参数类型可以不同.
void fun(int i); // 真正的函数
void main(){
FType ptr = fun; // 函数指针ptr指向fun函数
fun(100);
ptr(100); // 这两句的效果是一样的.
}
追问
那为什么不是定义 WNDPROC *prevproc
追答
窗口过程吗?
声明是 typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);
WNDPROC *prevproc需要改成WNDPROC prevproc; // *符号不需要, 已经是指针了.
至于wndproc prevproc;我不清楚定义代码, 所以我能肯定.
如果用的是VC, 右键点击wndproc选转到定义, 就可以看到他的定义代码了.
如果类似于
typedef WNDPROC wndproc; 那么2者等价
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询