フルスクリーン化でまたもや問題発生。

PocketPC 2003からOSの機能として画面の縦長・横長を切り替えられる(回転する)ようになっているわけですが、縦長向けにデザインしたダイアログを横長画面で表示したときに、ダイアログ下部のコントロールが見えなくなることを防ぐために、OSが場合によって縦スクロールバーを出すみたいなんです。

http://msdn.microsoft.com/ja-jp/library/cc825750.aspx
レガシ アプリケーションの動作

そうした機能自体は良いと思うのですが、これがフルスクリーンアプリで横画面モード時、画面の一番下の方に何かウィンドウがあると(画面からはみだしていないのにも関わらず)縦スクロールバーが出てしまうという副作用があるのです(OSはアプリがフルスクリーンか否かに関係なく、特定の座標以下にウィンドウがあったらスクロールバーを出す仕組みになっているぽい)。

最初の内はスクロールバーが表示されたのを感知してShowScrollBar(SB_BOTH, FALSE);を呼び出していたのですが、一瞬スクロールバーが見えるので美しくないんです。

なんとかならないかといろいろ実験しているうちに、ダイアログにタブコントロールを置いておくと、縦スクロールバーが何故か出ないことを偶然にも発見(^ー^;;

非表示・無効状態でも大丈夫みたいなので、とりあえずこれで回避していますorz

 知り合いのドッターさんからPDAを譲っていただきまして、せっかくなのでEDGE Pocketを作り直そうと、いろいろ技術的な実験を行っています。

前作はW-ZERO3用でしたのでWindows Mobile 5が動作環境でしたが、これといってWM5の機能を使っているわけではありませんし今回は2003 SE以降を動作環境にしようと思っています。

ところがいきなりフルスクリーン化でつまずきましたorz
フルスクリーン化そのものは実現出来るのですが、

  • MessageBox APIを使ってメッセージボックスから制御が帰ってきた時
  • 呼び出したモーダルダイアログから制御が帰ってきた時

に、フルスクリーン化が勝手に解除されてしまうんです。

なので、とりあえず上記のタイミングで再度フルスクリーン化を行う処置でなんとかしているのですが、一瞬タスクバーなどが見えてしまって美しく無いんです。

もし解決方法をご存じの方が偶然見ていらっしゃいましたらご連絡をお願いいたしますm(_ _)m

ちなみに検索すると同じような悩みを持った書き込みがあったり(でも未解決)、他のフルスクリーンアプリの挙動を見ても、やはりメッセージボックス表示後に一瞬タスクバーが見えたりしますので、一般的な方法では解決できないんだろうなぁとは予想しています。

モーダルダイアログやメッセージボックスの使用を極力避けるしか無いのかもしれません(モードレスダイアログでなんとかする)。

とある方からW-ZERO3で動作するドット絵エディタの制作依頼を受けておりまして、2月ぐらいからちょくちょく制作していたのですが、私の下手な時間配分と、依頼された方の忙しさが重なって、しばらく開発がストップしていました。

とは言え編集から保存まで最低限の事は出来るようになっていますので、
いったん公開しておこうと思います。

Windows Mobileを使っている方は試してみてください。

ちなみにフリーソフトです。

ダウンロード:edgepocket_050.ZIP (218K)

次の環境で動作を確認しています。

  • Windows Mobile 5.0エミュレータ
  • W-ZERO3(SHARP)

私が実機を持っていないというのが痛いです^^;;
ちゃんと動いているのかあやしいです。

動作環境も、Windows Mobile 5.0でしたら間違いないと思いますが、それ以前のバージョンで動くのかは解りません。
(試してみてください^^;)

ペンでキャンバスをタッチすると絵が描けます。
絵を長く押すと、その部分の色を描画色へ拾います。
右下の描画色部分をタッチすると、パレットが出ます。
*レイヤにはまだ対応していません。

あとはいろいろ試してみてください(^^;

まだまだ開発途中ではありますが、あまりたくさん機能は付けないつもりです。

Visual Studio 2005で開発しているのですが、エミュレータの動作速度(&転送速度)が遅いのと、自分で動作チェックが出来ないがために(実機を持ってないので)、開発は難航しています_| ̄|○ ・・・。
(平行していろいろやっているせいでもありますがw)

記事検索

アーカイブ