硬汉嵌入式论坛

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

[emWin] LISTBOX控件显示

[复制链接]

13

主题

48

回帖

87

积分

初级会员

积分
87
发表于 2017-12-12 16:38:18 | 显示全部楼层 |阅读模式
使用LISTBOX_GetNumItems()函数获取当前项目数,程序直接挂了,想知道为什么?[s:120]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2017-12-13 00:37:52 | 显示全部楼层
句柄没有填错吧,句柄没错就没有问题的。除非你的工程模板有问题。
回复

使用道具 举报

13

主题

48

回帖

87

积分

初级会员

积分
87
 楼主| 发表于 2017-12-13 09:02:07 | 显示全部楼层

回 eric2013 的帖子

eric2013:句柄没有填错吧,句柄没错就没有问题的。除非你的工程模板有问题。 (2017-12-13 00:37) 
句柄没错,确认过了,除了这个,通过修改字符数组改变常量指针指向的内容来显示在列表框也不行,程序也是直接挂
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2017-12-14 02:15:50 | 显示全部楼层

回 黑眼圈红了 的帖子

黑眼圈红了:句柄没错,确认过了,除了这个,通过修改字符数组改变常量指针指向的内容来显示在列表框也不行,程序也是直接挂 (2017-12-13 09:02) 
把你的简单程序列出来下,我给你测试下。
回复

使用道具 举报

13

主题

48

回帖

87

积分

初级会员

积分
87
 楼主| 发表于 2017-12-14 10:50:46 | 显示全部楼层

回 eric2013 的帖子

