硬汉嵌入式论坛

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

[emWin] 关于MENU子菜单弹出方向选择问题

[复制链接]

9

主题

42

回帖

69

积分

初级会员

大牛的形成也是时间与技术的积累

积分
69
QQ
发表于 2016-12-22 19:34:37 | 显示全部楼层 |阅读模式
MENU.png

现在要做一个Menu控件中的PopMenu功能,Menu菜单放在屏的右下脚, 类似上图,主菜单中还有个子菜单, 但我主菜单是放在最右边了,那么点击Files..时弹出的子菜单就直接跑到屏外面去了,完全看不到,它也不会自动识别,有没有办法控制子菜单的弹出方向? 还有就是菜单项能不能不用文字,用图标代替?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-12-23 08:03:16 | 显示全部楼层
好像不能控制显示方向,也不支持用图片代替。
回复

使用道具 举报

9

主题

42

回帖

69

积分

初级会员

大牛的形成也是时间与技术的积累

积分
69
QQ
 楼主| 发表于 2016-12-23 08:36:52 | 显示全部楼层
看来只能自已用Windows窗体代替了,待我做完后来发个效果图
回复

使用道具 举报

9

主题

42

回帖

69

积分

初级会员

大牛的形成也是时间与技术的积累

积分
69
QQ
 楼主| 发表于 2016-12-27 19:13:43 | 显示全部楼层
自制的弹出菜单已实现, 下面是效果图和视频
IMG_20161227_190038.jpg IMG_20161227_190056.jpg

代码有点多, 截关键部分代码看下:

菜单缩进代码:
case POPMENU_ROLLUP:        
        {
            //hItem = WM_GetFirstChild(WinPara.hWinCtrl);
            hItemNext = WM_GetNextSibling(pMsg->hWin);
            if(WM_IsWindow(hItemNext))
            {
                WM_SendMessageNoPara(hItemNext, POPMENU_ROLLUP);
            }
            
            do
            {
                TimeContinue = GUI_GetTime() + 2;
                WM_MoveWindow(pMsg->hWin, dx, 0);
                TimeNow = GUI_GetTime();
                if (TimeContinue > TimeNow) {
                GUI_Delay(TimeContinue - TimeNow);
                }
                dx += 5;
            }
            while(dx < 160);

            /* Motion Move 有窗体框架限制 */
            //WM_MOTION_SetSpeed(pMsg->hWin, GUI_COORD_X, 200);            
            //GUI_Delay(1000);
            WM_DeleteWindow(pMsg->hWin);
        }  

菜单菜单图标点击代码:
case WM_TOUCH_CHILD:
        Id = WM_GetId(pMsg->hWinSrc);      // Id of widget
        switch (Id)
        {
            case ID_TEXT_0:
            case ID_TEXT_1:
            case ID_TEXT_2:
            case ID_TEXT_3:
            case ID_TEXT_4:
                n = Id - ID_TEXT_0;
                break;
            case ID_IMAGE_0:
            case ID_IMAGE_1:
            case ID_IMAGE_2:
            case ID_IMAGE_3:
            case ID_IMAGE_4:
                n = Id - ID_IMAGE_0;
                break;
        }   

        /* The Data.p pointer of the message points to the touch message
        sent to the child window!! */
        pState = (GUI_PID_STATE *)((WM_MESSAGE *)pMsg->Data.p)->Data.p;
        if (pState)
        {
            if (pState-&gtressed)
            {               
                if(n != p)
                {
                    p = n;
                    
                    hItemNext = WM_GetNextSibling(pMsg->hWin);
                    if(WM_IsWindow(hItemNext))
                    {
                        WM_SendMessageNoPara(hItemNext, POPMENU_ROLLUP);
                    }
                    
                    WM_InvalidateWindow(pMsg->hWin);               
                    switch(n)
                    {
                        case 0:;                //Basic
                            MeasBasicPopWin(WM_GetParent(pMsg->hWin));
                            break;
                        case 1:                 //Cal
                            WFGUI_Calc();   
                            hAPPOnTop = hAPPLinkedList_GetAppTop();
                            WM_BringToTop(hAPPOnTop->hAPP);
                            break;
                        case 2:     //Max/Min
                            break;
                        case 3:     //Delay
                            DistDelayPopWin(WM_GetParent(pMsg->hWin));
                            break;
                        case 4:     //unit
                            DistUnitPopWin(WM_GetParent(pMsg->hWin));
                            break;
                    }
                }
            }
        }        
        break;

VID_20161227_190014.rar

15.02 MB, 下载次数: 62

操作视频

回复

使用道具 举报

17

主题

178

回帖

234

积分

高级会员

积分
234
QQ
发表于 2016-12-28 07:38:08 | 显示全部楼层
[s:141]  [s:149] 楼主是做摄像头的吗?UI做的棒极了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-18 07:44 , Processed in 0.041288 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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