硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7183|回复: 16
收起左侧

[有问必答] 怎样获得当前正在输入的文本框位置和句柄?

[复制链接]

22

主题

24

回帖

90

积分

初级会员

积分
90
发表于 2015-4-15 13:33:05 | 显示全部楼层 |阅读模式
      有多个GUI_ID_TEXT0  GUI_ID_TEXT1   GUI_ID_TEXT2  或 GUI_ID_LISTVIEW0   怎样获得当前正在输入的文本框位置和句柄?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 13:45:01 | 显示全部楼层
使用这个函数: WM_GetDialogItem()    返回对话框项目 (小工具)的窗口句柄。
回复

使用道具 举报

22

主题

24

回帖

90

积分

初级会员

积分
90
 楼主| 发表于 2015-4-15 13:46:05 | 显示全部楼层
谢谢
回复

使用道具 举报

22

主题

24

回帖

90

积分

初级会员

积分
90
 楼主| 发表于 2015-4-15 14:17:06 | 显示全部楼层
WM_GetDialogItem( hDlg,GUI_ID_TEXT0  ) 不是获得的GUI_ID_TEXT0 的句柄吗?我怎样知道目前输入的是 GUI_ID_TEXT0还是GUI_ID_TEXT1......是用WM_GetDialogItem( hDlg,GUI_ID_TEXT0  )
还是WM_GetDialogItem( hDlg,GUI_ID_TEXT1  ) ?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 14:22:14 | 显示全部楼层
看一下uCGUIBulder生成的代码,也许你对这个函数的使用就更清楚。
我这里贴一个简单的代码:
  1. /*
  2. ******************************************************************
  3. **                      uCGUIBuilder                            **
  4. **                  Version:   4.0.0.0                          **
  5. **                     2012 / 04                               **
  6. **                   CpoyRight to: wyl                          **
  7. **              Email:ucguibuilder@163.com                        **
  8. **          This text was Created by uCGUIBuilder               **
  9. ******************************************************************/
  10. #include <stddef.h>
  11. #include "GUI.h"
  12. #include "DIALOG.h"
  13. #include "WM.h"
  14. #include "BUTTON.h"
  15. #include "CHECKBOX.h"
  16. #include "DROPDOWN.h"
  17. #include "EDIT.h"
  18. #include "FRAMEWIN.h"
  19. #include "LISTBOX.h"
  20. #include "MULTIEDIT.h"
  21. #include "RADIO.h"
  22. #include "SLIDER.h"
  23. #include "TEXT.h"
  24. #include "PROGBAR.h"
  25. #include "SCROLLBAR.h"
  26. #include "LISTVIEW.h"
  27. //EventsFunctionList
  28. //EndofEventsFunctionList
  29. /*********************************************************************
  30. *
  31. *       static data
  32. *
  33. **********************************************************************
  34. */
  35. /*********************************************************************
  36. *
  37. *       Dialog resource
  38. *
  39. * This table conatins the info required to create the dialog.
  40. * It has been created by ucGUIbuilder.
  41. */
  42. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  43.     { FRAMEWIN_CreateIndirect,  "Caption",           0,                       0,  0,  320,240,FRAMEWIN_CF_MOVEABLE,0},
  44.     { BUTTON_CreateIndirect,    "222",               GUI_ID_BUTTON0,          100,74, 75, 23, 0,0}
  45. };
  46. /*****************************************************************
  47. **      FunctionName:void PaintDialog(WM_MESSAGE * pMsg)
  48. **      Function: to initialize the Dialog items
  49. **                                                      
  50. **      call this function in _cbCallback --> WM_PAINT
  51. *****************************************************************/
  52. void PaintDialog(WM_MESSAGE * pMsg)
  53. {
  54.     WM_HWIN hWin = pMsg->hWin;
  55. }
  56. /*****************************************************************
  57. **      FunctionName:void InitDialog(WM_MESSAGE * pMsg)
  58. **      Function: to initialize the Dialog items
  59. **                                                      
  60. **      call this function in _cbCallback --> WM_INIT_DIALOG
  61. *****************************************************************/
  62. void InitDialog(WM_MESSAGE * pMsg)
  63. {
  64.     WM_HWIN hWin = pMsg->hWin;
  65.     //
  66.     //FRAMEWIN
  67.     //
  68.     FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
  69.     FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1);
  70.     FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2);
  71.     //
  72.     //GUI_ID_BUTTON0
  73.     //
  74.     BUTTON_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0x0000ff);
  75. }
  76. /*********************************************************************
  77. *
  78. *       Dialog callback routine
  79. */
  80. static void _cbCallback(WM_MESSAGE * pMsg)
  81. {
  82.     int NCode, Id;
  83.     WM_HWIN hWin = pMsg->hWin;
  84.     switch (pMsg->MsgId)
  85.     {
  86.         case WM_PAINT:
  87.             PaintDialog(pMsg);
  88.             break;
  89.         case WM_INIT_DIALOG:
  90.             InitDialog(pMsg);
  91.             break;
  92.         case WM_KEY:
  93.             switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
  94.             {
  95.                 case GUI_KEY_ESCAPE:
  96.                     GUI_EndDialog(hWin, 1);
  97.                     break;
  98.                 case GUI_KEY_ENTER:
  99.                     GUI_EndDialog(hWin, 0);
  100.                     break;
  101.             }
  102.             break;
  103.         case WM_NOTIFY_PARENT:
  104.             Id = WM_GetId(pMsg->hWinSrc);
  105.             NCode = pMsg->Data.v;        
  106.             switch (Id)
  107.             {
  108.                 case GUI_ID_OK:
  109.                     if(NCode==WM_NOTIFICATION_RELEASED)
  110.                         GUI_EndDialog(hWin, 0);
  111.                     break;
  112.                 case GUI_ID_CANCEL:
  113.                     if(NCode==WM_NOTIFICATION_RELEASED)
  114.                         GUI_EndDialog(hWin, 0);
  115.                     break;
  116.             }
  117.             break;
  118.         default:
  119.             WM_DefaultProc(pMsg);
  120.     }
  121. }
  122. /*********************************************************************
  123. *
  124. *       MainTask
  125. *
  126. **********************************************************************
  127. */
  128. void MainTask(void)
  129. {
  130.     GUI_Init();
  131.     WM_SetDesktopColor(GUI_WHITE);      /* Automacally update desktop window */
  132.     WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
  133.     //PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
  134.     //FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
  135.     //PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
  136.     //BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
  137.     //CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
  138.     //DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
  139.     //SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
  140.     //SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
  141.     //HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
  142.     //RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
  143.     GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
  144. }
复制代码
回复

使用道具 举报

22

主题

24

回帖

90

积分

初级会员

积分
90
 楼主| 发表于 2015-4-15 14:55:58 | 显示全部楼层
能不能说明白点,还是没明白。
回复

使用道具 举报

22

主题

24

回帖

90

积分

初级会员

积分
90
 楼主| 发表于 2015-4-15 16:34:56 | 显示全部楼层
怎样知道当前光标放在了GUI_ID_TEXT0  GUI_ID_TEXT1   GUI_ID_TEXT2  中的哪一项上边?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 16:39:38 | 显示全部楼层

回 bdwxg01 的帖子

bdwxg01:怎样知道当前光标放在了GUI_ID_TEXT0  GUI_ID_TEXT1   GUI_ID_TEXT2  中的哪一项上边? (2015-04-15 16:34)
这个做不到,比较麻烦。emWin功能还没有那么强大。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 16:39:55 | 显示全部楼层

回 bdwxg01 的帖子

bdwxg01:
     能不能说明白点,还是没明白。
1.jpg
回复

使用道具 举报

22

主题

24

回帖

90

积分

初级会员

积分
90
 楼主| 发表于 2015-4-15 16:58:42 | 显示全部楼层
如果不知道光标在哪儿,做汉字输入时检索到的汉字怎样添加到当前光标所在的文本框?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 17:17:41 | 显示全部楼层

回 bdwxg01 的帖子

bdwxg01:     如果不知道光标在哪儿,做汉字输入时检索到的汉字怎样添加到当前光标所在的文本框? (2015-04-15 16:58) 
这个用是控件,自带光标。
回复

使用道具 举报

22

主题

24

回帖

90

积分

初级会员

积分
90
 楼主| 发表于 2015-4-15 17:43:19 | 显示全部楼层
给个例子吧,谢谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 17:45:01 | 显示全部楼层

回 bdwxg01 的帖子

bdwxg01:给个例子吧,谢谢! (2015-04-15 17:43) 
这个帖子里面已经回复你了,V5板子的:
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=8286
回复

使用道具 举报

22

主题

24

回帖

90

积分

初级会员

积分
90
 楼主| 发表于 2015-4-15 19:05:20 | 显示全部楼层
这个例子我看过了,前提是知道在哪儿输入文字,好像没有看到我上面提及的在当前未知光标在哪个输入框时,输入文字。我是想做一个在一个窗口下,有多个输入框,点击哪个就在哪儿输入文字。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 19:08:11 | 显示全部楼层

回 bdwxg01 的帖子

bdwxg01:这个例子我看过了,前提是知道在哪儿输入文字,好像没有看到我上面提及的在当前未知光标在哪个输入框时,输入文字。我是想做一个在一个窗口下,有多个输入框,点击哪个就在哪儿输入文字。 (2015-04-15 19:05) 
emWin搞不了你这个功能。
回复

使用道具 举报

3

主题

83

回帖

92

积分

初级会员

积分
92
发表于 2015-4-15 22:43:58 | 显示全部楼层
WM_GetFocussedWindow(),返回窗口句柄。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2015-4-15 23:00:05 | 显示全部楼层

回 stevenq 的帖子

stevenq:WM_GetFocussedWindow(),返回窗口句柄。
 (2015-04-15 22:43) 
TEXT控件不支持聚焦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 13:44 , Processed in 0.050545 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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