eric2013:把你的简单程序列出来下,我给你测试下。 (2017-12-14 02:15) 
程序中我注释掉的那一段放出来的话程序也会挂,而且不能再初始化对话框消息中使用for循环显示文本,使用的话必挂,列表框使用for循环也会挂,所以我现在都不知道怎么可以让它递增显示,现在是递减显示的
static void _cbTemplate(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    WM_HWIN hButton;
    WM_HWIN hListBox;
    WM_HWIN hText;
    WM_HWIN hSpinbox;
    WM_HWIN hEdit;
    WM_HWIN hItem;
    int NCode, Id;
    u8 kk;
    char NumInit[6] = {"MODEL1"};
    switch (pMsg->MsgId)
    {
        case WM_PAINT:            
            break;
        
        case WM_INIT_DIALOG:
            FRAMEWIN_SetFont(hWin, &XBF_Font24);
          FRAMEWIN_SetTitleHeight(hWin,24);
          FRAMEWIN_SetTextAlign(hButton,GUI_TA_HCENTER|GUI_TA_VCENTER );
        
            hButton = WM_GetDialogItem(hWin,GUI_ID_ADD);  /*添加模板*/
          BUTTON_SetFont(hButton, &XBF_Font24);
          BUTTON_SetTextAlign(hButton,GUI_TA_HCENTER|GUI_TA_VCENTER );
      BUTTON_SetTextColor(hButton,BUTTON_CI_UNPRESSED,GUI_WHITE);
        
            hButton = WM_GetDialogItem(hWin,ID_Template_Delete);  /*删除模板*/
          BUTTON_SetFont(hButton, &XBF_Font24);
          BUTTON_SetTextAlign(hButton,GUI_TA_HCENTER|GUI_TA_VCENTER );  
      BUTTON_SetTextColor(hButton,BUTTON_CI_UNPRESSED,GUI_WHITE);
        
            hButton = WM_GetDialogItem(hWin,ID_ABOUTUS_OK);
            BUTTON_SetFont(hButton, &XBF_Font24);   
          BUTTON_SetTextAlign(hButton,GUI_TA_HCENTER|GUI_TA_VCENTER );        
      BUTTON_SetTextColor(hButton,BUTTON_CI_UNPRESSED,GUI_WHITE);
        
//            hText = WM_GetDialogItem(hWin,ID_Template_TemperName);  /*设置温度文本*/
//          TEXT_SetFont(hText, &XBF_Font24);
//          TEXT_SetTextAlign(hText,GUI_TA_HCENTER|GUI_TA_VCENTER );   

//            hText = WM_GetDialogItem(hWin,ID_Template_ShockTimeName);  /*设置振荡时间文本*/
//          TEXT_SetFont(hText, &XBF_Font24);
//          TEXT_SetTextAlign(hText,GUI_TA_HCENTER|GUI_TA_VCENTER );            

//            hText = WM_GetDialogItem(hWin,ID_Template_ShockSpeedName);  /*设置振荡速度文本*/
//          TEXT_SetFont(hText, &XBF_Font24);
//          TEXT_SetTextAlign(hText,GUI_TA_HCENTER|GUI_TA_VCENTER );

//            hSpinbox = WM_GetDialogItem(hWin,ID_Template_TemperValue);  /*温度微调框*/
//            SPINBOX_SetFont(hSpinbox,GUI_FONT_32B_ASCII);
//            SPINBOX_SetEdge(hSpinbox, SPINBOX_EDGE_CENTER);
//            SPINBOX_SetSkin(hSpinbox, SPINBOX_SKIN_FLEX);
//            SPINBOX_SetEditMode(hSpinbox,SPINBOX_EM_EDIT);  /*设置微调框的编辑模式*/
//            hEdit = SPINBOX_GetEditHandle(hSpinbox);        /*获取微调框中编辑框的句柄*/
//            EDIT_SetDecMode(hEdit, 0, 0, 99, 0, 0);         /*设置编辑框的十进制编辑模式*/
//            SPINBOX_SetValue(hSpinbox,60);
//        
//            hSpinbox = WM_GetDialogItem(hWin,ID_Template_ShockTimeValue);  /*振荡时间微调框*/
//            SPINBOX_SetFont(hSpinbox,GUI_FONT_32B_ASCII);
//            SPINBOX_SetEdge(hSpinbox, SPINBOX_EDGE_CENTER);
//            SPINBOX_SetSkin(hSpinbox, SPINBOX_SKIN_FLEX);
//            SPINBOX_SetEditMode(hSpinbox,SPINBOX_EM_EDIT);
//            hEdit = SPINBOX_GetEditHandle(hSpinbox);
//            EDIT_SetDecMode(hEdit, 0, 0, 999, 0, 0);
//            SPINBOX_SetValue(hSpinbox,30);

//      hItem = WM_GetDialogItem(hWin,ID_Template_ShockSpeedValue); /*振荡速度下拉列表*/
//            DROPDOWN_SetFont(hItem, &XBF_Font24);
//            DROPDOWN_AddString(hItem, "高速");
//            DROPDOWN_AddString(hItem, "较高速");
//            DROPDOWN_AddString(hItem, "中速");
//            DROPDOWN_AddString(hItem, "较低速");
//            DROPDOWN_AddString(hItem, "低速");
//            
//            /* 使能下来列表控件自动使用滚动条 */
//            DROPDOWN_SetAutoScroll(hItem, 1);
//            /* 设置下拉列表控件展开后的高度 */
//            DROPDOWN_SetListHeight(hItem, 110);
//            /* 设置下拉列表控件上滚动条的宽度 */
//            DROPDOWN_SetScrollbarWidth(hItem, 20);
//            /* 设置下拉列表控件中各个选项之间的间距 */
//            DROPDOWN_SetItemSpacing(hItem, 10);
//                /*设置初始第3个下拉项目*/
//            DROPDOWN_SetSel(hItem, 2);
            
          hListBox = WM_GetDialogItem(hWin, GUI_ID_Template1);  /*模板列表框*/
          LISTBOX_SetBkColor(hListBox,0,0xffffff);
            LISTBOX_SetFont(hListBox, &XBF_Font24);
            LISTBOX_SetItemSpacing(hListBox, 5);
            LISTBOX_SetAutoScrollH(hListBox,1);
            LISTBOX_SetAutoScrollV(hListBox,1);
          ee_ReadBytes(&kk,223,1);
            LISTBOX_AddString(hListBox,NumInit);
          if(kk!=0XFF && kk!=0x00)
            {
                while(kk--)
                {
                    NumInit[5] = '0'+kk+1;
                    LISTBOX_AddString(hListBox,NumInit);
                }
            }
        

            break;
        
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;
          switch (Id)
            {
                case GUI_ID_Template1:      /*模板列表框*/
                    if(NCode==WM_NOTIFICATION_RELEASED)
                    {
                    }
                    break;
                    
                case GUI_ID_ADD:          /*添加模板*/
                    if(NCode==WM_NOTIFICATION_RELEASED)
                    {
                        u8 NumItems;
                        char NumTemplate[6] = {"MODEL"} ;
                        hListBox = WM_GetDialogItem(hWin, GUI_ID_Template1);                                                
                        NumTemplate[5] = '0' + LISTBOX_GetNumItems(hListBox)+1;
//                        LISTBOX_InsertString(hListBox, PTR, NumItems);
                        LISTBOX_SetFont(hListBox, &XBF_Font24);
                        LISTBOX_AddString(hListBox,NumTemplate);
                        NumItems = NumTemplate[5]&0x0f;
                        ee_WriteBytes(&NumItems,223,1);
                    }                                       
                    break;
                    
                case ID_Template_Delete:               /*删除模板按钮*/
                    if(NCode==WM_NOTIFICATION_RELEASED)
                    {                    
                        u8 NumItems;
                        char Num[1];
                        hListBox = WM_GetDialogItem(hWin, GUI_ID_Template1);                    
                        LISTBOX_DeleteItem(hListBox,LISTBOX_GetSel(hListBox));
                        Num[0] = '0' + LISTBOX_GetNumItems(hListBox);
                        NumItems = Num[0]&0x0f;
                        ee_WriteBytes(&NumItems,223,1);
                    }
                    break;
               
                case ID_ABOUTUS_OK:                 /*确定按钮*/
                    if(NCode==WM_NOTIFICATION_RELEASED)
                    {
                        GUI_EndDialog(hWin, 0);
                        hTemplateHwin = 0;                        
                    }                    
                    break;
            }
            break;
        
        default:
            WM_DefaultProc(pMsg);
    }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2017-12-15 01:34:46 | 显示全部楼层
我在我们V6板子上面测试了下函数LISTBOX_GetNumItems,没问题,看了你写的程序没发现什么问题。你可以用GUIBuilder做一个简单的界面测试下此函数。
回复

使用道具 举报

13

主题

48

回帖

87

积分

初级会员

积分
87
 楼主| 发表于 2017-12-15 11:53:42 | 显示全部楼层

回 eric2013 的帖子

eric2013:我在我们V6板子上面测试了下函数LISTBOX_GetNumItems,没问题,看了你写的程序没发现什么问题。你可以用GUIBuilder做一个简单的界面测试下此函数。 (2017-12-15 01:34) 
我把代码删掉重敲了一遍,就可以了,也没发现问题到底出在哪里。但是现在有个新问题,触摸屏触摸不了了,不管刷什么样的程序都不行,重开机也是不行[s:125]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 10:44 , Processed in 0.263058 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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