| 
 
初级会员 
 
	积分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,
 还请各位大神指导下,谢谢~
 
 | 
 |