スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ブログランキング・にほんブログ村へ

--.--.-- | スポンサー広告

Windows Mobile プログラミング #10 Todayプラグイン

時刻表読み込み・表示部分がJNTrainWMから流用できるにもかかわらず、JNTrain for Todayはなかなか開発が進んでません。orz

 まぁ、それでも表示系の組み方が何となくわかってきた今日この頃。表示更新処理がちょっとまずかった分がありますので、そこだけでも近々公開するかもです。

 まぁ、そんなこんなで、todayプラグインの開発覚書です。


WndProcでハンドリングするメッセージについて

WM_TODAYCUSTOM_QUERYREFRESHCACHE
 メッセージ名称にはリフレッシュとあるので、Todayアイテムの再描画要求なんだろうけど、いつ呼ばれるかどうかが余り判明していない。自アプリにフォーカスがあたったとき、一定間隔なんだろうけど。
 JNTrain for Today 1.04betaのときは勘違いしていて、通常の更新もこのメッセージに対しての復帰値をTRUEにしていた。これは誤りで、Today画面全体の再描画要求が必要な際にTRUE(具体的にはTodayアイテムの高さ調整が必要な時のみ)を返す。
 TRUEを返すと、WM_ERASEBKGND、WM_PAINTが発行されて自Todayアイテムの画面更新を行うことができるが、そういう用途に使用すると他のアプリも再描画がかかってしまうのでちらついてしまう。
 自アイテムの更新は、以下のコードでWM_ERASEBKGND & WM_PAINTを発行させるか、自アプリ領域を自前で書き換えるかで行う。

    InvalidateRect(hWnd,NULL,TRUE);
    UpdateWindow(hWnd);


WM_ERASEBKGND
 背景消去の要求メッセージ。
 これを受け取った場合、何らかの処理で背景をクリアしなければならない。これをしておかないと他のアプリ(非Todayアプリ)からTodayを表示した際に、前のアプリの画面が残ってしまう。

 一般的には以下のコードで、壁紙をそのまま表示する模様
    TODAYDRAWWATERMARKINFO dwi;
    dwi.hdc = (HDC)wParam;
    GetClientRect(hwnd, &dwi.rc);

    dwi.hwnd = hwnd;
    SendMessage(GetParent(hwnd), TODAYM_DRAWWATERMARK, 0,(LPARAM)&dwi);
    return TRUE;

WM_PAINT
 通常のWindowsアプリ作成時にもお馴染みなメッセージ。
 このイベント発生時に、BeginPaint~EndPaintでデバイスコンテキストを取得して、後はそのDCに対して描画するだけ。
 GetDC~ReleaseDCを使用すると描画内容によっては、WM_ERASEBKGNDが発生してしまいせっかく描画した内容が消されてしまうので注意!

WM_TODAYCUSTOM_CLEARCACHE
 WindowsMobileプログラミング徹底研究(以下、徹底研究と略)を読んだときは、終了時に呼ばれて確保したメモリの開放等を行うためのものと解釈してしまった。
 どうやら、最初と最後に呼ばれるらしい。つまり、アプリ起動中にたまっていったデータを一旦初期状態にするもの、と、捕らえた方が良いのかな?

 始め、Todayアプリ終了時に呼ばれるものと思い、作成したクラスの解放をコーディングしていたら、しょっぱなから呼ばれて、クラスが使用できなくなってはまりました。

テーマ:SoftBank(ソフトバンクモバイル) - ジャンル:携帯電話・PHS

ブログランキング・にほんブログ村へ

2008.06.25 | Comments(0) | Trackback(0) | Mobile プログラミング

コメント

コメントの投稿


秘密にする

«  | HOME |  »

FC2Ad

08 | 2017/09 [GO]| 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

最近の記事一覧 カテゴリ一覧 コメント一覧 トラックバック一覧 プロフィール リンク一覧
[カテゴリ]
WEBコンサルティング・ホームページ制作のバンブーウエイブ

ブログ内検索

ブロとも申請フォーム

この人とブロともになる

カスタム検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。