跳轉到內容

Symbian/S60

來自華夏公益教科書,自由的教科書,構建自由的世界
諾基亞 7650,一款 S60 裝置。

諾基亞的 S60,以前稱為 Series 60,是一個基於 Symbian OS 的移動平臺。S60 包含各種功能的手機。大多數這些手機是由諾基亞製造的,但 S60 也授權給一些其他手機制造商,如松下和三星。有關 S60 的一般資訊,請參見維基百科上的文章.

該平臺包含各種庫和預裝應用程式。平臺是開放的(但不是開源的),因此第三方可以為其開發應用程式。諾基亞為 S60 提供軟體開發工具包,可以在諾基亞論壇找到 SDK 列表。特別是如果您計劃使用更新的 SDK,您將需要Carbide.vs.

技巧集合

[編輯 | 編輯原始碼]

S60 資源定義有時可能很繁瑣,因為完全缺乏適當的文件。尋找有關資源定義資訊的最佳位置是示例,位於 SDK 的 Series60Ex 目錄中,但它們也不盡完美。

  • CAknMessageQueryDialog

某些 SDK 版本的示例中完全缺少一個控制元件,即 CAknMessageQueryDialog,它實際上非常有用,一旦您知道如何使用,就非常容易使用。以下是定義此控制元件的工作資源的方法

RESOURCE DIALOG r_messagequery_dlg
  {
  flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
  buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
  items=
    {
    DLG_LINE
      {
      type = EAknCtPopupHeadingPane;
      id = EAknMessageQueryHeaderId;
      control = AVKON_HEADING
        {
        label = "The Heading";
        };
      },
    DLG_LINE
      {
      type = EAknCtMessageQuery;
      id = EAknMessageQueryContentId;
      control = AVKON_MESSAGE_QUERY
        {
        message = "The Actual Text";
        };
      }
    };
  }

請注意,標題和訊息文字都可以從程式碼中動態設定。但是,以下程式碼使用資源中給定的值

CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog;
dlg->ExecuteLD( R_MESSAGEQUERY_DLG );

至少在兩部手機上,對舊版 RCameraServ 的支援已被刪除。如果您將您的應用程式連結到 cameraserver.lib,它將不會在 3230 或 6260 上啟動。相反,您應該使用新的 CCamera 類。

CFbsBitmap

[編輯 | 編輯原始碼]
  • 透明度

在使用 6.1 之前的 SDK 時(注意:不確定 9.1 是否仍然存在此問題),將 PNG 的 alpha 通道(蒙版)載入到顏色深度為 EGray16 的 CFbsBitmap 中不起作用。您必須使用顏色深度為 EGray256 的蒙版,否則 MiuoConvertComplete 將始終返回錯誤。轉換完成後,您可以轉換回 EGray16。

  • DataAddress()

在新的 9.1 SDK 上,如果未在之前呼叫 LockHeap(),則呼叫 CFbsBitmap::DataAddress() 會導致崩潰(記住在完成操作後呼叫 UnlockHeap())。

華夏公益教科書