初级会员

- 积分
- 82
- 金钱
- 82
- 注册时间
- 2015-1-15
- 在线时间
- 14 小时
|
1金钱
最近在看emwin的,发现里面有个概念之前没怎么碰到过,关于回调函数
//窗口回调函数
static void _cbWindow(WM_MESSAGE *pMsg)
{
GUI_RECT Rect;
switch(pMsg->MsgId)
{
case WM_PAINT:
WM_GetInsideRect(&Rect); //返回活动窗口减去边界后的尺寸
GUI_SetBkColor(GUI_RED); //红色背景色
GUI_SetColor(GUI_YELLOW);//黄色
GUI_ClearRectEx(&Rect); //清除Rect区域,既绘制红色区域
GUI_DrawRectEx(&Rect); //绘制Rect区域,既绘制黄色框框
GUI_SetColor(GUI_BLACK); //黑色
GUI_SetFont(&GUI_Font16_ASCII); //设置字体
GUI_DispStringHCenterAt("Foreground Window",75,40);
break;
default:
WM_DefaultProc(pMsg);
//创建前景窗口
hWnd = WM_CreateWindow(10,50,150,100,WM_CF_SHOW,_cbWindow,0);
以上是EMwin例程里的,
对这里有点问题想请教下各位:
这里的 WM_CreateWindow对函数 _cbWindow进行了一次调用。那么_cbWindow(WM_MESSAGE *pMsg)的参数*pMsg是怎么传递进来的啊?
因为 WM_CreateWindow这个函数是封装起来的 所以看不到具体操作内容,个人认为可能是在这个函数里调用_cbWindow时定义了一个类型WM_MESSAGE的参数,或者默认pMsg->MsgId=WM_PAINT,
还请各位大神指导下,谢谢~
|
|