硬汉嵌入式论坛

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

[emWin] 关于使用multiedit控件无法聚焦的问题

[复制链接]

16

主题

33

回帖

81

积分

初级会员

积分
81
发表于 2022-2-7 16:12:27 | 显示全部楼层 |阅读模式
微信图片_20220207160901.jpg 硬汉哥,想请教一下,我在使用multiedit这个控件的过程中,在屏幕上滑动或者点击,鼠标看上去和我滑动或者点击的位置一致,但正常情况下我如果点击了一下屏幕,这个控件的光标应该也是会随着我鼠标的位置进行改动,但是不管我怎么点击屏幕任意位置,这个控件的光标就一直在第一个字母那里,不知道是不是因为我这个控件或窗口没聚焦的原因,麻烦硬汉哥指点一下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107437
QQ
发表于 2022-2-7 16:41:32 | 显示全部楼层
仅贴出你edit这部分完整测试代码,明天我帮你测试下。
回复

使用道具 举报

16

主题

33

回帖

81

积分

初级会员

积分
81
 楼主| 发表于 2022-2-7 16:53:46 | 显示全部楼层
eric2013 发表于 2022-2-7 16:41
仅贴出你edit这部分完整测试代码,明天我帮你测试下。

static const GUI_WIDGET_CREATE_INFO _aDialogCreate1[] = {
    { FRAMEWIN_CreateIndirect,  "callback1",   0,               -4,  -2, 248,122,0,0},
    //{ HEADER_CreateIndirect, "Header", ID_HEADER_0, 0, 0, 240, 20, 0, 0x0, 0 },
    {        MULTIEDIT_CreateIndirect,        "Multiedit0",        ID_MULTIEDIT_0,0,0,240,120,0,0x0,0},
    { TEXT_CreateIndirect,      NULL,     GUI_ID_TEXT0,    0,0,240,120, 0,0},//99%
};

static void _cbCallback1(WM_MESSAGE * pMsg)
{
    char temp_buf[64]= {0};
    //uint16_t index=0;
    WM_HWIN hWin = pMsg->hWin;

    switch (pMsg->MsgId)
    {
    case WM_PAINT:
        GUI_SetBkColor(GUI_WHITE);//GUI_SetBkColor(acColor[ucBKColor]);
        GUI_Clear();
        break;
    case WM_INIT_DIALOG:
        FRAMEWIN_SetTitleVis(hWin,0);
        FRAMEWIN_SetFont(hWin,&GUI_Font16B_ASCII);
        FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
        FRAMEWIN_SetTitleHeight(hWin,20);

        if(msg_empty)
        {
            TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0), &GUI_FontHZ24);
            TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_TA_HCENTER | GUI_TA_VCENTER);
            TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0),GUI_WHITE);
            TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_BLACK);
            TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT0),"短信列表为空");
        }
        else if(msg_empty==0)
        {
            Get_CurrentpMsg_by_index(index_for_multi);
//            HEADER_SetFont(WM_GetDialogItem(pMsg->hWin, ID_HEADER_0),&GUI_FontHZ16);
//            sprintf(temp_buf,"oÅÂë:%s",msgs[pMsgDataUse->curr_num].id);
//            HEADER_AddItem(WM_GetDialogItem(pMsg->hWin, ID_HEADER_0), 100, temp_buf, 12);
//            memset(temp_buf,0,sizeof(temp_buf));
//            //sprintf(temp_buf,"%02d-%02d %02d:%02d",mouth,day,hour,minute);
//            sprintf(temp_buf,"%s",msgs[pMsgDataUse->curr_num].time);
//            HEADER_AddItem(WM_GetDialogItem(pMsg->hWin, ID_HEADER_0), 140, temp_buf, 12);
//            memset(temp_buf,0,sizeof(temp_buf));

                                                //WM_SetFocus(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0));
                                                WIDGET_SetFocusable(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);
            MULTIEDIT_SetTextColor(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),MULTIEDIT_CI_EDIT,GUI_BLACK);
            MULTIEDIT_SetBkColor(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),MULTIEDIT_CI_EDIT,GUI_LIGHTCYAN);
            //MULTIEDIT_SetMaxNumChars(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),8192);
            //MULTIEDIT_SetBufferSize(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),8192);
            MULTIEDIT_SetAutoScrollH(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);
            MULTIEDIT_SetAutoScrollV(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);
            MULTIEDIT_SetFont(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),&GUI_FontHZ16);
            MULTIEDIT_ShowCursor(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);
            MULTIEDIT_SetWrapWord(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0));
            //gsmString2Bytes((char *)msgs[pMsgDataUse->curr_num].content,test_array,msgs[pMsgDataUse->curr_num].len);
            MULTIEDIT_SetText(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),(char *)msgs[pMsgDataUse->curr_num].content);
            memset(temp_buf,0,sizeof(temp_buf));
        }
        break;

    case WM_TIMER:
            WM_RestartTimer(pMsg->Data.v, 100);
            Oled_Display();
        break;
    default:
        WM_DefaultProc(pMsg);
        break;
    }
}

