你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

(已解决)STEMWIN重绘不能成功

[复制链接]
与龙共舞 提问时间:2018-6-19 16:54 /
本帖最后由 与龙共舞 于 2018-8-3 16:25 编辑

最近解除STEMWIN,跟着网上的指点做的,遇到一个问题困惑4天了,还是来问一问。
我的目的是:点击UI的按键,画面显示做出反应,比如画一个圆圈,换一个 背景图。
参考:http://blog.csdn.net/neqee/article/details/53074913emWin 2天速成实例教程003_Framewin和Window窗口控件和2D绘图

我现在的问题是:不能自动重绘

代码
extern GUI_CONST_STORAGE GUI_BITMAP bmQQ;//做的一个图片
int bgroundE=0;//做一个全局变量吧 标识一下
static void _cbDialog(WM_MESSAGE * pMsg)
{
  WM_HWIN hItem;
  int     NCode;
  int     Id;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId)
{
  case WM_PAINT:                //就只这个 自己手工添加的重绘                                
         if(bgroundE) {GUI_DrawBitmap(&bmQQ, 0, 0);}//就是这里了 如果是1就会换背景!
         break;
  case WM_INIT_DIALOG: //初始化
         hItem = pMsg->hWin;
         FRAMEWIN_SetText(hItem, "page1");
         FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
                FRAMEWIN_SetFont(hItem, GUI_FONT_20_1);
                FRAMEWIN_SetText(hItem, "neqee.com");
                FRAMEWIN_SetTextColor(hItem, (0x008000FF));
                FRAMEWIN_SetTitleHeight(hItem, 24);
                FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0);
                FRAMEWIN_AddMaxButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0);
                FRAMEWIN_AddMinButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0);
                FRAMEWIN_SetClientColor(pMsg->hWin, GUI_GREEN);

                hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
                BUTTON_SetText(hItem, "GetDialogItem");
                BUTTON_SetFont(hItem, GUI_FONT_16_1);


               break;
  case WM_NOTIFY_PARENT://处理按键消息
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id)
  {
    case ID_BUTTON_0: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        break;
      case WM_NOTIFICATION_RELEASED:
            bgroundE = !bgroundE;、、问题就是这里!!这里0-1取反以后 下面在失能画面 按照教程 就应该自动重绘的呀???
            WM_InvalidateWindow(pMsg->hWin);

            hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);//这个是可以成功的 很快button就换了名字
                    BUTTON_SetText(hItem, "bgroundE");

        break;

      }
      break;


    }
    break;

  default:
    WM_DefaultProc(pMsg);
    break;
  }
}



今天找问题 偶然发现 背景图 出来了 需要右上角最大化最小化之类的操作一下
我觉得 我的学的教程的逻辑是对的 就是没有自动去重绘 是哪里还有东西吗?
1.jpg

2.jpg
3.jpg


收藏 2 评论7 发布时间:2018-6-19 16:54

举报

7个回答
x5y4z3 回答时间:2018-8-3 13:30:02
哇喔!!... zero99 兄啊!这是六月份的提问,咋变成 8/3 今日话题了?呵呵~

话说楼主,忠心的给您建议,拿到该 emWin 版本的应用手册直接看,直接呼叫其函数应用会更学习与掌握其操作。
我在约莫是 2006 年捣鼓这 GUI 时,还是得将底层先 Poiting 好后再学如何点 LCD,成功后才再拿手册来玩了下应用层啊!
感觉这 Segger 他们提供的 Demo 及 Build 工具等,是能用,但是串在一起跑几圈后堆栈就溢出了,没做好离开 Demo 后要清空所占用记忆区块的动作,光是这事当时也是搞死我也。故建议直接使用较好学习及控制,也仅止于建议。最后住楼主早日学习有成!

点评

是啊,但是问题没有解决,咱不能不管!  发表于 2018-8-3 15:27

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

与龙共舞 回答时间:2018-6-19 18:21:59
反复对比 别人的工程可以 我的就是不行
最后发现这个工具换成别人的就好了
好奇怪。。。
其实 是会自动重绘的 QQ截图20180619182130.jpg
与龙共舞 回答时间:2018-6-20 15:29:06
这个exe文件夹里面的东西 是可以直接运行的 删除!再次build会再次出现
数码小叶 回答时间:2018-8-3 13:20:33
哈哈。。自从上次GUI培训之后也在学这个,开始也看的这个2天速成,不过发现不太适合初学者就换了

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

与龙共舞 回答时间:2018-8-3 16:29:37
沙发已经解决了

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

x5y4z3 回答时间:2018-8-4 18:36:39

感觉楼主真幸福,现代 Segger 的 emWin 已对大多 MCU 厂商都做好了 Library 的编译库文件及周边应用等工具确实方便。
想当初我们买 Segger 的 GUI 源码,从 1.34 版买到了 5.20 版,一路都得自己移植,工作之辛苦不在言下,待移植好后应用不用练习自然也都已上手了。
楼主日后若有心得别忘记要来社区跟大夥多交流啊!...

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版