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

(已解决)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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版