2016-05-06 11 views
0

私はばかげた問題を抱えています。シンプルに聞こえますが、私は数日間それを研究して無駄にしました。従来のリストビューはタッチスクロールしません

私はATL/WTLでファイルを表示するためにリストビューコントロールを使用するプログラムを持っています。ユーザーは、これらのペインがタッチ対応PC上で「パン」ジェスチャーを使用してスクロールしないと訴えています。マウスでスクロールしますが、指ではスクロールしません。

このプログラムは完全に無関係です。それはlegacy behaviorに依存してタッチをスクロールメッセージに変換しますが、動作しません。 私はに触れることができるWindows PCをテストしていないので、トラブルシューティングが難しいです。私はスクロールメッセージが送信されたと考えていますが、ウィンドウが戻ってきます。私はスクロールイベントを全く行わないので、デフォルトのリストビュー動作です。

私が同じプログラムで使用する他のリストビューコントロール。ダイアログウィンドウでは、タッチスクロールで正しく動作します(!)。他のすべての可能性を取り除いた後で、問題はウィンドウクラス名(?)から来ているという結論に達しました。ダイアログにリストビューウィンドウがデフォルトのクラス名syslistview32を持っているのに対し、スクロールしませんビューはATLの方法で、スーパークラスされています

DECLARE_WND_SUPERCLASS(_T("ATL:ShellItemView"), CListViewCtrl::GetWndClassName()) 

しかし、基本クラスは、標準のリストビューコントロールです。問題はクラス名ですか?私は他の何かを考えることができません。あなたはタッチPCをお持ちの場合は、こちら(free trial)からプログラムを試すことができます ニコス

+0

スーパークラス分けの動作が変わります。あなたはあなたが積極的に後の機能を壊したとは考えていませんか? – IInspectable

+0

スーパークラスは、リストビューコントロールと同じDefWndProcを持ちます。私は必要な振る舞いを変えるだけで、それはスクロールとは関係ありません。私の勘違いが正しければ、タッチ・ツー・スクロール・メッセージ翻訳を扱っているものであれば、ウィンドウ・クラス名を参照して標準コントロールを認識させてください。 – nikos

+0

これで、[mcve]を構築する方法を知ることができます。 – IInspectable

答えて

0

おかげでそうはい、クラス名はそれでした!リストビューをスーパークラス化するのではなく、標準のリストビューを作成してサブクラス化しました。これはクラス名syslistview32を保持しますが、私自身の特別な機能を提供します。名前って何?

これは大きなMicrosoftの大失敗です。私は3日間それを失ったとは信じられません。しかし、少なくとも今は解決されています

関連する問題