硬汉嵌入式论坛

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

[emWin] 我想知道SetUserDatas后为什么GetUserdata数据没取到

[复制链接]

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2018-6-7 15:00:54 | 显示全部楼层 |阅读模式
我想知道SetUserDatas后为什么GetUserdata数据没取到static const GUI_WIDGET_CREATE_INFO _aDialogAdd[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 800, 450, 0, 0x0, 0 },
};资源表在这


{

         hAddDlg = GUI_CreateDialogBox(_aDialogAdd, GUI_COUNTOF(_aDialogAdd), cb_Add1Dlg, hParent, 0, 0);

        WM_SetFocus(hAddDlg);//聚焦到此窗口
        WINDOW_SetBkColor(hAddDlg,0xF9F9F9);
        //创建选择列表
        hItem = SWIPELIST_CreateUser(100,47,280,400,WM_GetClientWindow(hAddDlg),WM_CF_SHOW|WM_CF_HASTRANS,0,ID_SWIPELTST_0,sizeof(hWinTemp));
        SWIPELIST_SetUserData(hItem,&hWinTemp,sizeof(hWinTemp));
        printf("win=%ld\r\n",hWinTemp);
        WM_MOTION_SetMoveable(hItem, WM_CF_MOTION_Y, 1);
        SWIPELIST_AddSepItem(hItem,"选择",40) ;       
        SWIPELIST_SetFont(hItem, SWIPELIST_FI_SEP_ITEM , &GUI_FontHZ32B);
        SWIPELIST_SetFont(hItem, SWIPELIST_FI_ITEM_HEADER, &GUI_FontHZ24B);
        SWIPELIST_SetFont(hItem, SWIPELIST_FI_ITEM_TEXT, &GUI_FontHZ16B);
       
        SWIPELIST_SetBkColor(hItem,SWIPELIST_CI_BK_ITEM_UNSEL,0xDB9611);
        //SWIPELIST_SetBkColor(hSwipelist,SWIPELIST_CI_BK_ITEM_SEL,GUI_GRAY);
        SWIPELIST_SetBkColor(hItem,SWIPELIST_CI_BK_SEP_ITEM,0xC8A05E);
       
        SWIPELIST_SetTextColor(hItem, SWIPELIST_CI_ITEM_HEADER_UNSEL, GUI_WHITE);
        SWIPELIST_SetTextColor(hItem, SWIPELIST_CI_ITEM_HEADER_SEL, GUI_WHITE);
        SWIPELIST_SetDefaultTextAlign(GUI_TA_VCENTER| GUI_TA_LEFT);//设置字体左

        for(i=0;i<GUI_COUNTOF(Instrument_N);i++)
        {       
                SWIPELIST_AddItem(hItem,Instrument_N.text,35);       
        }
        SWIPELIST_SetOwnerDraw(hItem, _OwnerDraw);
}


在回调函数里面用
static void cb_Add1Dlg(WM_MESSAGE *pMsg)
{

case WM_UPDATAWIN:  //这个是自定义消息
        printf("win=%ld\r\n",hWinTemp);
         SWIPELIST_GetUserData(pMsg->hWinSrc,&hWinTemp,sizeof(hWinTemp));
        printf("win=%ld\r\n",hWinTemp);

   //hItem=WM_GetDialogItem(pMsg->hWin,ID_SWIPELTST_0);如果改用这个就会死机硬件错误中断,,
   // SWIPELIST_GetUserData(pMsg->hWinSrc,&hWinTemp,sizeof(hWinTemp));
break;
}

问题1.SetUserDatas后为什么GetUserdata数据没取到
问题2.对话框是否有影响,控件的写入用户数据资源表需要设置数据大小?(我测试过有影响,但不知道结论是)
问题3.对话框能否使用wm_setUserData 和WM_GetUserdata,(测试过,但一样取不到数据)
问题4.        hWIN = WINDOW_CreateUser(160, 80, 480, 300,hParent,WM_CF_SHOW,0,ID_FRAMEWIN_0,_cbOneDialog,sizeof(pDataInfo));
//  WINDOW_SetUserData(hWIN,&pDataInfo,sizeof(pDataInfo));       
        printf("pDataInfo=%p\r\n",pDataInfo);               
//        WINDOW_GetUserData(hWIN,&pDataInfo1,sizeof(pDataInfo1));       
//        printf("pDataInfo1=%p\r\n",pDataInfo1);       
同样测试了WINDOW控件的,一样在回调函数接受不到,在本函数内有能获取,GetUserdata函数有什么条件才能触发?
问题5.在问题4的同个函数内又加了个
   hItem = BUTTON_CreateUser(260, 220, 110, 40,hFRAMEWIN,WM_CF_SHOW,0,ID_BUTTON_1,4);
        BUTTON_SetFont(hItem, &GUI_FontHZ24B);
        BUTTON_SetTextColor(hItem,LISTWHEEL_CI_UNSEL,0xC8A05E);
        BUTTON_SetText(hItem, "下一步");
        BUTTON_SetUserData(hItem,&pDataInfo,sizeof(pDataInfo));       
按键却可以在回调函数内获取用户数据 QQ截图20180607145959.png 这个是成功取到的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2018-6-7 19:49:29 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-19 17:34 , Processed in 0.045772 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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