硬汉嵌入式论坛

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

[emWin] 贡献一段LISTWHEEL代码,希望对大家有所帮助。

[复制链接]

4

主题

41

回帖

53

积分

初级会员

积分
53
发表于 2017-12-27 15:06:56 | 显示全部楼层 |阅读模式
节选部分代码
case WM_INIT_DIALOG:
            LISTWHEEL_SetText(hItem,_apHour);
            LISTWHEEL_SetOwnerDraw(hItem, _OwnerDraw);
            LISTWHEEL_SetSnapPosition(hItem, (100) / 2);
            RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);
           LISTWHEEL_MoveToPos(hItem,RTC_TimeStructure.RTC_Hours);
          LISTWHEEL_SetSel(hItem,RTC_TimeStructure.RTC_Hours);

break;

节选部分代码
    switch(Id) {
    case ID_LISTWHEEL_0: //
    case ID_LISTWHEEL_1: //
    case ID_LISTWHEEL_2: //
    case ID_LISTWHEEL_3: //                                 
    case ID_LISTWHEEL_4: //
    case ID_LISTWHEEL_5: //  
    case ID_LISTWHEEL_6: //       
     switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_SEL_CHANGED:
        // USER START (Optionally insert code for reacting on notification message)
            hItem = WM_GetDialogItem(pMsg->hWin, Id);
                              Value1 = LISTWHEEL_GetPos(hItem );
                              LISTWHEEL_SetSel(hItem,Value1);

                           // USER END
        break;



节选部分
static int _OwnerDraw(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo) {
switch (pDrawItemInfo->Cmd) {
case WIDGET_DRAW_OVERLAY:
GUI_SetColor(GUI_RED);
GUI_DrawHLine(40, 0, 99);
GUI_DrawHLine(59, 0, 99);
break;
default:
return LISTWHEEL_OwnerDraw(pDrawItemInfo);
}
return 0;
}



评分

参与人数 1金币 +20 收起 理由
eric2013 + 20

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107643
QQ
发表于 2017-12-27 15:09:17 | 显示全部楼层
非常感谢楼主分享
回复

使用道具 举报

4

主题

41

回帖

53

积分

初级会员

积分
53
 楼主| 发表于 2017-12-27 15:54:56 | 显示全部楼层
官方例子太难看懂啦,和那个PID交叉在一起,还有ownerdraw,
  case WM_NOTIFICATION_SEL_CHANGED:

                             Value1 = LISTWHEEL_GetPos(hItem );
                              LISTWHEEL_SetSel(hItem,Value1);
这个是用来把选定放到吸附位置。


ownerdraw是在吸附位置画两条线,

初始化这就注意那个apHour是个字符串数组,注意字符串要定义一个null在结束的地方,
不要用那个addstring,不太好用,得循环添加字符串
   LISTWHEEL_SetText(hItem,_apHour);
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107643
QQ
发表于 2017-12-28 01:35:40 | 显示全部楼层
szduan 发表于 2017-12-27 15:54
官方例子太难看懂啦,和那个PID交叉在一起,还有ownerdraw,
  case WM_NOTIFICATION_SEL_CHANGED:

官方的这个控件配套的例子不太好,没有专门提供一个简单易用的例子。
回复

使用道具 举报

3

主题

73

回帖

82

积分

初级会员

积分
82
发表于 2017-12-29 09:50:13 | 显示全部楼层
真滴不错!非常受用!
回复

使用道具 举报

3

主题

73

回帖

82

积分

初级会员

积分
82
发表于 2017-12-29 09:54:27 | 显示全部楼层
楼主可能贴出你的工程学习一下!谢谢咯
回复

使用道具 举报

29

主题

181

回帖

268

积分

高级会员

积分
268
发表于 2017-12-29 10:06:37 | 显示全部楼层
楼主要是能截个效果图就更好了
回复

使用道具 举报

4

主题

41

回帖

53

积分

初级会员

积分
53
 楼主| 发表于 2017-12-29 10:37:30 | 显示全部楼层
不要要求我贴工程了,这个就是这个控件的基本用法,ownerdraw是画线用的,可以先不用,你可以用guibulider现建立一个跑一下,就知道了,我觉的我说的很清楚了,还是要自己动手做一下啊
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2019-12-31 15:48:35 | 显示全部楼层
楼主太牛了,帮顶
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 07:36 , Processed in 0.180679 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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