Windows Mobileにおける慣性リストビューの試み                              作成 2009/11/24 LIUNQA                              作成 2009/12/16 LIUNQA 1.はじめに  最近はフリック操作が一般的になってきました。Windows Mobile(今後はWindows Phone、 以後WM) 6.5でも標準でサポートされるようになり、以前のバージョンのOS用に作成した プログラムでもList-Viewコントロールなどはフリック操作をすると慣性スクロールしま す。  しかし、これはあくまでWM 6.5からで、それ以前のバージョンでは対応していません。 また、WM 6.5であってもすべてのコントロールが慣性スクロールに対応しているか不明で す。  そこで、役に立つかわかりませんが慣性スクロールするList-View(というより List Boxesに近いですが)のウィンドウクラスを作成してみました。 2.ファイル構成  ファイルは2種類あります。ソースおよび実行ファイルを含む圧縮ファイル(以下の (1))。もうひとつはデバイスへ実行ファイルをインストールして動作を見るファイル (以下の(2))です。(2)は実行ファイルのみでソースは含まれませんので、ソースが 必要な方は(1)のファイルを参照ください。 (1)ソースおよび実行ファイル  圧縮ファイルの内容を以下に示します。詳細は別の機会にいたします。  ILPx***a.zip   +--src ・・・ ソースのフォルダ   | +--InertListView.h ・・・ 慣性list-viewの本体   | +--ILVItemList.h ・・・ 慣性list-viewから利用する項目リスト   | +--TimeDlg.h ・・・ 時刻設定ダイアログの例   | +--tryflick.sln ・・・    | +--tryflick.vcproj ・・・    | |   | +--ilview ・・・ 例1(基本機能)のソース   | | +--ilview.cpp ・・・    | | +--ilview.h ・・・    | | +--ilview.ico ・・・    | | +--ilview.vcproj ・・・    | | +--ilviewppc.rc ・・・    | | +--ilviewppc.rc2 ・・・    | | +--resourceppc.h ・・・    | | +--stdafx.cpp ・・・    | | +--stdafx.h ・・・    | |   | +--iledit ・・・ 例2(編集機能あり)のソース   | +--AboutDlg.h ・・・    | +--EditDlg.h ・・・    | +--iledit.cpp ・・・    | +--iledit.h ・・・    | +--iledit.ico ・・・    | +--iledit.vcproj ・・・    | +--ileditppc.rc ・・・    | +--ileditppc.rc2 ・・・    | +--resourceppc.h ・・・    | +--stdafx.cpp ・・・    | +--stdafx.h ・・・    | +--UserItemList.h ・・・ 拡張した項目リストのソース   |   +--bin ・・・ 実行ファイルのフォルダ   | +--ppc2003 ・・・ PPC2003版   | | +--iledit.exe ・・・ 例1の実行ファイル   | | +--ilview.exe ・・・ 例2の実行ファイル   | |   | +--wm5 ・・・ Windows Mobile 5.0版   | | +--iledit.exe ・・・ 例1の実行ファイル   | | +--ilview.exe ・・・ 例2の実行ファイル   | |   | +--wm6 ・・・ Windows Mobile 6.0版   | +--iledit.exe ・・・ 例1の実行ファイル   | +--ilview.exe ・・・ 例2の実行ファイル   |   +--ILV Reference.txt ・・・ ILVのリファレンス(関数仕様)   +--readme.txt ・・・ このドキュメント (2)実行ファイルのみ  こちらはデバイスで動作を見るためのファイルです。ILP****a.cabファイルをデバイス へコピーしてインストールします。ソースは含みません。  アプリケーションインストールフォルダ  (デフォルトは"\Program Files\tryflick")   iledit.exe ・・・ 例1の実行ファイル   ilview.exe ・・・ 例2の実行ファイル   ILV Reference.txt ・・・ 仕様書   readme.txt ・・・ このテキストファイル 3.仕様  慣性リストビューの本体は2.のInertListView.hとILVItemList.hです。通常このセッ トで使用します。InertListView.hは描画部分、ILVItemList.hは項目リスト(データ管理) を担っています。  詳細なドキュメントに関しては2.にある ILV Reference.txt を参照ください。  なお、圧縮ファイルの中に使用例を2つ入れましたので、こちらも参考にしてください。 例1)  src\ilviewが例1で基本機能のみを利用した例です。タップすると、その項目の高さが 切り替わります。メニューのループによりリストがループするかを指定します。 例2)  src\ileditが編集機能および時刻指定の機能を持たせた例です。タップ&ホールドで個々 の項目の編集を行うことができます。タップだけだと例1同様に項目の高さの切り替えの みです。  項目の編集中に時刻をタップすると時刻ダイアログを表示します。  なお、個々の項目の編集するダイアログに関してはアプリケーション側で実装していま す。 4.注意事項 (1)本ソースですが、まだまだ動作、機能ともに不十分な状態です。某携帯電話/ミュー   ジックプレーヤーと比べるべくもありませんが、まずは現時点の内容で公開しておき   ます。 (2)まだ、開発途上であるため、今後仕様が変更になる可能性があります。 (3)ソースは整形していないので、コメントアウトしてある個所が多数あり見づらいか   もしれませんがご容赦ください。 (4)ソースは5.のとおりNYSLライセンスに準拠して公開しますので使えそうだと思っ   た方は自由に利用してください。 5.利用規約について  本ソースは"NYSL Version 0.9982"に準拠し、以下のとおり公開いたします。 -------------------------------------------------------------------------------- A. 本ソフトウェアは Everyone'sWare です。このソフトを手にした一人一人が、 ご自分の作ったものを扱うのと同じように、自由に利用することが出来ます。 A-1. フリーウェアです。作者(LIUNQA)からは使用料等を要求しません。 A-2. 有料無料や媒体の如何を問わず、自由に転載・再配布できます。 A-3. いかなる種類の 改変・他プログラムでの利用を行っても構いません。 A-4. 変更したものや部分的に使用したものは、あなたのものになります。 公開する場合は、あなたの名前の下で行って下さい。 B. このソフトを利用することによって生じた損害等について、作者は 責任を負わないものとします。各自の責任においてご利用下さい。 C. 著作者人格権は LIUNQA に帰属します。著作権は放棄します。 D. 以上の3項は、ソース・実行バイナリの双方に適用されます。 -------------------------------------------------------------------------------- ※NYSLに関しては以下のURLを参照ください。 http://www.kmonos.net/nysl/ 6.おわりに  最初に書いたとおりWM 6.5であれば、このソースを使用しなくとも慣性スクロールは実 現できるかもしれません。少し調べてみたのですがList-Viewではできるのですが、 List Boxesではできないようなので公開しておきます。少なくとも標準のList-Viewや List Boxesではループ上にスクロールすることはできないではないかと思います。  ただ、実際には自分で作成できないかというのと、例2のようなUIを実現してみたくて 作成してみましたが何かの役に立てばと思います。  作者はWin32に関して深い知識を持っているわけではないので、ソース中おかしな個所 があるかもしれませんがご容赦ください。  本ソースはNYSLライセンスにて公開していますが、もし、このソースを利用された場合、 よろしければ一報いただけるとうれしく思います。 変更履歴 2009/12/16 ・リファレンス(関数仕様)を追加。 ・一部メッセージの見直し、エラー処理の強化など。 2009/11/24  初版公開 −以上−