硬汉嵌入式论坛

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

[emWin] DROPDOWN控件可以设置其下拉listbox的背景色吗?

[复制链接]

14

主题

31

回帖

73

积分

初级会员

积分
73
发表于 2020-10-13 10:08:24 | 显示全部楼层 |阅读模式
各位大牛,我想改变dropdown控件展开状态时的listbox的背景色,试过了在初始化dropdown时手动展开然后获取listbox句柄后设置,但是不生效,还是默认的白底。
        DROPDOWN_Expand(*hItem); //展开listbox
        listbox = DROPDOWN_GetListbox(*hItem);//当dropdown展开才能获取句柄
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);
       
        LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
        LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
        LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
        LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);
        DROPDOWN_Collapse(*hItem);//关闭listbox


然后试了在released消息中设置,但是会出现展开的瞬间会先出现LISTBOX默认的白底,然后再显示我设置的样式,请问一下有什么好的解决办法吗?
case WM_NOTIFICATION_RELEASED:
                                // USER START (Optionally insert code for reacting on notification message)
                //                DROPDOWN_Expand(WM_GetDialogItem(pMsg->hWin, Id)); //展开listbox
                                listbox = DROPDOWN_GetListbox(WM_GetDialogItem(pMsg->hWin, Id));//当dropdown展开才能获取句柄
                                LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
                                LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
                                LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
                                LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);
                       
                                LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
                                LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
                                LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
                                LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);
                                // USER END
                                break;

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-10-13 15:56:18 | 显示全部楼层
方便发个模拟器上的完整测试代码不,我试试。
回复

使用道具 举报

14

主题

31

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2020-10-13 17:10:19 | 显示全部楼层
eric2013 发表于 2020-10-13 15:56
方便发个模拟器上的完整测试代码不,我试试。

