与龙共舞 发表于 2018-6-19 16:54:31

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

本帖最后由 与龙共舞 于 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;
}
}



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






x5y4z3 发表于 2018-8-3 13:30:02

哇喔!!... zero99 兄啊!这是六月份的提问,咋变成 8/3 今日话题了?呵呵~ ;P

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

与龙共舞 发表于 2018-6-19 18:21:59

反复对比 别人的工程可以 我的就是不行
最后发现这个工具换成别人的就好了
好奇怪。。。
其实 是会自动重绘的

与龙共舞 发表于 2018-6-20 15:29:06

这个exe文件夹里面的东西 是可以直接运行的 删除!再次build会再次出现

数码小叶 发表于 2018-8-3 13:20:33

哈哈。。自从上次GUI培训之后也在学这个,开始也看的这个2天速成,不过发现不太适合初学者就换了:D:D:D

与龙共舞 发表于 2018-8-3 16:29:37

沙发已经解决了

x5y4z3 发表于 2018-8-4 18:36:39

与龙共舞 发表于 2018-8-3 16:29
沙发已经解决了

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