1.只能用异步
2.Convert之后是SetActive(); 在RunL()等待结果.
//在添加的Active Object类中加载图片
_LIT(fName, "c://blackFont.png "); //要使用symbian中的路径,而不是Windows的路径。
User::LeaveIfError(iRfs.Connect());
iImageDecoder = CImageDecoder::FileNewL(iRfs, fName);
iBitMap = new(ELeave) CFbsBitmap();
TFrameInfo frameInfo;
frameInfo = iImageDecoder-> FrameInfo();
iBitMap-> Create(frameInfo.iOverallSizeInPixels, frameInfo.iFrameDisplayMode);
iImageDecoder-> Convert(&tStatus, *iBitMap);
SetActive();
//定义RunL()函数处理响应 因为需要调用container中的draw函数,所以定义接口类
m_pController->NotifyCompletion( KErrNone ); //调用语句 CImageConverterEngine* m_pController;
class MConverterController //接口类
{
public:
virtual void NotifyCompletion( TInt aErr ) = 0;
};
//container中处理
if( aErr == KErrNone )
{
// we have succesfully decoded an image, now make the view
// to display it
m_pImage= m_pConverter->m_pImage; //CImageConverterEngine* m_pConverter;
}
DrawNow();
需要注意的是,container类要继承MConverterController,否则无法使接口类调用container中的对应函数。顺便哀悼一下因为该问题而消耗的将尽一天的时光ORZ