当前位置: 代码迷 >> Brew >> BREW里面如何保存当前的屏幕的画面,然后用的时候再显示保存的屏幕画面
  详细解决方案

BREW里面如何保存当前的屏幕的画面,然后用的时候再显示保存的屏幕画面

热度:2100   发布时间:2013-02-26 00:00:00.0
BREW里面怎么保存当前的屏幕的画面,然后用的时候再显示保存的屏幕画面?
C/C++ code
case EVT_APP_SUSPEND:    // Add your code here...                  return(TRUE);case EVT_APP_RESUME:     // Add your code here...                  return(TRUE);

这两个消息,怎么在处理EVT_APP_RESUME的时候,把界面还原到EVT_APP_SUSPEND消息来的时候的界面?

------解决方案--------------------------------------------------------
// 宏定义
#define RELEASEIF(pi) { if (pi) { IBASE_Release((IBase*)(pi)); (pi)=0; }}

// 用于屏幕保存与恢复,定义在应用数据结构中
IBitmap *m_pScreenBitmap;
AEEDeviceInfo deviceInfo; 

// 在应用初始化中加入
pMe->deviceInfo.wStructSize = sizeof(pMe->deviceInfo);
ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->deviceInfo);


// App is being suspended 
case EVT_APP_SUSPEND:
// 保存屏幕
SaveScreen(pMe, &pMe->m_pScreenBitmap);

return(TRUE);


// App is being resumed
case EVT_APP_RESUME:
// 恢复屏幕
RestoreScreen(pMe, pMe->m_pScreenBitmap);

return(TRUE);


// 保存屏幕
void SaveScreen(CBasicApp *pMe, IBitmap **ppScreenBitmap)
{
IBitmap *pBitmapDisplay = NULL;
IDISPLAY_GetDeviceBitmap( pMe->pIDisplay, &pBitmapDisplay );
if(pBitmapDisplay)
{
IBITMAP_CreateCompatibleBitmap( pBitmapDisplay, 
ppScreenBitmap,
pMe->deviceInfo.cxScreen, 
pMe->deviceInfo.cyScreen);

if(*ppScreenBitmap)
{
IBitmap_BltIn(*ppScreenBitmap,
0,
0,
pMe->deviceInfo.cxScreen,
pMe->deviceInfo.cyScreen,
pBitmapDisplay,
0,
0,
AEE_RO_COPY);
}
IBITMAP_Release(pBitmapDisplay);
}
}

// 恢复屏幕
void RestoreScreen(CBasicApp *pMe, IBitmap *pScreenBitmap)
{
if(pScreenBitmap)
{
IDISPLAY_BitBlt(pMe->pIDisplay, 
0, 
0, 
pMe->deviceInfo.cxScreen, 
pMe->deviceInfo.cyScreen, 
pScreenBitmap, 
0, 
0, 
AEE_RO_COPY);

IDisplay_Update(pMe->pIDisplay);
RELEASEIF(pScreenBitmap);
}
}

  相关解决方案