野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10773|回复: 1

[emWin] 这个错误怎么解?

[复制链接]
发表于 2018-9-16 12:42:49 | 显示全部楼层 |阅读模式
我看一本书里有这么一个例子,代码如下。
#include "GUIDEMO.h"
#include <stdlib.h>
#include "stdio.h"
#include "EDIT.h"
#include <stddef.h>
#include "DIALOG.h"
#include "WM.h"
#include "BUTTON.h"
#include "FRAMEWIN.h"
#include "GUI.h"
#include "TEXT.h"

static int Count;

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[]={
        {FRAMEWIN_CreateIndirect,"armfly",0,0,0,800,480,FRAMEWIN_CF_MOVEABLE,0},
        {BUTTON_CreateIndirect,"BUTTON0",GUI_ID_BUTTON0,82,122,162,37,0,0},
        {BUTTON_CreateIndirect,"BUTTON1",GUI_ID_BUTTON1,82,62,162,37,0,0},
        {TEXT_CreateIndirect,"0000",GUI_ID_TEXT0,10,10,50,48,0,0}
};

void PaintDialog(WM_MESSAGE *pMsg)
{
        WM_HWIN hWin=pMsg->hWin;
}

void InitDialog(WM_MESSAGE *pMsg)
{
        WM_HWIN hWin=pMsg->hWin;
        FRAMEWIN_SetFont(hWin,&GUI_Font24B_ASCII);
        FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
        FRAMEWIN_AddCloseButton(hWin,FRAMEWIN_BUTTON_RIGHT,0);
        FRAMEWIN_AddMaxButton(hWin,FRAMEWIN_BUTTON_RIGHT,1);
        FRAMEWIN_AddMinButton(hWin,FRAMEWIN_BUTTON_RIGHT,2);
        FRAMEWIN_SetTitleHeight(hWin,30);

        TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_FontD36x48);
}

static void _cbCallback(WM_MESSAGE *pMsg)
{
        int NCode,Id;
        char buf[10];
        WM_HWIN hWin=pMsg->hWin;
        switch(pMsg->MsgId)
        {
        case WM_TIMER:
                Count++;
                sprintf(buf,"%04d",Count);
                TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT0),(const char *)buf);
                WM_RestartTimer(pMsg->Data.v,100);
                break;
        case WM_PAINT:
                PaintDialog(pMsg);
        case WM_INIT_DIALOG:

                InitDialog(pMsg);
                break;
        case WM_KEY:
                switch(((WM_KEY_INFO *)(pMsg->Data.p))->Key)
                {
                case GUI_KEY_ESCAPE:
                        GUI_EndDialog(hWin,1);
                        break;
                case GUI_KEY_ENTER:
                        GUI_EndDialog(hWin,0);
                        break;

                }
                break;
                case WM_NOTIFY_PARENT:
                        Id=WM_GetId(pMsg->hWinSrc);
                        NCode=pMsg->Data.v;
                        switch(Id)
                        {
                        case GUI_ID_OK:
                                if(NCode==WM_NOTIFICATION_RELEASED)
                                        GUI_EndDialog(hWin,0);
                                break;
                        case GUI_ID_CANCEL:
                                if(NCode==WM_NOTIFICATION_RELEASED)
                                        GUI_EndDialog(hWin,0);
                                break;
                        case GUI_ID_BUTTON0:
                                switch(NCode)
                                {
                                case WM_NOTIFICATION_CLICKED:
                                        break;
                                case WM_NOTIFICATION_RELEASED:
                                        break;
                                case WM_NOTIFICATION_MOVED_OUT:
                                        break;
                                }
                                break;
                        case GUI_ID_BUTTON1:
                                switch(NCode)
                                {
                                case WM_NOTIFICATION_CLICKED:
                                        break;
                                case WM_NOTIFICATION_RELEASED:
                                        break;
                                case WM_NOTIFICATION_MOVED_OUT:
                                        break;
                                }
                                break;
                        }
                        break;
                        default:
                                WM_DefaultProc(pMsg);
        }
}
void MainTask(void) {
        WM_HWIN hDlg;
  WM_HTIMER hTimer;

  Count=0;
  WM_SetCreateFlags(WM_CF_MEMDEV);
  GUI_Init();
  WM_SetDesktopColor(GUI_BLUE);
  FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
  BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
  hDlg=GUI_CreateDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbCallback,0,0,0);
  //GUI_ExecDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbCallback,0,0,0);
  //hTimer=WM_CreateTimer(WM_GetClientWindow(hDlg),0,100,0);
  while(1)
  {
          GUI_Delay(100);
  }
}

/*************************** End of file ****************************/
可是用模拟器仿真,出错。

3.jpg
请问高手,哪里错了?谢谢!


回复

使用道具 举报

发表于 2018-9-17 08:45:33 | 显示全部楼层
说是用到的对象没有初始化
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-1 07:39 , Processed in 0.040069 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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