zoukankan      html  css  js  c++  java
  • 来电时弹出poplist对话框问题?(转)

    程序思路:利用AO监控来电状态,来电时,启动指定程序A,在程序A中设置了程序CCoeEnv::Static()->RootWin().SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront);,在程序A中视图container中构建了一个poplist对话框代码如下:
    poplist对话框代码:
    void CStreamerCtrlAppContainer::ShowSoundPopupListL() 
            {
            CAknSinglePopupMenuStyleListBox* list = new(ELeave) CAknSinglePopupMenuStyleListBox;
            CleanupStack::PushL(list);
            
            // Create popup list and PUSH it.
            CAknPopupList* popupList = CAknPopupList::NewL( list, R_AVKON_SOFTKEYS_MENU_LIST, AknPopupLayouts::EMenuWindow);
            CleanupStack::PushL(popupList);
            
            // initialize listbox.
            list->ConstructL(popupList, CEikListBox::ELeftDownInViewRect);
            list->CreateScrollBarFrameL(ETrue);
            list->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
            MDesCArray* itemList = list->Model()->ItemTextArray();
            CDesCArray* items = (CDesCArray*) itemList;
             
            TBuf<128>         filename; 
            RFs                 iSessionRFs; 
            CDir*                 dirList; 
            _LIT(KStringSize,"%S"); 
            User::LeaveIfError(iSessionRFs.Connect()); 
            
            TBuf<128>         dPath;
            TBuf<128>         dPathF;
            
            if( !BaflUtils::FileExists(iSessionRFs, KPrivateFolderPath1))
                    {
                    User::LeaveIfError(iSessionRFs.MkDir(KPrivateFolderPath1));
                    }
            
            dPathF.Format( KPrivateFolderPath1, &dPath );
            
            User::LeaveIfError(iSessionRFs.GetDir(dPathF, KEntryAttMaskSupported, ESortByName, dirList)); 
            TInt j = dirList->Count(); 
            
            for (TInt i = 0;i<j;i++) 
            {
                    filename.Format(KStringSize,&(*dirList)[i].iName); 
                    
                    if(SoundVomL(filename))
                            {
                            items->AppendL(filename);
                            }
            } 
            
            delete dirList; 
            iSessionRFs.Close(); 

            
            // Show popup list and then show return value.(在Fp1平台执行下面这步时程序退出)
            TInt popupOk = popupList->ExecuteLD();
            
            CleanupStack::Pop(popupList);
            //If the user enters ok on a selection
            if (popupOk)
            {
                    //Do what you have to do 
                    TBuf<128> tempItem;
                    TBuf<128> textItem;
                TPtrC16 sourceRow;
                TInt endPos = 0;
                
                if (list->Model()->NumberOfItems())
                        {
                    
                            tempItem.Copy(list->Model()->ItemText(list->CurrentItemIndex()));
                            //tempItem.Copy(model->ItemText(list->CurrentItemIndex()));
                            sourceRow.Set(tempItem);
                            endPos = sourceRow.Length();
                            textItem.Append(sourceRow.Mid(0,endPos));
                            
                            CleanupStack::PopAndDestroy(list);
                            
                            DataSaveL( textItem );
            
                            STATIC_CAST(CStreamerCtrlAppUi*,iAvkonAppUi)->ExitApp() ;
                        }
                else
                        {
                            CleanupStack::PopAndDestroy(list);
                            
                            STATIC_CAST(CStreamerCtrlAppUi*,iAvkonAppUi)->ExitApp() ;
                        }
            }
            else
                    {
                    CleanupStack::PopAndDestroy(list);
                    
                    STATIC_CAST(CStreamerCtrlAppUi*,iAvkonAppUi)->ExitApp() ;
                    }        
            }
    程序运行效果:
    FP1平台手机:来电时,启动了A程序,但是执行到contianer的poplist代码(TInt popupOk = popupList->ExecuteLD();)这步时,程序A退出。
    Mr平台手机:一切正常,没有问题。来电时,启动了A程序,弹出poplist对话框,选择后来电正常运行。

    FP1和Mr平台在这步程序代码上有区别么,有什么安全规则么?

    谢谢!

     本帖最后由 techcore 于 2010-7-30 11:13 编辑



    最好看一下错误编码,装一个这个Err.sis  ErrRd.zip (1.82 KB) 。装完Err.sis后,你再跑一下那个程序,应该能捕获到错误号。

    http://wiki.forum.nokia.com/index.php/Extended_panic_code 

    来电时,运行到这行代码时TInt popupOk = popupList->ExecuteLD();,程序运行提示“程序已关闭 KERN-EXE-3”。

    Fp1平台上,DRAPD都没有获得返回值就弹出错误了;Mr上正常(popupOk  =1或0)。

    这是LD没有销毁问题,但是我这是Popuplist对话框,需要构建啊,Fp1上怎么就出错了(mr上正常)。

    各位指点一下。谢谢!

    解决了,mr、Fp1和Fp2栈的大小分配问题。谢谢楼上的几位。
  • 相关阅读:
    hdu 1443 Joseph 约瑟夫环
    hdu 1568 Fibonacci 对数。。
    UILineBreakMode
    Android RelativeLayout 动态添加组件
    iOS 让view触发点击事件
    读取plist文件数据
    [转]Android获取SD卡视频音频文件
    ubuntu下vim修复
    DMO(DirectX Media Object)的工程创建过程及其调用方式
    《Windows程序设计》笔记 —— Chapter One
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1848657.html
Copyright © 2011-2022 走看看