電子書籍の厳選無料作品が豊富!

開発環境:Visual Studio 2008 SP1
OS:Windows XP SP3

Windows Mobile(以下WM)向けのダイアログアプリケーションの開発をはじめたのですが、
ダイアログ表示時のスクロール処理について不明な点がございます。


WM上では基本的にフルスクリーンでダイアログが表示されるようですが、配置するコントロールの
種類や数によっては、フルスクリーンのサイズでは納まらず、ダイアログを縦長にデザインしたい
などといった状況が多々あります。

単純に上記のようなダイアログを作成して実行してみましたが、OS側がダイアログ上にスクロールバーを
表示してくれて、それを使うことでスクロール表示が行えるというわけではないようでした。
(たとえばダイアログ下部にボタンコントロールを配置してあっても、画面上に表示できない状態)

ダイアログのプロパティに「Vertical Scrollbar」や「Horizontal Scrollbar」という項目があり、これを
有効にした上でイベントを使用すればスクロールされている位置情報などが取得できることまでは調べたのですが、
目的である「画面表示外となっている部分を表示する方法」がわかりませんでした。

そもそもWMの開発方法として考え方が誤っているのかもしれませんが、
このような状況に対応する方法をご存知の方がいらっしゃいましたらご教示頂けませんでしょうか?

A 回答 (1件)

 こんにちは。


 Windows Mobile6.1は分からないのですが、例えばwin32APIでダイアログの表面をスクロールさせるには、

 //http://msdn.microsoft.com/ja-jp/library/cc411017 …
 ::ScrollWindowEx(hWnd, 0, -y, 0, 0, 0, 0, SW_SCROLLCHILDREN | SW_INVALIDATE);

 で出来ませんか。
 ※-yは上に送りたい量。例えば40上に送りたければ-40。

この回答への補足

しばらくWeb等で方法を調べてみましたが、結局上記の関数を使って
自前で機能を実装するしかないようでした。
ご回答ありがとうございました。

補足日時:2009/04/15 13:16
    • good
    • 0
この回答へのお礼

>>machongola様

早速のご回答ありがとうございます。
上記の関数を試してみたところ、ひとまず無事にスクロールさせることができました。

ただスクロールバーから取得できるのが位置情報(例えば0~100)なのに対して、
ScrollWindowEx()には移動量を指定するとのことなので、
意外に手間がかかるような気が致します。

ごく普通の動作であり、比較的要望を多そうなのですがこの他にも方法がございませんでしょうか?
ご存知の方がいらっしゃいましたら引き続きご回答のほどよろしくお願い致します。

お礼日時:2009/04/10 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!