初级会员
- 积分
- 191
- 金钱
- 191
- 注册时间
- 2013-6-21
- 在线时间
- 55 小时
|
1金钱
@zuozhongkai 你好,技术支持转过来。
开发硬件:429阿波罗 + 7寸屏
开发软件:MDK5。21
开发库件:HAL
背景描述:从官方的WIDGET_NumPad.c改编而来 , 想做一个对话框1内再创建一个对话框2,并从对话框2发消息给对话框1的案例。
测试结果:先在我们的硬件上好象无法实现,后转模拟器一样无法实现。
请求支援!
过程简述如下:
1. 从桌面创建对话框hWinUser,再从对话框hWinUser内部创建对话框hWinNumpad
2. 从对话框hWinNumpad内发消息到hWinUser去显示
3. 对话框hWinUser无法收到数据并显示,接收不到消息值。
代码简述如下:
[mw_shl_code=applescript,true]第一步. 第1个窗口(接收消显, 在本窗口内开启数字键盘)
//回调
static void _cbDialogUser ( WM_MESSAGE * pMsg )
{
//其它略
switch ( pMsg->MsgId )
{
//接收消息并显示
case MSG_ID_NUMVALUE:
hItem = WM_GetDialogItem ( hDlg, GUI_ID_EDIT0);
if(pMsg->Data.v == 1)
EDIT_SetText ( hItem, "1" );
else
EDIT_SetText ( hItem, "0" );
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId ( pMsg->hWinSrc );
NCode = pMsg->Data.v;
switch ( NCode )
{
case WM_NOTIFICATION_RELEASED:
if(Id == GUI_ID_NUMPAD)
{
//开启键盘
Win_Numpad(WM_HBKWIN);
}
break;
}
break;
}
}
//创建
hWinUser = GUI_CreateDialogBox ( _aDialogUser,GUI_COUNTOF ( _aDialogUser ),_cbDialogUser, hWin, 0, 0 );
第二步. 第2个窗口(发送消息)
//回调
void _cbDialogNumPad ( WM_MESSAGE * pMsg )
{
//其它略
switch ( pMsg->MsgId )
{
case WM_NOTIFY_PARENT:
Id = WM_GetId ( pMsg->hWinSrc );
NCode = pMsg->Data.v;
switch ( NCode )
{
case WM_NOTIFICATION_RELEASED:
//方法2,发送带参数消息
Message.MsgId = MSG_ID_NUMVALUE;
switch(step)
{
case 0:
step = 1;
Message.Data.v = 1;
break;
case 1:
step = 0;
Message.Data.v = 0;
break;
}
WM_SendMessage(hWinUser,&Message);
break;
}
break;
//其它略
case WM_PAINT: break;
case WM_INIT_DIALOG:break;
default: WM_DefaultProc ( pMsg );
}
}
//创建
hWinNumpad = GUI_CreateDialogBox ( _aDialogNumPad,GUI_COUNTOF ( _aDialogNumPad ),_cbDialogNumPad, hWin, 0, 0 );
[/mw_shl_code]
|
最佳答案
查看完整内容[请看2#楼]
结贴。
已经搞定。
加一句:hWinUser = WM_GetClientWindow(hWinUser);
|