发 帖  
原厂入驻New
实战多通道高速精密测温仪的全系列设计教程,以实际项目为依托,提升工程师核心竞争力!→点击立即抢购←
为什么我点击edit却弹出一个dialog?
63 Edit dialog
分享
现在一个Dialog界面里有几个edit   我点击一个edit 如何弹出一个软键盘dialog呢?
小弟刚学不久,希望用过的指点一下,或者在此之后看点儿什么资料比较好,感激不尽!!
0
2019-6-17 20:20:42   评论 分享淘帖 邀请回答
24个回答
点击之后 会触发消息的
在这个消息case下   新建键盘   键盘回掉函数  自己写
2019-6-18 05:53:52 评论

举报

是emwin或者ucgui么?点击EDIT的话会有相应的响应,然后在这个响应里面调用软键盘,前提是你还要把软键盘做好的。这个不是一两句话能说清的,最好多跑几个EMWIN或者UCGUI的官方例程,要不然很难理解的
2019-6-18 06:07:16 评论

举报

恩    UCGUI
我暂时先写了个软键盘dialog
现在的问题就是如何点击edit就弹出这个dialog
这个edit在dialog界面中。当我点击这个dialog中的这个edit时,消息是如何传递的呢,得到消息然后创建软键盘dialog就可以了
2019-6-18 06:22:34 评论

举报

恩,我就是想知道这个   case 消息:
这个消息是什么,卡在这里,软键盘dialog已经写好了
2019-6-18 06:38:05 评论

举报

EDIT小工具会将一下事件作为WM_NOTIFY_PARENT消息的一部分发送给DIALOG的回调函数的。
WM_NOTIFICATION_CLICKED                          已单击小工具。
WM_NOTIFICATION_RELEASED                       已释放小工具。
WM_NOTIFICATION_MOVED_OUT                   已单击小工具,并且指针已移出小工具,但没有释放。
WM_NOTIFICATION_VALUE_CHANGED            编辑小工具的值 (内容)已更改。
你在DIALOG的回调函数中对这些事件做出相应的处理,比如调用创建软键盘的函数等等!
如下图所示,只不过我这个是对BUTTON做处理的,多看看Segger官方的例程,理解回调机制,还有就是我这个是EMWIN的
2019-6-18 06:52:13 评论

举报

void _cbDetectCallback(WM_MESSAGE * pMsg) 
{
OS_CPU_SR cpu_sr = 0;
int NCode, Id;
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) 
{
        case WM_INIT_DIALOG:
Init_DetectDialog(pMsg);
break;
        case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) 
{
                case GUI_KEY_ESCAPE:
GUI_EndDialog(hWin, 1);
break;
                case GUI_KEY_ENTER:
GUI_EndDialog(hWin, 0);
break;
}
break;
        case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc); 
NCode = pMsg->Data.v;        
switch (Id) 
{
case GUI_ID_BUTTON2:
if(NCode==WM_NOTIFICATION_RELEASED)
{
 /* 执行相应的程序*/
}
break;
case GUI_ID_EDIT0:
if(WM_NOTIFICATION_CLICKED)
{
GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
}
break;
default:
break;
}
break;
        default:
WM_DefaultProc(pMsg);
    }
}
这样写不行,哪里有问题呢
2019-6-18 07:06:35 评论

举报

2019-6-18 07:13:12 评论

举报

我回调函数那样写,软键盘dialog没有调出来
2019-6-18 07:21:29 评论

举报

而且一点击那个edit界面就死掉了
估计是不能创建对话框吧,我记得官方有一个软键盘的例程,你可以参考一下
2019-6-18 07:50:05 评论

举报

WIDGET_NumPad.c
这个文件我看了下,一时没看懂,我再仔细看看
2019-6-18 08:08:23 评论

举报

请教一下 : GUI_EndDialog(hDlg, 1); 和 GUI_EndDialog(hDlg, 0); 有什么区别?
一个阻塞一个非阻塞?  什么意思呢...
2019-6-18 08:13:59 评论

举报

/*********************************************************************
*
*       _cbDialogUser
*
*&nbspurpose:
*   Callback function of the user dialog.
*/
static void _cbDialogUser(WM_MESSAGE * pMsg) {
  int      i; 
  int      NCode;
  int      Id;
  WM_HWIN  hDlg;
  WM_HWIN  hItem;
  hDlg = pMsg->hWin;
  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    for (i = 0; i < 2; i++) {
      hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0 + i);  /* Get the handle of the edit widget */
      EDIT_SetText(hItem, "12345678");                   /* Set text */
    }
    break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);      /* Id of widget */
    NCode = pMsg->Data.v;                 /* Notification code */
    switch (NCode) {
      case WM_NOTIFICATION_RELEASED:      /* React only if released */
        if (Id == GUI_ID_OK) {            /* OK Button */
          GUI_EndDialog(hDlg, 0);
        }
        if (Id == GUI_ID_CANCEL) {        /* Cancel Button */
          GUI_EndDialog(hDlg, 1);
        }
        break;
    }
    break;
  default:
    WM_DefaultProc(pMsg);
  }
}
没有看出这个dialog中的edit是如何调出数字键盘的额...
2019-6-18 08:31:41 评论

举报

EDIT事件WM_NOTIFY_PARENT消息下你的条件判断有点问题,if(NCode==WM_NOTIFICATION_CLICKED),还有创建窗口的时候,参数里有个父窗口的句柄,你这里是0,这个很有可能就是死机的问题。解决了这些,弹出一个窗口不难
2019-6-18 08:48:59 评论

举报

感谢你的回复。
那个if(NCode==WM_NOTIFICATION_CLICKED)改成这样,还是进不进。
父窗口是不是设置个背景窗口作为所有dialog的父窗口比较好,我过会儿试试吧,再次感谢
2019-6-18 08:55:47 评论

举报

你可以设置焦点  setfoucs  貌似是这个函数  你找找看
2019-6-18 09:06:20 评论

举报

QT有事件监听器,可以装上
2019-6-18 09:18:25 评论

举报

如果你使用了操作系统,那么你可以这样做:
首先为软键盘单独建立一个任务,该任务的入口就是如EDIT等所有可以输入文字的句柄,在EDIT的回掉函数里面向软键盘任务发送消息,软键盘任务得到调度。我就是这样搞的,感觉还可以
点击EDIT输入框后弹出软键盘:






2019-6-18 09:28:35 评论

举报

大虾指教一下,你在一个任务里面创建一个对话框以后,当这个对话框不需要时原来的主对话框需不需要重绘?还要有多个EDIT时怎么对应获取键盘的输入值,根据编辑框的ID吗?
2019-6-18 09:43:04 评论

举报

只有小组成员才能发言,加入小组>>

12下一页

118个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表