作业帮 > 综合 > 作业

回调函数是什么 谢谢HRESULT CALLBACK HelloworldProcess(HWND hWnd,UINT

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/04/29 09:19:58
回调函数是什么 谢谢
HRESULT CALLBACK HelloworldProcess(HWND hWnd,UINT Message,WPARAM WParam,LPARAM LParam)
{
switch(Message)
{ case WM_PAINT:
{ HDC dc=BeginPaint(hWnd);
SetColor(dc,CL_RED);
TextOut(dc,50,50," Hello World!");
EndPaint(hWnd);
}
return 0;
}
return DefWindowProc(hWnd,Message,WParam,LParam);//?
}
void RegisterHelloworld(void)//手册P20
{ TWNDCLASS wc;
memset(&wc,0,sizeof(wc));
wc.clForeground=CL_BTNTEXT;
wc.clBackground=CL_BTNFACE;
wc.lpfnWndProc=HelloworldProcess;//这里函数名是不是就是函数的指针?
wc.lpszClassName="Helloworld";
RegisterClass(&wc);
}
请问定义了回调函数HelloworldProcess,
问题1 为什么必须要这句呢 return DefWindowProc(hWnd,Message,WParam,LParam);? 加这一句的作用是干啥?
问题2 我的c基础不是非常好,再问一下 函数名是不是就是该函数的地址?可以直接把一个函数名赋给一个函数指针吗?不需要加取地址符(&)吗?
关键是第1个问题 谢谢大家 希望给些例子或易懂语言 必追分感谢.
回调函数是什么 谢谢HRESULT CALLBACK HelloworldProcess(HWND hWnd,UINT
1、加上这一句是让系统处理你不处理的数据,如果不加这一句的话,除非你的程序处理了所有消息,不然很有可能运行不正常
2、函数名就是函数的地址,就是函数的指针,不需要在进行取地址操作
回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应