|
实例用的模拟器里面的NEMU 例程进行更改的。
  case WM_MENU:
    pData = (MENU_MSG_DATA*)pMsg->Data.p;
    switch (pData->MsgType) {
    case MENU_ON_ITEMPRESSED:
      //
      // This message is send regardless of the item state is disabled or not
      //
      MENU_GetItem(pMsg->hWinSrc, pData->ItemId, &Data);
      if (Data.Flags & MENU_IF_DISABLED) {
        _MessageBox("The pressed item was disabled", "Message");
      }
      break;
    case MENU_ON_ITEMACTIVATE:
      //
      // This message is send on highlighting a menu item
      //
      Index = pData->ItemId - ID_MENU_FILE_NEW;
      if (Index >= 0) {
        TEXT_SetText(_hText, _paDescription[pData->ItemId - ID_MENU_FILE_NEW]);
      } else {
        TEXT_SetText(_hText, "Ready");
      }
      break;
    case MENU_ON_ITEMSELECT:
      //
      // This message is send only if an enabled item has been selected
      //
      //sprintf(acBuffer, "ID of the selected\nitem is 0x%X", pData->ItemId);
      //_MessageBox(acBuffer, "Message");
     GUI_EndDialog(hWin,0);     //上面代码注释掉,这里增加了这条点击任何一个菜单就关闭当前的窗口。
      break;
    }
#define GUI_NUMBYTES  1024*30  
#define GUI_BLOCKSIZE 32
这里把内存设置为30K   此时在开发板上运行点击菜单关闭就死机,进入硬件错误
r0  = 0x 1FFF97BC        内存地址越标了。
r1  = 0x 200039C8        
r2  = 0x        4
r3  = 0x 200039C8        
r12 = 0x       10
lr  = 0x  800D7C5        
pc  = 0x  80035EA        
psr = 0x 21000000        
#define GUI_NUMBYTES  1024*20      分配20K 内存给他,此时运行正常,点击菜单可以关闭。    后来我设置20K 也不能正常运行了。
以上的程序是在5.26,5.28  都存在这问题。
但是用5.22版本运行上面的程序内存分配多少都可以正常运行。    (其它的版本就没有测试)
emwin.rar
(4 KB, 下载次数: 57)
菜单源码在附件。哪位高手帮看下是什么问题?万分感激! 同样的代码在5.26,5.28的模拟器上又是可以正常运行的。
              
这图是死机的样子,      正常关闭是全黑屏的。
这个是正常关闭的 |
|