void CreateOLEDDlg(void)
{
    hDlg = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);
    hDlg_client = WM_GetClientWindow(hDlg);
    WM_CreateTimer(WM_GetClientWindow(hDlg), 0, 100, 0);

}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107437
QQ
发表于 2022-2-8 16:02:25 | 显示全部楼层
iuuiangela 发表于 2022-2-7 16:53
static const GUI_WIDGET_CREATE_INFO _aDialogCreate1[] = {
    { FRAMEWIN_CreateIndirect,  "callba ...

我简单测试了下,可以使用。把你的代码简单做了个修改,方便我测试。


#define ID_MULTIEDIT_0 GUI_ID_MULTIEDIT0

static const GUI_WIDGET_CREATE_INFO _aDialogCreate1[] = {
    { FRAMEWIN_CreateIndirect,  "callback1",   0,               0,  0, 800,480,0,0},
    //{ HEADER_CreateIndirect, "Header", ID_HEADER_0, 0, 0, 240, 20, 0, 0x0, 0 },
    {        MULTIEDIT_CreateIndirect,        "Multiedit0",        ID_MULTIEDIT_0,100,100,240,120,0,0,0},
    { TEXT_CreateIndirect,      NULL,     GUI_ID_TEXT0,    0,0,240,120, 0,0},//99%
};

static void _cbCallback1(WM_MESSAGE * pMsg)
{
    char temp_buf[64]= {0};
    //uint16_t index=0;
    WM_HWIN hWin = pMsg->hWin;

    switch (pMsg->MsgId)
    {
    case WM_PAINT:
        GUI_SetBkColor(GUI_WHITE);//GUI_SetBkColor(acColor[ucBKColor]);
        GUI_Clear();
        break;
    case WM_INIT_DIALOG:
        FRAMEWIN_SetTitleVis(hWin,0);
        FRAMEWIN_SetFont(hWin,&GUI_Font16B_ASCII);
        FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
        FRAMEWIN_SetTitleHeight(hWin,20);

        //if(msg_empty)
        //{
           // TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0), &GUI_FontHZ24);
           // TEXT_SetTextAlign(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_TA_HCENTER | GUI_TA_VCENTER);
           // TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0),GUI_WHITE);
          //  TEXT_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0), GUI_BLACK);
            //TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT0),"短信列表为空");
       // }
       // else if(msg_empty==0)
       // {
            //Get_CurrentpMsg_by_index(index_for_multi);

           //WIDGET_SetFocusable(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);

                   MULTIEDIT_SetInsertMode(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0), 1);

                    MULTIEDIT_EnableBlink(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0), 300, 1);

            MULTIEDIT_SetTextColor(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),MULTIEDIT_CI_EDIT,GUI_BLACK);
            
           // MULTIEDIT_SetBkColor(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),MULTIEDIT_CI_EDIT,GUI_LIGHTCYAN);
            //MULTIEDIT_SetMaxNumChars(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),8192);
            //MULTIEDIT_SetBufferSize(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),8192);
            MULTIEDIT_SetAutoScrollH(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);
            MULTIEDIT_SetAutoScrollV(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);
           // MULTIEDIT_SetFont(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),&GUI_FontHZ16);
            MULTIEDIT_ShowCursor(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0),1);
           // MULTIEDIT_SetWrapWord(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0));
            //gsmString2Bytes((char *)msgs[pMsgDataUse->curr_num].content,test_array,msgs[pMsgDataUse->curr_num].len);
            MULTIEDIT_SetText(WM_GetDialogItem(pMsg->hWin, ID_MULTIEDIT_0), "1abdccfdf\n1434535\n");
        //}
        break;

    case WM_TIMER:
            WM_RestartTimer(pMsg->Data.v, 100);
           // Oled_Display();
        break;
    default:
        WM_DefaultProc(pMsg);
        break;
    }
}

void CreateOLEDDlg(void)
{
        WM_HWIN hDlg, hDlg_client;

    hDlg = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);
    hDlg_client = WM_GetClientWindow(hDlg);
    WM_CreateTimer(WM_GetClientWindow(hDlg), 0, 100, 0);
}
回复

使用道具 举报

16

主题

33

回帖

81

积分

初级会员

积分
81
 楼主| 发表于 2022-2-8 16:54:13 | 显示全部楼层
eric2013 发表于 2022-2-8 16:02
我简单测试了下,可以使用。把你的代码简单做了个修改,方便我测试。

谢谢硬汉哥,我今天试了一下发现又恢复正常了,但是我对比了下昨天的代码和今天的,没什么大的改动,不知道为啥之前的代码就是没法聚焦
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107437
QQ
发表于 2022-2-9 09:55:01 | 显示全部楼层
iuuiangela 发表于 2022-2-8 16:54
谢谢硬汉哥,我今天试了一下发现又恢复正常了,但是我对比了下昨天的代码和今天的,没什么大的改动,不知 ...

好的,估计是什么地方疏忽了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 15:58 , Processed in 0.223952 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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