硬汉嵌入式论坛

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

[emWin] 请教硬汉一个多对话框问题

[复制链接]

10

主题

22

回帖

52

积分

初级会员

积分
52
发表于 2016-12-20 16:29:43 | 显示全部楼层 |阅读模式
我在创建父窗口的同时,创建了一个子窗口:

static void _cbDialog(WM_MESSAGE * pMsg) {
    WM_HWIN hItem;
    int      NCode;
    int      Id;
    char    buf[100] = {0};
    switch (pMsg->MsgId)
    {
        case WM_INIT_DIALOG:
            ParaSet_Handle = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2), _cbDialog2, pMsg->hWin, 0, 0);
            break;
        default:
            WM_DefaultProc(pMsg);
            break;
    }
}

子窗体里面有一个按键,当按键按下时,需要再弹出一个窗口,

static void _cbDialog2(WM_MESSAGE * pMsg)
{
    WM_HWIN hItem;
    int     NCode;
    int     Id;
    switch(pMsg->MsgId)
    {
        case WM_INIT_DIALOG:
            // Initialization of 'Framewin'
            hItem = pMsg->hWin;
            FRAMEWIN_SetTitleHeight(hItem, 40);
            FRAMEWIN_SetTextAlign(hItem, GUI_TA_CENTER| GUI_TA_VCENTER);
            FRAMEWIN_SetFont(hItem, GUI_FONT_24B_ASCII);
            FRAMEWIN_SetText(hItem, &quotaraSet");
            // Initialization of 'Text_volume'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VOLUME);
            TEXT_SetFont(hItem, GUI_FONT_24B_ASCII);
            TEXT_SetText(hItem, "volume");
            // Initialization of 'Button_vol'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VOL);
            BUTTON_SetText(hItem, "1.5");
            BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
            break;

        case WM_NOTIFY_PARENT:
            Id      = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;
            switch(Id)
            {
                case ID_BUTTON_VOL:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            GUI_CreateDialogBox(_aDialogCreate3, GUI_COUNTOF(_aDialogCreate3), _cbDialog3,pMsg->hWin, 0, 0);
                            break;
                           
                        default:
                            break;
                    }
                    break;
            }
            break;
        
        default:
            WM_DefaultProc(pMsg);
        break;
    }
}

但现在我按下按钮之后看不到新的窗口,请问这是怎么回事?仿真时,程序可以运行到GUI_CreateDialogBox(_aDialogCreate3, GUI_COUNTOF(_aDialogCreate3), _cbDialog3,pMsg->hWin, 0, 0)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117617
QQ
发表于 2016-12-21 08:01:11 | 显示全部楼层
把你稍完整的程序发出来看下,我在模拟器上测试下。

仅看你现在发的这些,没有问题。
回复

使用道具 举报

10

主题

22

回帖

52

积分

初级会员

积分
52
 楼主| 发表于 2016-12-21 10:04:07 | 显示全部楼层
代码有点长,我上传附件了。我的本意是按下BUTTON_FLOW之后,弹出一个数字键盘,现在的情况是,我按下这个按键,看不到数字键盘。

Simulator.txt

21 KB, 下载次数: 37

代码

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117617
QQ
发表于 2016-12-21 14:21:34 | 显示全部楼层
提供的代码是不是不完整,主对话框回调函数里面,按钮消息里面什么都没有写
444.png
回复

使用道具 举报

10

主题

22

回帖

52

积分

初级会员

积分
52
 楼主| 发表于 2016-12-21 16:20:50 | 显示全部楼层
是的,主对话框的按钮还没作用,我是希望按下子对画框里面的按键,再弹出一个对话框。
static void _cbDialog2(WM_MESSAGE * pMsg)
{
    WM_HWIN hItem;
    int     NCode;
    int     Id;
    switch(pMsg->MsgId)
    {
        case WM_INIT_DIALOG:
            // Initialization of 'Framewin'
            hItem = pMsg->hWin;
            FRAMEWIN_SetTitleHeight(hItem, 40);
            FRAMEWIN_SetTextAlign(hItem, GUI_TA_CENTER| GUI_TA_VCENTER);
            FRAMEWIN_SetFont(hItem, GUI_FONT_32B_ASCII);
            FRAMEWIN_SetText(hItem, &quotarameter set");

            // Initialization of 'Text_volume'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_VOLUME);
            TEXT_SetFont(hItem, GUI_FONT_16B_ASCII);
            TEXT_SetText(hItem, "Volume\\r\\n (L)");
            // Initialization of 'Button_vol'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_VOL);
            BUTTON_SetText(hItem, "1.5");
            BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
            // Initialization of 'Text_blowT'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_BLOWT);
            TEXT_SetFont(hItem, GUI_FONT_16B_ASCII);
            TEXT_SetText(hItem, "Time\\r\\n (s)");
            // Initialization of 'Button_time'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_TIME);
            BUTTON_SetText(hItem, "5");
            BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
            // Initialization of 'Text_flow_value'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_FLOW_VALUE);
            TEXT_SetFont(hItem, GUI_FONT_16B_ASCII);
            TEXT_SetText(hItem, "Flow\\r\\n(SLM)");
            // Initialization of 'Button_flow'
            hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_FLOW);
            BUTTON_SetText(hItem, "18");
            BUTTON_SetFont(hItem, GUI_FONT_24B_ASCII);
            break;

        case WM_NOTIFY_PARENT:
            Id      = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;
            switch(Id)
            {
                case ID_BUTTON_FLOW:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            GUI_CreateDialogBox(_aDialogCreate4, GUI_COUNTOF(_aDialogCreate4), _cbDialog4,pMsg->hWin, 0, 0);
                            break;
                           
                        default:
                            break;
                    }
                    break;

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

使用道具 举报

10

主题

22

回帖

52

积分

初级会员

积分
52
 楼主| 发表于 2016-12-21 16:23:29 | 显示全部楼层
是的,主对话框的按钮还没作用,我是希望按下子对话框(_aDialogCreate2)里面的按键,再弹出一个对话框。即在_cbDialog2(WM_MESSAGE * pMsg)里,这样做是不是行?如果是在主对话框里,是没有问题的。
回复

使用道具 举报

10

主题

22

回帖

52

积分

初级会员

积分
52
 楼主| 发表于 2016-12-21 19:59:12 | 显示全部楼层
子对话框不可再有子对话框了吗?即,主对话框不可以有孙对话框吗?
回复

使用道具 举报

1

主题

9

回帖

1

积分

新手上路

积分
1
发表于 2017-1-12 10:11:56 | 显示全部楼层
你这样编程不好,对话框嵌套太多。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-18 14:13 , Processed in 0.045838 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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