SymbianOSBasicsLab.cpp
上传用户:laixiong
上传日期:2007-03-11
资源大小:2994k
文件大小:4k
源码类别:

Symbian

开发平台:

C/C++

  1. // SymbianOSBasicsLab.cpp
  2. //
  3. // Copyright (c) 2003 Nokia Ltd.  All rights reserved.
  4. #include <e32cons.h>
  5. // Function prototype
  6. LOCAL_C void UseBasicTypesL();
  7. //////////////////////////////////////////////////////////////////////////////
  8. //
  9. // Main function called by E32
  10. //
  11. //////////////////////////////////////////////////////////////////////////////
  12. GLDEF_C TInt E32Main()
  13.     {
  14.     // Catch any Leaves thrown 
  15.     TRAPD(error, UseBasicTypesL());
  16. _LIT(KMsgPanic,"Error in Symbian OS Basics Lab: ");
  17. __ASSERT_ALWAYS(!error, User::Panic(KMsgPanic, error));
  18. return 0;
  19.     }
  20. //////////////////////////////////////////////////////////////////////////////
  21. //
  22. //
  23. //
  24. //////////////////////////////////////////////////////////////////////////////
  25. LOCAL_C void UseBasicTypesL() 
  26.     {
  27.     // Constant text used for the console app title 
  28. _LIT(KLabTitle,"Symbian OS Basics Lab");
  29.     
  30.     //
  31.     // 'C' class usage:
  32.     //
  33.     // CConsoleBase derives from CBase and so should be declared on the heap
  34.     // Console::NewL is a special way of doing this we will cover in the 
  35.     // Memory and Resource Management lesson
  36.     CConsoleBase* console = Console::NewL(KLabTitle, TSize(KConsFullScreen, KConsFullScreen));
  37.     //
  38.     // TInt usage
  39.     //
  40.     const TInt KOne = 1;
  41.     const TInt KTwo = 2;
  42.     // Edit 1: On the line below, declare a TInt called <sum> that adds KOne and KTwo
  43.     _LIT(KSumOutput, "%d + %d is %dn");
  44.     // Edit 2: Uncomment the next line that prints the variables to the screen
  45.     // console->Printf(KSumOutput, KOne, KTwo, sum);
  46.     _LIT(KMaxIntOutput, "TInt max: %dn");
  47.     console->Printf(KMaxIntOutput, KMaxTInt);
  48.     _LIT(KMinIntOutput, "TInt min: %dn");
  49.     console->Printf(KMinIntOutput, KMinTInt);
  50.     //
  51.     // TBool usage
  52.     //
  53.     // Edit 3: Declare a TBool called <flag> and initialize to EFalse
  54.     // Edit 4: Uncomment the next 5 lines
  55.     // if (!flag)
  56.     //     {
  57.     //     _LIT(KFlagFalse, "flag is EFalsen");
  58.     //     console->Printf(KFlagFalse);
  59.     //     }
  60.     // Edit 5: Toggle the value of <flag>
  61.     // Edit 6: Uncomment the next 5 lines    
  62.     // if (flag)
  63.     //     {
  64.     //     _LIT(KFlagTrue, "flag is ETruen");
  65.     //     console->Printf(KFlagTrue);
  66.     //     }
  67.     //
  68.     // enum (TKeyCode) and TText usage
  69.     //
  70.     _LIT(KEnterSpace, "Press space to start timern");
  71.     console->Printf(KEnterSpace);
  72.     // Look at key input
  73.     TKeyCode key = console->Getch();
  74.     while (EKeySpace != key)
  75.         {
  76.         _LIT(KCharVal, "Char entered is '%c'n");
  77.         // Edit 7: Delcare a TText called <keyVal> and set it to <key>.
  78.         
  79.         // Edit 8: Uncomment the next line
  80.         // console->Printf(KCharVal, keyVal);
  81.         key = console->Getch();
  82.         }
  83.     //
  84.     // 'R' class usage
  85.     //
  86.     RTimer timer;
  87.     if (KErrNone == timer.CreateLocal())
  88.         {
  89.         TRequestStatus status; // tracks the status of the request
  90.         const TTimeIntervalMicroSeconds32 KTimerInterval = 5000000;
  91.     
  92.         // Edit 9: Uncomment next line to request timeout of 
  93.         //          KTimerInterval micro seconds
  94.         // timer.After(status, KTimerInterval); 
  95.         // Edit 10: Uncomment next line to wait synchronously 
  96.         //          for the timer to complete.
  97.         // User::WaitForRequest(status);
  98.         // Edit 11: Uncomment the next 2 lines that print to the screen
  99.         // _LIT(KTimerComplete, "Timer completed after %d micro secsn");
  100.         // console->Printf(KTimerComplete, KTimerInterval );
  101.         }
  102.     else
  103.         {
  104.         _LIT(KTimerError, "Error creating timern");
  105.         console->Printf(KTimerError);
  106.         }
  107.     timer.Close();
  108.     // Continue
  109. _LIT(KMsgPressAnyKey,"Press any key to end");
  110. console->Printf(KMsgPressAnyKey);
  111. console->Getch();
  112.     
  113.     delete console;
  114.     }