硬汉哥,这只是个简单的测试,一个dropdown无效果,另一个dropdown要显示下默认的白色后才显示我设置的样式。
  1. /*********************************************************************
  2. *                                                                    *
  3. *                SEGGER Microcontroller GmbH & Co. KG                *
  4. *        Solutions for real time microcontroller applications        *
  5. *                                                                    *
  6. **********************************************************************
  7. *                                                                    *
  8. * C-file generated by:                                               *
  9. *                                                                    *
  10. *        GUI_Builder for emWin version 5.30                          *
  11. *        Compiled Jul  1 2015, 10:50:32                              *
  12. *        (c) 2015 Segger Microcontroller GmbH & Co. KG               *
  13. *                                                                    *
  14. **********************************************************************
  15. *                                                                    *
  16. *        Internet: www.segger.com  Support: support@segger.com       *
  17. *                                                                    *
  18. **********************************************************************
  19. */

  20. // USER START (Optionally insert additional includes)
  21. // USER END

  22. #include "DIALOG.h"

  23. /*********************************************************************
  24. *
  25. *       Defines
  26. *
  27. **********************************************************************
  28. */
  29. #define ID_WINDOW_0   (GUI_ID_USER + 0x03)
  30. #define ID_DROPDOWN_0   (GUI_ID_USER + 0x04)
  31. #define ID_DROPDOWN_1   (GUI_ID_USER + 0x05)


  32. // USER START (Optionally insert additional defines)
  33. // USER END

  34. /*********************************************************************
  35. *
  36. *       Static data
  37. *
  38. **********************************************************************
  39. */

  40. // USER START (Optionally insert additional static data)
  41. static int SetDropDownStyle(WM_HWIN * hItem);
  42. // USER END

  43. /*********************************************************************
  44. *
  45. *       _aDialogCreate
  46. */
  47. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  48.   { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 3, 2, 320, 240, 0, 0x0, 0 },
  49.   { DROPDOWN_CreateIndirect, "Dropdown", ID_DROPDOWN_0, 41, 41, 80, 18, 0, 0x0, 0 },
  50.   { DROPDOWN_CreateIndirect, "Dropdown", ID_DROPDOWN_1, 189, 41, 80, 18, 0, 0x0, 0 },
  51.   // USER START (Optionally insert additional widgets)
  52.   // USER END
  53. };

  54. /*********************************************************************
  55. *
  56. *       Static code
  57. *
  58. **********************************************************************
  59. */

  60. // USER START (Optionally insert additional static code)
  61. // USER END

  62. /*********************************************************************
  63. *
  64. *       _cbDialog
  65. */
  66. static void _cbDialog(WM_MESSAGE * pMsg) {
  67.   WM_HWIN hItem;
  68.   int     NCode;
  69.   int     Id;
  70.   LISTBOX_Handle listbox;
  71.         int i;
  72.   // USER START (Optionally insert additional variables)
  73.   // USER END

  74.   switch (pMsg->MsgId) {
  75.   case WM_INIT_DIALOG:
  76.     //
  77.     // Initialization of 'Window'
  78.     //
  79.     hItem = pMsg->hWin;
  80.     WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(0x00C080FF));
  81.     //
  82.     // Initialization of 'Dropdown'
  83.     //
  84.     hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0);
  85.     DROPDOWN_SetListHeight(hItem, 50);
  86.     DROPDOWN_AddString(hItem, "1");
  87.         DROPDOWN_AddString(hItem, "2");
  88.         DROPDOWN_AddString(hItem, "3");
  89.         SetDropDownStyle(&hItem);
  90.     //
  91.     // Initialization of 'Dropdown'
  92.     //
  93.     hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_1);
  94.     DROPDOWN_SetListHeight(hItem, 50);
  95.         DROPDOWN_AddString(hItem, "1");
  96.         DROPDOWN_AddString(hItem, "2");
  97.         DROPDOWN_AddString(hItem, "3");
  98.     DROPDOWN_SetFont(hItem, GUI_FONT_24_1);

  99.     // USER START (Optionally insert additional code for further widget initialization)
  100.     // USER END
  101.     break;
  102.   case WM_NOTIFY_PARENT:
  103.     Id    = WM_GetId(pMsg->hWinSrc);
  104.     NCode = pMsg->Data.v;
  105.     switch(Id) {
  106.     case ID_DROPDOWN_0: // Notifications sent by 'Dropdown'
  107.       switch(NCode) {
  108.       case WM_NOTIFICATION_CLICKED:
  109.         // USER START (Optionally insert code for reacting on notification message)
  110.         // USER END
  111.         break;
  112.       case WM_NOTIFICATION_RELEASED:
  113.         // USER START (Optionally insert code for reacting on notification message)
  114.         // USER END
  115.         break;
  116.       case WM_NOTIFICATION_SEL_CHANGED:
  117.         // USER START (Optionally insert code for reacting on notification message)
  118.         // USER END
  119.         break;
  120.       // USER START (Optionally insert additional code for further notification handling)
  121.       // USER END
  122.       }
  123.       break;
  124.     case ID_DROPDOWN_1: // Notifications sent by 'Dropdown'
  125.       switch(NCode) {
  126.       case WM_NOTIFICATION_CLICKED:
  127.         // USER START (Optionally insert code for reacting on notification message)
  128.         // USER END
  129.         break;
  130.       case WM_NOTIFICATION_RELEASED:
  131.         // USER START (Optionally insert code for reacting on notification message)
  132.                 listbox = DROPDOWN_GetListbox(WM_GetDialogItem(pMsg->hWin,Id));//当dropdown展开才能获取句柄
  133.                 LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
  134.                 LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
  135.                 LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
  136.                 LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);

  137.                 LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
  138.                 LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
  139.                 LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
  140.                 LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);
  141.         // USER END
  142.         break;
  143.       case WM_NOTIFICATION_SEL_CHANGED:
  144.         // USER START (Optionally insert code for reacting on notification message)
  145.         // USER END
  146.         break;
  147.       // USER START (Optionally insert additional code for further notification handling)
  148.       // USER END
  149.       }
  150.       break;
  151.     // USER START (Optionally insert additional code for further Ids)
  152.     // USER END
  153.     }
  154.     break;
  155.   // USER START (Optionally insert additional message handling)
  156.   // USER END
  157.   default:
  158.     WM_DefaultProc(pMsg);
  159.     break;
  160.   }
  161. }

  162. /*********************************************************************
  163. *
  164. *       Public code
  165. *
  166. **********************************************************************
  167. */
  168. /*********************************************************************
  169. *
  170. *       CreateWindow
  171. */
  172. WM_HWIN CreateWindow1(void);
  173. WM_HWIN CreateWindow1(void) {
  174.   WM_HWIN hWin;

  175.   hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  176.   return hWin;
  177. }

  178. // USER START (Optionally insert additional public code)

  179. void MainTask(void)
  180. {
  181.         /* 初始化 */
  182.         GUI_Init();

  183.         /* 窗口自动使用存储设备 */
  184.         WM_SetCreateFlags(WM_CF_MEMDEV);

  185.         /* 创建对话框,使用GUIBulder生成的对话框创建函数 */
  186.         CreateWindow1();

  187.         while (1)
  188.         {
  189.                 GUI_Delay(10);
  190.         }
  191. }

  192. static int SetDropDownStyle(WM_HWIN * hItem)
  193. {
  194.         DROPDOWN_SKINFLEX_PROPS skin;
  195.         LISTBOX_Handle listbox;
  196.         int i;
  197.         DROPDOWN_SetTextAlign(*hItem, GUI_TA_VCENTER);
  198.         DROPDOWN_SetFont(*hItem, GUI_FONT_24_1);
  199.         DROPDOWN_SetAutoScroll(*hItem, 1); //开启下拉滑动条

  200.         for (i = 0; i < DROPDOWN_SKINFLEX_PI_DISABLED + 1; i++)
  201.         {
  202.                 DROPDOWN_GetSkinFlexProps(&skin, i);
  203.                 skin.aColorFrame[0] = 0X393A3E;
  204.                 skin.aColorFrame[1] = 0X393A3E;
  205.                 skin.aColorFrame[2] = 0X393A3E;

  206.                 skin.aColorUpper[0] = 0X393A3E;
  207.                 skin.aColorUpper[1] = 0X393A3E;

  208.                 skin.aColorLower[0] = 0X393A3E;
  209.                 skin.aColorLower[1] = 0X393A3E;
  210.                 skin.ColorArrow = 0xDDDDDC;
  211.                 skin.ColorText = GUI_WHITE;
  212.                 skin.Radius = 2;
  213.                 skin.ColorSep = GUI_BLACK;
  214.                 DROPDOWN_SetSkinFlexProps(&skin, i);
  215.         }


  216.         DROPDOWN_SetTextHeight(*hItem, 30); // 设置dropdown 关闭状态时的高度
  217.         DROPDOWN_SetListHeight(*hItem, 250);//设置下拉列表的高度
  218.         DROPDOWN_SetScrollbarWidth(*hItem, 32);//滚动条的宽度

  219.         DROPDOWN_Expand(*hItem); //展开listbox
  220.         listbox = DROPDOWN_GetListbox(*hItem);//当dropdown展开才能获取句柄
  221.         LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
  222.         LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
  223.         LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
  224.         LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);

  225.         LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
  226.         LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
  227.         LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
  228.         LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);

  229.         DROPDOWN_Collapse(*hItem);//关闭listbox
  230.         return 0;
  231. }
  232. // USER END

  233. /*************************** End of file ****************************/
复制代码
回复

使用道具 举报

14

主题

31

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2020-10-13 17:28:25 | 显示全部楼层
eric2013 发表于 2020-10-13 15:56
方便发个模拟器上的完整测试代码不,我试试。

硬汉哥,这是一个简单的测试代码哈,一个dropdown无效果,另一个dropdown要先显示默认的白色背景后才显示我设置的样式,代码如下:
/*********************************************************************
*                                                                    *
*                SEGGER Microcontroller GmbH & Co. KG                *
*        Solutions for real time microcontroller applications        *
*                                                                    *
**********************************************************************
*                                                                    *
* C-file generated by:                                               *
*                                                                    *
*        GUI_Builder for emWin version 5.30                          *
*        Compiled Jul  1 2015, 10:50:32                              *
*        (c) 2015 Segger Microcontroller GmbH & Co. KG               *
*                                                                    *
**********************************************************************
*                                                                    *
*        Internet: www.segger.com  Support: support@segger.com       *
*                                                                    *
**********************************************************************
*/

// USER START (Optionally insert additional includes)
// USER END

#include "DIALOG.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_WINDOW_0   (GUI_ID_USER + 0x03)
#define ID_DROPDOWN_0   (GUI_ID_USER + 0x04)
#define ID_DROPDOWN_1   (GUI_ID_USER + 0x05)


// USER START (Optionally insert additional defines)
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
static int SetDropDownStyle(WM_HWIN * hItem);
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 3, 2, 320, 240, 0, 0x0, 0 },
  { DROPDOWN_CreateIndirect, "Dropdown", ID_DROPDOWN_0, 41, 41, 80, 18, 0, 0x0, 0 },
  { DROPDOWN_CreateIndirect, "Dropdown", ID_DROPDOWN_1, 189, 41, 80, 18, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;
  LISTBOX_Handle listbox;
        int i;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Window'
    //
    hItem = pMsg->hWin;
    WINDOW_SetBkColor(hItem, GUI_MAKE_COLOR(0x00C080FF));
    //
    // Initialization of 'Dropdown'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_0);
    DROPDOWN_SetListHeight(hItem, 50);
    DROPDOWN_AddString(hItem, "1");
        DROPDOWN_AddString(hItem, "2");
        DROPDOWN_AddString(hItem, "3");
        SetDropDownStyle(&hItem);
    //
    // Initialization of 'Dropdown'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, ID_DROPDOWN_1);
    DROPDOWN_SetListHeight(hItem, 50);
        DROPDOWN_AddString(hItem, "1");
        DROPDOWN_AddString(hItem, "2");
        DROPDOWN_AddString(hItem, "3");
    DROPDOWN_SetFont(hItem, GUI_FONT_13_1);
    DROPDOWN_AddString(hItem, "Item");
    // USER START (Optionally insert additional code for further widget initialization)
    // USER END
    break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_DROPDOWN_0: // Notifications sent by 'Dropdown'
      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)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    case ID_DROPDOWN_1: // Notifications sent by 'Dropdown'
      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)
                listbox = DROPDOWN_GetListbox(WM_GetDialogItem(pMsg->hWin,Id));//当dropdown展开才能获取句柄
                LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
                LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
                LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
                LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);

                LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
                LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
                LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
                LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);
        // USER END
        break;
      case WM_NOTIFICATION_SEL_CHANGED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWindow
*/
WM_HWIN CreateWindow1(void);
WM_HWIN CreateWindow1(void) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hWin;
}

// USER START (Optionally insert additional public code)

void MainTask(void)
{
        /* 初始化 */
        GUI_Init();

        /* 窗口自动使用存储设备 */
        WM_SetCreateFlags(WM_CF_MEMDEV);

        /* 创建对话框,使用GUIBulder生成的对话框创建函数 */
        CreateWindow1();

        while (1)
        {
                GUI_Delay(10);
        }
}

