This page was last modified 21:14, 26 October 2007.
Criando uma UI S60 para um componente Open C
From Forum Nokia Wiki
Original: Creating a S60 UI to an existing Open C component
Contents |
Introdução
Este artigo discute quais as opções existentes e como criar um interface de usuário S60 para um componente Open C. Duas aplicações de linha de comando para desktop, Potrace e MkBitmap, são usadas como exemplo (Portando a aplicação desktop Potrace para S60 usando Open C).
Criando o esqueleto da aplicação
A maneira mais fácil para criar uma UI é usando o wizard que vem com o Carbide C++. Este exemplo foi feito usando a versão gratuita Carbide C++ v1.2 Express.
O tipo de aplicação é S60 3rd Ed. GUI Application
O UID 0xA0002AD9 da aplicação foi solicitado a Symbian. A ferramenta mostra um alerta pois o UID verdadeiro é usado em vez de um UID de teste.
A estrutura de diretório da aplicação
Adicionand uma interface ao componente Open C
O wizard cria uma cópia da aplicação HelloWorldBasic. Os nomes de classes e UID são as únicas coisas diferentes.
Função original
// -----------------------------------------------------------------------------
// COpenCUIExampleAppUi::HandleCommandL()
// Cuida da manipulação da linha de comando.
// -----------------------------------------------------------------------------
//
void COpenCUIExampleAppUi::HandleCommandL( TInt aCommand )
{
switch( aCommand )
{
case EEikCmdExit:
case EAknSoftkeyExit:
Exit();
break;
case ECommand1:
{
// Carrega uma string arquivo e mostra ela
HBufC* textResource = StringLoader::LoadLC( R_COMMAND1_TEXT );
CAknInformationNote* informationNote;
informationNote = new ( ELeave ) CAknInformationNote;
// Mostra a nota de informação com
// textResource carregada com StringLoader.
informationNote->ExecuteLD( *textResource );
// Pop HBuf da CleanUpStack e destrói.
CleanupStack::PopAndDestroy( textResource );
}
break;
case ECommand2:
{
RFs fsSession;
RFile rFile;
// Conecta processo cliente ao servidor de arquivos
User::LeaveIfError(fsSession.Connect());
CleanupClosePushL(fsSession);
// Abre arquivo com stream de texto
User::LeaveIfError(rFile.Open(fsSession,KFileName, EFileStreamText));//EFileShareReadersOnly));// EFileStreamText));
CleanupClosePushL(rFile);
// copia stream do arquivo para objeto RFileStream
RFileReadStream inputFileStream(rFile);
CleanupClosePushL(inputFileStream);
// descritor HBufC é criado do objeto RFileStream.
HBufC* fileData = HBufC::NewLC(inputFileStream, 32);
CAknInformationNote* informationNote;
informationNote = new ( ELeave ) CAknInformationNote;
// Mostra a informationNote
informationNote->ExecuteLD( *fileData);
// Pop recursos carregado da cleanup stack
CleanupStack::PopAndDestroy(4); // filedata, inputFileStream, rFile, fsSession
fsSession.Close();
}
break;
case EHelp:
{
CArrayFix<TCoeHelpContext>* buf = CCoeAppUi::AppHelpContextL();
HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(), buf);
}
break;
case EAbout:
{
CAknMessageQueryDialog* dlg = new (ELeave)CAknMessageQueryDialog();
dlg->PrepareLC(R_ABOUT_QUERY_DIALOG);
HBufC* title = iEikonEnv->AllocReadResourceLC(R_ABOUT_DIALOG_TITLE);
dlg->QueryHeading()->SetTextL(*title);
CleanupStack::PopAndDestroy(); //title
HBufC* msg = iEikonEnv->AllocReadResourceLC(R_ABOUT_DIALOG_TEXT);
dlg->SetMessageTextL(*msg);
CleanupStack::PopAndDestroy(); //msg
dlg->RunLD();
}
break;
default:
Panic( EOpenCUIExampleUi );
break;
}
}
Passando dados entre processos
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Why can't my mp3 file be found when my problem runs on S60 Fp1 and S60 Fp2 emulator? | Casper1314 | Symbian Media (Graphics & Sounds) | 5 | 2008-03-17 05:09 |
| How to switch to new s60 "Web" browser from another app? | hiroshit | General Browsing | 3 | 2006-08-30 19:11 |
| CMdaAudioInputStream shared threads problem | noam segal | Symbian Media (Graphics & Sounds) | 6 | 2007-09-29 20:16 |
| app doent start in emulator | abhinav_gud | General Symbian C++ | 9 | 2007-11-26 08:58 |
| the diferent fields of a new program | olfasupcom | General Symbian C++ | 2 | 2007-04-24 07:42 |



