2011-12-31 16 views
1

私は今Windows7(実際にはVistaだが、Windows7では同じことをする)でテストしているXPアプリ(win32 C++)を持っている。Windows7/VistaでXPのスクロールバーが動く

私が遭遇してる事実上、唯一の問題は、以下であることを驚いている:複雑なmodellessダイアログのスクロールバーの

どれも正しく機能していません。主な問題は、スクロールサムが応答していないことです。移動しようとすると固定されたままです。 win98、win2000、winxpに問題はありませんでした。ただウィンドウズ7/Vistaで今すぐ

しかし、このダイアログのスクロールバーには、それを説明する共通点はありません。一つはリソースファイルを通して作成されたプレーンなリッチテキストコントロールです。別のものは、CreateWindowによって作成されたリッチテキストです。それでも、第3のスクロールバーはカスタムウィンドウクラスにあります。いずれも正しく動作していません(右クリックして「スクロール」を選択してもスクロールできます)。

Windows7/Vistaに最初に移植すると、時間は、私は今Googleで何も見つけていないよ。

+1

いいえ、私は以前これを見たことがありません。あなたはスクロールバーのカスタマイズをしていますか?あなたは別のプロジェクトでこれを再現できますか? –

+1

ここに同じ問題を抱えている誰かがいるので、私は最初ではありません:http://stackoverflow.com/questions/7171412/windows-7-edit-control-vertical-scroll-does-not-workしかし、私が親を特定しているように、コントロールが親を持っていることを確認するためにそこに用意されている解決策は、私のコードでは問題ではありません(とにかく、CreateWindowを使うとき)。 – Mark

+0

カスタマイズする限り、私はShowScrollBar、EnableScrollBar、およびSetScrollInfoを作成後に呼び出します。しかし、私が言うように、これはすべての以前のバージョンのWindowsでは問題なく動作します。ちょうどVista、Windows 7は奇妙なことをやっている。 – Mark

答えて

1

モードレスダイアログでは、メインアプリケーションのGetMessageループでIsDialogMessageを実行する必要があります。モードレスダイアログのメッセージはTranslateMessageとDispatchMessageの対象にはなりません。だから私はこれまでこれをやっていた。しかし、Vista/Win7ではWM_MOUSEMOVEが好きではなく、WM_LBUTTONDOWNとWM_LBUTTONUPはダイアログのようにバイパスされます(つまり、メインのAppメッセージループにとどまる必要があります)。少なくとも私の場合はこれが問題でした。メインメッセージループのメッセージタイプをチェックし、それが私の問題を解決しました。それは必ずしも説明できません。また、なぜこれまでに誰にも遭遇しなかった理由を説明できませんでした(私が推測している私の設定のいくつかの特質かもしれません)。これを見ている人のための感謝。

関連する問題