static int SetDropDownStyle(WM_HWIN * hItem)
{
        DROPDOWN_SKINFLEX_PROPS skin;
        LISTBOX_Handle listbox;
        int i;
        DROPDOWN_SetTextAlign(*hItem, GUI_TA_VCENTER);
        DROPDOWN_SetFont(*hItem, GUI_FONT_24_1);
        DROPDOWN_SetAutoScroll(*hItem, 1); //开启下拉滑动条

        for (i = 0; i < DROPDOWN_SKINFLEX_PI_DISABLED + 1; i++)
        {
                DROPDOWN_GetSkinFlexProps(&skin, i);
                skin.aColorFrame[0] = 0X393A3E;
                skin.aColorFrame[1] = 0X393A3E;
                skin.aColorFrame[2] = 0X393A3E;

                skin.aColorUpper[0] = 0X393A3E;
                skin.aColorUpper[1] = 0X393A3E;

                skin.aColorLower[0] = 0X393A3E;
                skin.aColorLower[1] = 0X393A3E;
                skin.ColorArrow = 0xDDDDDC;
                skin.ColorText = GUI_WHITE;
                skin.Radius = 2;
                skin.ColorSep = GUI_BLACK;
                DROPDOWN_SetSkinFlexProps(&skin, i);
        }


        DROPDOWN_SetTextHeight(*hItem, 30); // 设置dropdown 关闭状态时的高度
        DROPDOWN_SetListHeight(*hItem, 250);//设置下拉列表的高度
        DROPDOWN_SetScrollbarWidth(*hItem, 32);//滚动条的宽度

        DROPDOWN_Expand(*hItem); //展开listbox
        listbox = DROPDOWN_GetListbox(*hItem);//当dropdown展开才能获取句柄
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_UNSEL,0X393A3E); //灰色
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_SEL,0xd99847);
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_SELFOCUS,0xd99847); //蓝色
        LISTBOX_SetBkColor(listbox,LISTBOX_CI_DISABLED,0X393A3E);

        LISTBOX_SetTextColor(listbox,LISTBOX_CI_UNSEL,GUI_WHITE);
        LISTBOX_SetTextColor(listbox,LISTBOX_CI_SEL,GUI_WHITE);
        LISTBOX_SetTextColor(listbox,LISTBOX_CI_SELFOCUS,GUI_WHITE);
        LISTBOX_SetTextColor(listbox,LISTBOX_CI_DISABLED,GUI_WHITE);

        DROPDOWN_Collapse(*hItem);//关闭listbox
        return 0;
}
// USER END

/*************************** End of file ****************************/
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-10-14 02:34:06 | 显示全部楼层
石头123 发表于 2020-10-13 17:28
硬汉哥,这是一个简单的测试代码哈,一个dropdown无效果,另一个dropdown要先显示默认的白色背景后才显示 ...

不要设置皮肤色,使用经典色是否正常。
回复

使用道具 举报

14

主题

31

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2020-10-15 09:32:17 | 显示全部楼层
eric2013 发表于 2020-10-14 02:34
不要设置皮肤色,使用经典色是否正常。

dropdown不适用肤色,注释掉SetDropDownStyle里的for循环,还是一样的效果。我后来直接在创建窗口初始化的时候添加
                LISTBOX_SetDefaultBkColor(LISTBOX_CI_UNSEL,0X393A3E);
                LISTBOX_SetDefaultBkColor(LISTBOX_CI_SEL,0xd99847);
                LISTBOX_SetDefaultBkColor(LISTBOX_CI_SELFOCUS,0xd99847);
                LISTBOX_SetDefaultBkColor(LISTBOX_CI_DISABLED,0X393A3E);
               
                LISTBOX_SetDefaultTextColor(LISTBOX_CI_UNSEL,GUI_WHITE);
                LISTBOX_SetDefaultTextColor(LISTBOX_CI_SEL,GUI_WHITE);
                LISTBOX_SetDefaultTextColor(LISTBOX_CI_SELFOCUS,GUI_WHITE);
                LISTBOX_SetDefaultTextColor(LISTBOX_CI_DISABLED,GUI_WHITE);
但是也不行,从现象上看dropdown展开的时候会多出listbox控件,但是当控件未展开的时候不受listbox设置的影响,而且似乎每次展开的listbox句柄是不一样的,但是这个还打印验证~
回复

使用道具 举报

14

主题

31

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2020-10-15 09:42:23 | 显示全部楼层
eric2013 发表于 2020-10-14 02:34
不要设置皮肤色,使用经典色是否正常。

刚才验证了下,同一个dropdown控件,每次获取的listbox控件的句柄会有不同
day listbox = 0
day listbox = 192
day listbox = 0
day listbox = 220
day listbox = 0
day listbox = 192
day listbox = 0
day listbox = 220
day listbox = 0
day listbox = 192
day listbox = 0
day listbox = 220
day listbox = 0
day listbox = 189
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-10-16 09:51:16 | 显示全部楼层
石头123 发表于 2020-10-15 09:32
dropdown不适用肤色,注释掉SetDropDownStyle里的for循环,还是一样的效果。我后来直接在创建窗口初始化 ...

函数LISTBOX_SetDefaultBkColor要放在GUI_Init函数后面就调用。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 05:32 , Processed in 0.289905 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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