Discussion Board

Results 1 to 13 of 13
  1. #1
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Здравствуйте. Возникла проблема. Нужно организовать поворот экрана в ландскейп, и обратно в портрет, из exe
    Вращаю так:
    Code:
        RWsSession ws;
        ws.Connect();
        TInt XPixels,YPixels;
        CWsScreenDevice *screen = new(ELeave) CWsScreenDevice(ws);
        screen->Construct();
        TPixelsTwipsAndRotation rotation;
        screen->GetScreenModeSizeAndRotation(screen->CurrentScreenMode(),rotation);
        YPixels = rotation.iPixelSize.iHeight;
        XPixels = rotation.iPixelSize.iWidth;
        if(rotation.iRotation == CFbsBitGc::EGraphicsOrientationNormal)
    	{
    	__LOGSTR("Normal");
    
    	rotation.iRotation = CFbsBitGc::EGraphicsOrientationRotated90;
    	rotation.iPixelSize.iHeight = XPixels;
    	rotation.iPixelSize.iWidth = YPixels;
    	screen->SetScreenSizeAndRotation(rotation);
    	screen->SetScreenMode(1);
    
    	}else{
    	__LOGSTR("Landscape");
    	rotation.iRotation = CFbsBitGc::EGraphicsOrientationNormal;
    	rotation.iPixelSize.iHeight = XPixels;
    	rotation.iPixelSize.iWidth = YPixels;
    	screen->SetScreenSizeAndRotation(rotation);
    	screen->SetScreenMode(0);
    	}
        ws.Close();
    Вращается некорректно, на экране получется такая каша

    Что надо ещё сделать, чтобы экран повернулся корректно / что делаю не так?

  2. #2
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Попробуйте так:
    Code:
    screen->SetAppScreenMode();
    screen->SetScreenMode();
    screen->SetCurrentRotations(); 
    ws.Flush(); 
    ws.Finish();

  3. #3
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Code:
            rotation.iRotation = CFbsBitGc::EGraphicsOrientationRotated90;
    	screen->SetAppScreenMode(1);
    	screen->SetScreenMode(1);
    	screen->SetCurrentRotations(1,CFbsBitGc::EGraphicsOrientationRotated90);
    	ws.Flush();
    	//ws.Finish();
    Всё так же как и было. на ws.Finish() поругалось, ../src/main.cpp:45: error: 'class RWsSession' has no member named 'Finish'
    Кстати если сделать screen->SetScreenModeEnforcement(ESizeEnforcementPixelsAndRotation), то индикаторы сети и батареи принимают правильное положение, но экран становится белым, и собственно кроме индикаторов ничего не отображается

  4. #4
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    А на тестовом смартфоне точно предусмотрена поддержка изменения ориентации экрана изначально? Например, на Е7x повернуть не получается.
    PS: да, Finish() там лишнее было.

  5. #5
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Забыл указать смартфон. N73. Думаю можно повернуть, GetScreenSizeModeList() возвращает 0 и 1

  6. #6
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    А capability WriteDeviceData не забыли в .mmp добавить?

  7. #7
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Я провожу тесты на смартфоне со снятой защитой.
    в mmp файле
    CAPABILITY ALL -TCB -DRM

  8. #8
    Nokia Developer Expert Trufanov's Avatar
    Join Date
    Mar 2010
    Location
    Moscow
    Posts
    34
    У вас приложение на базе AppUI?
    Если да, попробуйте:
    Code:
    CEikonEnv::Static()->ScreenDevice()->SetScreenMode(1);

  9. #9
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Нет, exe. Так-то не очень принципиально, попробую, спаибо.

  10. #10
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Что-то ничего не понимаю. Всё та же каша вышла. Такое чувство что приложениям не передаются новые размеры экрана

  11. #11
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Проблема решена банальной симуляцией сканкодов кнопок поворота.
    Всем спасибо за ответы.

  12. #12
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    А на каких устройствах есть кнопки поворота?

  13. #13
    Registered User SQR's Avatar
    Join Date
    Mar 2009
    Posts
    65
    Насчёт хардварных не в курсе, наверное смартфоны с flip.
    На 9.1 поворот работает с помощью сканкодов 189 (0xBD) и 190 (0xBE), на 9.2 и выше 174 (0xAE) 175 (0xAF).
    Кстати, если не ошибаюсь, на Е60 программа "Повернуть" работает таким образом.

Similar Threads

  1. вызов CCoeControl::SetRect() и кеш экрана
    By popov_andrew_e in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 16
    Last Post: 2010-12-31, 15:16
  2. Положение экрана в Python приложении
    By alonan in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 2
    Last Post: 2010-03-07, 04:02
  3. Смена view при изменении ориентации экрана. uidesign
    By Kruil in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 4
    Last Post: 2010-02-25, 09:10
  4. Не работает авто-поворот экрана
    By metallugahell in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 1
    Last Post: 2009-07-07, 12:01
  5. Поворот на телевизоре картинки выдаваемой Nokia N95
    By aragsm in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 5
    Last Post: 2008-03-14, 09:49

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved