2011-01-14 6 views
1

ウィンドウに標準以外のスクロールバーがある場合(たとえば、ウィンドウで標準のスクロールバーを使用せずにスクロールバー自体を描画できるなど)、WinAPIで検出する方法はありますか?非標準のスクロールバーを検出する

答えて

1

どのようにこれを行うことができるのか分かりにくいです。コントロールは、独自のキャンバスにスクロールバーをペイントするだけで、独自のヒットテストを行い、どのように知っているでしょうか。スクロールバーに別のHWNDを作成しなくても、これをすべて実行できます。

あなたがなぜこのことを知りたいのかと言うと、もっと面白いことがあります。

2

これがうまくいくかどうかは分かりませんが、単なるアイデアです。 スクロールバーは、このスタイルを有効にして作成する必要があるウィンドウに属します。したがって、ウィンドウにWS_VSCROLLスタイルが含まれているかどうかを確認することができます。そうであれば、これは標準のスクロールバーです。相手方では、それは他の誰かに引き寄せられます。

あなたはこの方法でそれを確認することができます。

// Assume that a window handle hWnd is known 
int style = GetWindowLong(hWnd, GWL_STYLE); 
BOOL bStandard = ((style & WS_VSCROLL) != 0); 
+0

は、次にウィンドウスタイルを使用するのではなく、「スクロールバーコントロール」を使用する場合があります。彼らが*非標準のスクロールバー*と見なすならばDunno。それにもかかわらず、私はこれがすべてできることだと信じています。 –

+0

このコードは、標準のスクロールバーでのみ機能します。 – clumpter

+1

@clumpter - それがポイントです。スクロールバーが標準の場合、bStandardはtrueになります。それ以外の場合(windown hWndの標準でないスクロールバー、またはスクロールバーがない場合)はfalseになります。つまり、hWndにスクロールバーが含まれていることを確認する必要があります。これは、標準のスクロールバーであるかどうかを調べる方法です。 – Vladimir

関連する問題