Bài 2: Tạo Helloworld applet (BREW)

Cỡ chữ: Decrease font Enlarge font

Bài viết này sẽ hướng dẫn một người mới học BREW viết một ứng dụng nhỏ là hiện chữ Hello World lên màn hình.

Như đã hướng dẫn ở bài trước (tạo BREW project trên VS), để tạo một applet nhỏ như helloworld, chúng ta vẫn làm theo các bước trong đó, nhưng vì chỉ là hiện chữ Hello World lên màn hình nên ta không cần thiết phải import các item include như hướng dẫn (File, Network, database, sound…)

Sau khi tạo xong bằng Wizard Generated, project sẽ được add vào lần lượt là:

  • AEEAppGen.c
  • AEEModGen.c
  • HelloWorld.c

File generated bằng BREW Application Wizard

HIện tại bạn chưa cần hiểu file AEEModGen.c nhưng nên nhớ là bạn không được edit file này.

Right-click vào AEEAppGen.c, và trên menu chọn [ the property ]. [ The copy former file property ] dialog [ The file name ] sẽ hiện ra “C:\Program Files\BREW SDK v2.1.1 Ja\src\AEEAppGen.c”, và đây được hiểu là thư mục that installs BREW SDK, Ngoài ra bạn có thể xem nhưng không nên edit khi bạn chưa hiểu rõ cấu trúc. File duy nhất mà bạn cần phải edit chính là file HelloWorld.c. Hãy kick đúp vào để mở file này ra.

Sẽ có khá nhiều dòng comment bằng tiếng Anh, hiện tại tôi đã delete bớt đi cho đỡ vướng mắt. Nếu là người mới, bạn có thể để và xem qua để hiểu chi tiết.

//
//  HelloWorld.c
//
#include "AEEModGen.h"     // 常にインクルードします
#include "AEEAppGen.h"     // 常にインクルードします
#include "AEEShell.h"      // シェル インターフェイス
// 前方宣言
static boolean HelloWorld_HandleEvent(
    IApplet * pi, AEEEvent eCode,
    uint16 wParam, uint32 dwParam);
//
//  ユーザーがアプレットを起動要求したときに、呼び出されます。
//  開発者は指定されたクラス ID の BREW アプレットを作成して返すことで、
//  BREW アプレットを起動します。
//
int AEEClsCreateInstance(
    AEECLSID ClsId,       // クラス ID
    IShell * pIShell,     // シェル インターフェイス
    IModule * po,         // モジュール インターフェイス
    void ** ppObj)        // 作成したアプレットを返すポインタ
{
    *ppObj = NULL;
    if (ClsId == AEECLSID_HELLOWORLD) {
        if(AEEApplet_New(sizeof(AEEApplet), ClsId, pIShell, po,
            (IApplet**) ppObj, (AEEHANDLER) HelloWorld_HandleEvent, NULL)) {
            return AEE_SUCCESS;
        }
    }
    return EFAILED;
}
//
//  HelloWorld アプレットのイベント ハンドラ
//
static boolean HelloWorld_HandleEvent(
    IApplet * pi,                       // アプレット構造体
    AEEEvent eCode,              // イベントコード
    uint16 wParam,                 // イベント パラメータ (16 ビット)
    uint32 dwParam)            // イベント パラメータ (32 ビット)
{
    switch (eCode)
    {
    case EVT_APP_START:
        // ここにコードを追加します。
        return TRUE;
    case EVT_APP_STOP:
        // ここにコードを追加します。
        return TRUE;
    default:
        break;
    }
    return FALSE;
}

Đoạn code mà BREW wizard generated có 2 function AEEClsCreateInstance()HelloWorld_HandleEvent() cần phải hiểu rõ
AEEClsCreateInstance() là hàm sẽ được call khi mà icon của BREW applet được chọn và bắt đầu chạy (có nghĩa là hàm sẽ được chạy đầu tiên khi chạy chương trình). Trong hàm này, bạn cần phải đặt được data structure body of the BREW applet và return nó.
HelloWorld_HandleEvent() hàm được call khi user ấn các phím trên điện thoại (cellular phone, có thể thấy cái tên nói lên tất cả. Đây là hàm bắt (xử lý) sự kiện. Ví dụ khi bạn bấm nút để Exit chương trình cũng sẽ phải viết trong đây.

Cụ thể, ta sẽ làm như sau:

Event handler:

Mỗi khi người dùng ấn vào key trên phone, và interrupt BREW applet, thì BREW execution environment : HelloWorld_HandleEvent() sẽ được call. Và hàm này được gọi là “Bắt sự kiện”.

//
//  イベント ハンドラ
//
static boolean HelloWorld_HandleEvent(
    IApplet * pi,       // アプレット
    AEEEvent eCode,     // イベントコード
    uint16 wParam,      // イベント パラメータ (16ビット)
    uint32 dwParam)     // イベント パラメータ (32ビット)
{
    switch (eCode)
    {
    case EVT_APP_START:
        // ここにコードを追加します。
        HelloWorld_OnAppStart((AEEApplet*) pi);
        return TRUE;
    case EVT_APP_STOP:
       // ここにコードを追加します。
        return TRUE;
    default:
        break;
    }
    return FALSE;
}
//
//  アプレットが開始したときに呼び出される。
//
static void HelloWorld_OnAppStart(AEEApplet* app)
{
    AECHAR text[] = {'H','e','l','l','o',' ','W','o', 'r', 'l', 'd', '\0'};
    // 画面ビットマップに文字列を表示する
    IDISPLAY_DrawText(app->m_pIDisplay,
        AEE_FONT_BOLD,    // 太字のフォント
        text,             // 表示する文字列
        -1,               // -1 = 文字列をすべて表示する
        0,                // 無視される
        0,                // 無視される
        NULL,             // クリッピングしない
        IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);   // 左右中央揃え、上下中央揃え
    // 更新された画面ビットマップを表示する
    IDISPLAY_Update (app->m_pIDisplay);
}

Có thể thấy sự kiện (event) EVT_APP_START là khi app bắt đầu chạy và EVT_APP_STOP là khi app kết thúc.

Tạm thời thế đã, các bạn tự tìm hiểu tiếp. Giờ phải xem Inter vs MU đã. Hehe

Tags:

Add to: Add to your del.icio.us Digg this story Add to your Twitter Add to your Google Bookmark Add to your Facebook Add to your MySpace
Số lượt xem: 2017

[...] Some keyword in BREW [...]

Gửi nhận xét:comment

 *
 *