OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5478|回复: 0

ucGUI 多编辑框和软键盘关于焦点定位???

[复制链接]

7

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
191
金钱
191
注册时间
2014-2-11
在线时间
14 小时
发表于 2014-2-18 09:34:47 | 显示全部楼层 |阅读模式
主要遇见的难题:
1、因为软键盘和Edit编辑框是处于同一LCD中,通过鼠标或者触摸都会是焦点改变。
2、在键盘点击事件中,无法知道之前是选择的是那个Edit编辑器。
3、在选择Edit编辑器之后,点击键盘后怎么把焦点从新锁定在之前选择的Edit上(在刚刚输入的字符后面)。


现在的源码如下:
[code=c]
#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"

#include "WM.h"
#include "BUTTON.h"
#include "CHECKBOX.h"
#include "DROPDOWN.h"
#include "EDIT.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include "MULTIEDIT.h"
#include "RADIO.h"
#include "SLIDER.h"
#include "TEXT.h"
#include "PROGBAR.h"
#include "SCROLLBAR.h"
#include "LISTVIEW.h"





// 事件
void OnButton0Clicked(WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
/*************************
此处无法锁定是之前鼠标点击的edit(编辑器),?
*************************/
}
void OnButton1Clicked(WM_MESSAGE * pMsg)
{}
void OnButton2Clicked(WM_MESSAGE * pMsg)
{}
void OnButton3Clicked(WM_MESSAGE * pMsg)
{}
void OnButton4Clicked(WM_MESSAGE * pMsg)
{}
void OnButton5Clicked(WM_MESSAGE * pMsg)
{}
void OnButton6Clicked(WM_MESSAGE * pMsg)
{}
void OnButton7Clicked(WM_MESSAGE * pMsg)
{}
void OnButton8Clicked(WM_MESSAGE * pMsg)
{}
void OnButton9Clicked(WM_MESSAGE * pMsg)
{}
void OnButton10Clicked(WM_MESSAGE * pMsg)
{}
void OnButton11Clicked(WM_MESSAGE * pMsg)
{}
void OnButton12Clicked(WM_MESSAGE * pMsg)
{}



//      static data

#define GUI_ID_BUTTON10   GUI_ID_USER+1
#define GUI_ID_BUTTON11   GUI_ID_USER+2
#define GUI_ID_BUTTON12   GUI_ID_USER+3


// Dialog资源管理器

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { FRAMEWIN_CreateIndirect,  "Number In",         0,                       0,  0,  480,320,FRAMEWIN_CF_MOVEABLE,0},
    { BUTTON_CreateIndirect,    "1",                 GUI_ID_BUTTON1,          199,14, 80, 65, 0,0},
    { BUTTON_CreateIndirect,    "2",                 GUI_ID_BUTTON2,          294,14, 80, 65, 0,0},
    { BUTTON_CreateIndirect,    "3",                 GUI_ID_BUTTON3,          389,14, 80, 65, 0,0},
    { BUTTON_CreateIndirect,    "4",                 GUI_ID_BUTTON4,          199,85, 80, 65, 0,0},
    { BUTTON_CreateIndirect,    "5",                 GUI_ID_BUTTON5,          294,85, 80, 65, 0,0},
    { BUTTON_CreateIndirect,    "6",                 GUI_ID_BUTTON6,          389,85, 80, 65, 0,0},
    { BUTTON_CreateIndirect,    "7",                 GUI_ID_BUTTON7,          199,156,80, 65, 0,0},
    { BUTTON_CreateIndirect,    "8",                 GUI_ID_BUTTON8,          294,156,80, 65, 0,0},
    { BUTTON_CreateIndirect,    "9",                 GUI_ID_BUTTON9,          389,156,80, 65, 0,0},
    { BUTTON_CreateIndirect,    "0",                 GUI_ID_BUTTON0,          294,227,80, 65, 0,0},
    { BUTTON_CreateIndirect,    "return",            GUI_ID_BUTTON10,         12, 238,115,40, 0,0},
    { EDIT_CreateIndirect,       NULL,               GUI_ID_EDIT0,            12, 66, 165,40, 0,0},
    { EDIT_CreateIndirect,       NULL,               GUI_ID_EDIT1,            12, 170,165,40, 0,0},
    { TEXT_CreateIndirect,      "First number:",     GUI_ID_TEXT0,            11, 28, 166,24, 0,0},
    { TEXT_CreateIndirect,      "Tail number:",      GUI_ID_TEXT1,            12, 134,154,24, 0,0},
    { BUTTON_CreateIndirect,    "DEL",               GUI_ID_BUTTON11,         153,227,126,65, 0,0},
    { BUTTON_CreateIndirect,    "SAVE",                GUI_ID_BUTTON12,         389,227,80, 65, 0,0}
};



void PaintDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;

}



// 初始化Dialog
void InitDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    //
    //FRAMEWIN
    //
    FRAMEWIN_SetBarColor(hWin,1,0x87b8de);
    FRAMEWIN_SetClientColor(hWin,0xdcdcdc);
    FRAMEWIN_SetTextColor(hWin,0x000000);
    FRAMEWIN_SetFont(hWin,&GUI_Font8x16);
    FRAMEWIN_SetTextAlign(hWin,GUI_TA_TOP|GUI_TA_LEFT);
    FRAMEWIN_SetTitleHeight(hWin,16);
    //
    //GUI_ID_BUTTON1
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),&GUI_FontD48);
    //
    //GUI_ID_BUTTON2
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),&GUI_FontD48);
    //
    //GUI_ID_BUTTON3
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),&GUI_FontD48);
    //
    //GUI_ID_BUTTON4
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),&GUI_FontD48);
    //
    //GUI_ID_BUTTON5
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON5),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON5),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON5),&GUI_FontD48);
    //
    //GUI_ID_BUTTON6
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON6),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON6),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON6),&GUI_FontD48);
    //
    //GUI_ID_BUTTON7
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON7),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON7),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON7),&GUI_FontD48);
    //
    //GUI_ID_BUTTON8
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON8),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON8),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON8),&GUI_FontD48);
    //
    //GUI_ID_BUTTON9
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON9),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON9),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON9),&GUI_FontD48);
    //
    //GUI_ID_BUTTON0
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0xdcdcdc);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontD48);
    //
    //GUI_ID_BUTTON10
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON10),BUTTON_CI_UNPRESSED,0x008000);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON10),BUTTON_CI_PRESSED,0x00a5ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON10),&GUI_Font24_ASCII);
    //
    //GUI_ID_EDIT0
    //
    EDIT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_EDIT0),0,0xffffff);
    EDIT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_EDIT0),0,0x0000ff);
    EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT0),&GUI_Font32B_ASCII);
EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT0),9);
    //
    //GUI_ID_EDIT1
    //
    EDIT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_EDIT1),0,0x0000ff);
    EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT1),&GUI_Font32B_ASCII);
EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT1),9);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0),0xdcdcdc);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_Font24B_ASCII);
    //
    //GUI_ID_TEXT1
    //
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT1),0xdcdcdc);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&GUI_Font24B_ASCII);
    //
    //GUI_ID_BUTTON11
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON11),BUTTON_CI_UNPRESSED,0x0045ff);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON11),BUTTON_CI_PRESSED,0x0000ff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON11),&GUI_Font32_ASCII);
    //
    //GUI_ID_BUTTON12
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON12),BUTTON_CI_UNPRESSED,0x0045ff);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON12),BUTTON_CI_PRESSED,0x008000);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON12),&GUI_Font32_ASCII);

}




//      Dialog callback routine

static void _cbCallback(WM_MESSAGE * pMsg) 
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId) 
    {
        case WM_PAINT:
PaintDialog(pMsg);            
            break;
        case WM_INIT_DIALOG: 
            InitDialog(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_OK:
//                    if(NCode==WM_NOTIFICATION_RELEASED)
//                        GUI_EndDialog(hWin, 0);
//                    break;
//                case GUI_ID_CANCEL:
//                    if(NCode==WM_NOTIFICATION_RELEASED)
//                        GUI_EndDialog(hWin, 0);
//                    break;
                case GUI_ID_BUTTON1:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton1Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON2:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton2Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON3:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton3Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON4:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton4Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON5:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton5Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON6:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton6Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON7:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton7Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON8:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton8Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON9:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton9Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON0:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton0Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON10:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton10Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON11:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton11Clicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_BUTTON12:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            OnButton12Clicked(pMsg);
                            break;
                    }
                    break;

            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}


void MainTask(void) 
GUI_Init();
    WM_SetDesktopColor(GUI_WHITE); 
    WM_SetCreateFlags(WM_CF_MEMDEV);  
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
while(1);
}
[/code]


为可睡懒觉,而奋斗终身!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-6 09:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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