硬汉嵌入式论坛

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

[emWin] 我给窗口中的一个按键加上skin后,以点击触摸屏就进硬件中断了,这是怎么回事啊

[复制链接]

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2016-8-19 10:08:52 | 显示全部楼层 |阅读模式
我给窗口中的一个按键加上skin后,以点击触摸屏就进硬件中断了,这是怎么回事啊,求大神指导。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-19 10:51:02 | 显示全部楼层
如果方便的话,贴下代码看看
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2016-8-19 13:56:15 | 显示全部楼层
hWin=CreateWindow();
    hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0);
    BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);
        while (1)
    {
        GUI_Exec();
    }

下面这段是GUIbuilder生成的
WM_HWIN CreateWindow(void) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, 0/*WM_HBKWIN*/, 0, 0);
  return hWin;
}
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2016-8-19 13:56:52 | 显示全部楼层

回 eric2013 的帖子

eric2013:
如果方便的话,贴下代码看看
        hWin=CreateWindow();
        hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0);
        BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);
        while (1)
        {
                GUI_Exec();
        }

下面这段是GUIbuilder生成的
WM_HWIN CreateWindow(void) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, 0/*WM_HBKWIN*/, 0, 0);
  return hWin;
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-19 14:49:56 | 显示全部楼层

回 2602082487 的帖子

2602082487:        hWin=CreateWindow();
        hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0);
        BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);
 &n .. (2016-08-19 13:56) 
你的使用方法有点问题。
1.  你现在使用的是那个版本的emWin,如果是5.28版本以下的,需要皮肤色的话,直接在
     GUI_Init函数后面调用函数    BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);就可以了
    5.28版本及其以上版本已经自动使能皮肤色了,不需要单独设置了。

2.       hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0); 这个函数不能在这个位置,
    这个函数应该是在你创建的对话框的回调函数里面的,即回调函数的WM_INIT_DIALOG消息里面。
   如果你用的是GUIBuilder生成的,这些工作已经由GUIBuilder帮你完成了。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2016-8-19 16:13:42 | 显示全部楼层

回 eric2013 的帖子

eric2013:

你的使用方法有点问题。
1.  你现在使用的是那个版本的emWin,如果是5.28版本以下的,需要皮肤色的话,直接在
     GUI_Init函数后面调用函数    BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);就可以了
    5.28版本及其以上版本已经自动使能皮肤色了,不需要单独设置了。
.......
谢谢回复     
如果不调用hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0); ,那我在使用BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);时,参数hDialog怎么得到呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115717
QQ
发表于 2016-8-20 09:40:40 | 显示全部楼层

回 2602082487 的帖子

2602082487:谢谢回复     
如果不调用hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0); ,那我在使用BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);时,参数hDialog怎么得到呢? (2016-08-19 16:13)
上面的回复中这个皮肤的设置,回复错了,以为你调用的是BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX); 如果是这个函数,直接放在GUI_Init。

你这里使用BUTTON_SetSkin的话,这两个函数
hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0);
BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);
都放在button所在对话框回调函数的WM_INIT_DIALOG消息里面就可以了。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2016-8-21 20:15:42 | 显示全部楼层
GUI_Init();            
        BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
        hWin=CreateWindow();
        while (1)
        {
                GUI_Exec();
        }


现在这样也是一按屏幕就进硬件中断,使用肤色会增加很多RAM吗,我只给STemwin分配了25k的RAM
eric2013:

你的使用方法有点问题。
1.  你现在使用的是那个版本的emWin,如果是5.28版本以下的,需要皮肤色的话,直接在
     GUI_Init函数后面调用函数    BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);就可以了
    5.28版本及其以上版本已经自动使能皮肤色了,不需要单独设置了。
.......
谢谢回复     
如果不调用hDialog=WM_GetDialogItem(hWin,ID_BUTTON_0); ,那我在使用BUTTON_SetSkin(hDialog,BUTTON_SKIN_FLEX);时,参数hDialog怎么得到呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 07:33 , Processed in 0.227274 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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