2

PocketPC 用のアプリケーションを開発しています。アプリケーションが起動すると、画面を回転させるカスタム関数 SetScreenOrientation(270) が呼び出されます。アプリケーションを閉じると、関数 SetScreenOrientation(0) が呼び出され、画面の向きが復元されます。

この方法では、ユーザーがアプリケーションを最小化した場合に画面の向きが復元されず、これは受け入れられません。

アプリケーションの起動時に画面の向きを設定し、最小化時に向きを復元し、最大化時に向きを設定し、閉じるときに向きを復元するために SetScreenOrientation(int angle) を呼び出す必要がある場所 (どのイベント ハンドラー) を知っている人はいますか?

実際、Minimize および Maximize イベントを処理するイベント ハンドラーはわかりません。

4

4 に答える 4

2

私の Windows CE の経験からすると、WM_SIZEまたはWM_WINDOWPOSCHANGEDメッセージのいずれかを処理する必要があります。PocketPC で作業している場合は、最初に WM_WINDOWPOSCHANGED メッセージを確認することをお勧めします。WM_SIZE に必要な適切なパラメーターがあるかどうかわからないからです。

WM_WINDOWPOSCHANGED メッセージのWINDOWPOS構造体から、フラグ メンバ、特に SWP_SHOWWINDOW と SWP_HIDEWINDOW を調べます。


確認する必要があるメッセージの特定のバージョンは、使用しているオペレーティング システムによって異なります。Pocket PC OS は Windows CE 3.0 (およびそれ以前) で構築されていますが、Windows Mobile は現在 Windows CE 5.0 (Windows Mobile 6 も) で構築されていますが、Windows CE 4 で構築されていました。(出典)

そのため、MSDN の該当するセクションの下で、作成している OS を調べてください。

于 2008-11-14T14:28:15.500 に答える
2

正しいメッセージはWM_SIZEですが、Daeminの回答は間違った WM_SIZE ヘルプ トピックを指しています。wParam を確認します。ウィンドウが最大化されていても隠れている可能性があるので注意してください。

于 2008-11-14T14:40:41.357 に答える
0

プラットフォームによって異なりますが、私は WM_WINDOWPOSCHANGED または OnShow を使用します。それは wm_size ではありません..すべてのプラットフォームで常にスローされるわけではありません。Casio は、予想されるサイズ イベントをスローしません。TDS と Symbol が行います。

MSDN は優れた情報源ですが、すべての OS が同じように作られているわけではないことに注意してください。PPC の世界では、ハードウェア プロバイダーが独自の OS を作成する必要があり、場合によっては見逃したり、わざと無視したりすることがあります。

私はここにプラットフォームを持っています (名前は保護するために差し控えます... まあ私です) 左右のボタンがあります..それらを押すと、VK_LEFT、VK_RIGHT をキャッチできると期待されます..あなたは間違っているでしょう. . あなたは実際に「;」を取得します また ':'。ズボンのキックはどうですか。

于 2008-11-18T05:02:19.057 に答える
0

これらが C++ の世界で何と呼ばれているかはわかりませんが、.NET Compact Framework では、ウィンドウを最小化/最大化すると、アプリケーション フォームの Resize イベントが呼び出され、イベント コードで、ウィンドウの WindowState プロパティをチェックします。最小化または最大化されているかどうかを確認するためのフォーム。

アプリケーション内から PDA の状態を変更することは危険です (ただし、それを行う正当な理由はたくさんあります)。アプリケーションがクラッシュすると、PDA が元の状態のままになるためです。これを効果的に行うための秘訣の 1 つは、WM のタイトル バー (Windows のスタート ボタンのある一番上の行) を非表示にして、毎回一瞬点滅しないようにすることです。新しいフォームを開きます。アプリがクラッシュした場合、デバイスをリセットするまで Windows バーは表示されません。これは良くありません。少なくとも画面の回転を使用すると、ユーザーは手動で復元できます。

于 2008-11-14T14:25:25.507 に答える