×

Discussion Board

Results 1 to 7 of 7
  1. #1
    Registered User
    Join Date
    Nov 2007
    Posts
    45

    How to make a full-screen application using Symbian C++

    Прочитал с википедии как сделать приложение во весь экран. Только что-то не выходит. При нажатии софтовых клавишь всё возвращается на свои места. еще тут:
    Code:
    iVectorContainer = CVectorContainer::NewL( ClientRect(), NULL, this );
    Не получается вместо ClientRect() поставить ApplicationRect(), вроде где-то читал, что так можно было еще.

    Короче, давайте по-русски расскажем как сделать приложуху на весь экран ? И выложим в википедии. Мне надо, чтобы в меню при выборе пункта, или при нажатии кнопки какой-либо, приложение переходило в полноэкранный режим и наоборот.
    Спасибо за внимание

  2. #2
    Regular Contributor
    Join Date
    Sep 2003
    Posts
    134

    Re: How to make a full-screen application using Symbian C++

    1) TRect theRect = CEikonEnv::Static()->ScreenDevice()->SizeInPixels();
    2) SetExtentToWholeScreen();

  3. #3
    Nokia Developer Champion
    Join Date
    Mar 2004
    Location
    Czech Republic
    Posts
    2,037

    Re: How to make a full-screen application using Symbian C++

    Hi,

    try somethign like this:

    Code:
    CWsScreenDevice* screen_device = CEikonEnv::Static()->ScreenDevice();
    TInt mode = screen_device->CurrentScreenMode();
    TPixelsAndRotation pixels_and_rotation;
    screen_device->GetScreenModeSizeAndRotation(mode, pixels_and_rotation );
    	
    TRect rect;
    rect.SetWidth( pixels_and_rotation.iPixelSize.iWidth );
    rect.SetHeight( pixels_and_rotation.iPixelSize.iHeight );
    SetRect( rect );
    STeN

  4. #4
    Nokia Developer Champion
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536

    Re: How to make a full-screen application using Symbian C++

    midday

    Как уже было сказано, AppView::ConstructL() должен выглядеть, например, так:

    Code:
       CreateWindowL();
    	
       // Set the windows size
       SetExtentToWholeScreen();
    
       // Activate the window, which makes it ready to be drawn
       ActivateL();
    Еще нужен метод AppView::HandleResourceChange(TInt aType), чтобы динамическое изменение ориентации экрана учесть:
    Code:
       CCoeControl::HandleResourceChange(aType);	
       if( aType == KEikDynamicLayoutVariantSwitch )
          SetExtentToWholeScreen();
    SetExtentToWholeScreen() приводит к вызову SizeChanged(), в этом методе достаточно вызвать DrawDeferred().

    Ну и метод Draw( const TRect& aRect ) const тоже бы надо реализовать, например, так:
    Code:
       CWindowGc& gc = SystemGc();
       gc.Clear( Rect() );

    Кстати, в статье wiki правильно сказано, что если при такой реализации использовать поддержку тем, то задний фон будет отрисовываться коряво. Кто-нибудь пробовал использовать поддержку тем в полноэкранном приложении ?

  5. #5
    Regular Contributor
    Join Date
    Sep 2003
    Posts
    134

    Re: How to make a full-screen application using Symbian C++

    Да я использую темы у себя в аквакалендаре в обоих режимах и на полный экран и так. Правда беру с Idle.

    CAknsBasicBackgroundControlContext::NewL(KAknsIIDQsnBgScreenIdle, theSize , ETrue);

    А размер экрана так:

    TRect theViewRect = iEikonEnv->ScreenDevice()->SizeInPixels();

    if(!LafSettings()->IsFullScreenMode())
    { AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EWallpaperPane,theViewRect);
    }

  6. #6
    Nokia Developer Champion
    Join Date
    Jul 2007
    Location
    Magnitogorsk, Russia
    Posts
    536

    Re: How to make a full-screen application using Symbian C++

    Quote Originally Posted by ValentinK View Post
    Да я использую темы у себя в аквакалендаре в обоих режимах и на полный экран и так. Правда беру с Idle.

    CAknsBasicBackgroundControlContext::NewL(KAknsIIDQsnBgScreenIdle, theSize , ETrue);

    А размер экрана так:

    TRect theViewRect = iEikonEnv->ScreenDevice()->SizeInPixels();

    if(!LafSettings()->IsFullScreenMode())
    { AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EWallpaperPane,theViewRect);
    }
    Статья про поддержку тем в AppView:
    http://wiki.forum.nokia.com/index.ph...ews/Containers.

    Если такой подход применить для полноэкранных AppView, то задний фон, который берется из текущей темы, будет отрисовываться не правильно. Видимо это и имеется ввиду в той статье википедии, о которой пишет midday

  7. #7
    Registered User
    Join Date
    Dec 2007
    Location
    Russia, N.Novgorod
    Posts
    30

    Re: How to make a full-screen application using Symbian C++

    Для UIQ3 могу посоветовать добавить в CQikViewBase::ViewConstructL() вызов CQikViewBase::SetViewMode() вкупе с TQikViewMode::SetFullscreen(). Работает на ура, и как я понял тема пашет по умолчанию.

    ЗЫ: надеюсь названия правильно указал, если что не ругайтесь, по памяти писал...

Similar Threads

  1. Emulator main screen overwrites application screen
    By nguyenhoaiduc in forum Symbian User Interface
    Replies: 4
    Last Post: 2009-02-05, 15:40
  2. Replies: 0
    Last Post: 2005-11-05, 07:16
  3. Current Symbian Development Opportunities...!!
    By mobile2004 in forum Symbian
    Replies: 0
    Last Post: 2005-01-17, 17:58
  4. UI: Full Screen Mode
    By GENERAL_INFO in forum Symbian User Interface
    Replies: 3
    Last Post: 2004-11-22, 06:27
  5. Replies: 0
    Last Post: 2004-05-21, 11:16

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •