0

Windows ダイアログで動的に作成された子コントロールの一部が、タブ キーを使用して移動するときに、順序が正しくない理由を突き止めようとしています。それらをいじる他に何もない場合、順序はダイアログに追加された順序で定義する必要がありますが、特定のタイプの子コントロールが一貫して最後にソートされます。

それらを並べ替える1 つの方法SetWindowPos()は、hWndInsertAfterパラメーターを使用し、SWP_NOZORDERフラグを設定せずに を使用することです。この再注文の考えられる原因として、これを排除したと確信しています。

では、今後の参考のためだけでなく、これをさらに進めるために、ダイアログ内の既存の子コントロールを並べ替えることができる他の win32 呼び出しは何ですか?SetWindowPos()

4

1 に答える 1

2

それだけです。標準のダイアログでは、z オーダーのどこから開始するかを制御できることを除いて、タブ オーダーは単に z オーダーです。常にタブ オーダーの最後に配置されるコントロールがいくつかある場合、それらを配置するために何かが z オーダーを操作しています。

ダイアログまたはコントロールが非標準の場合、タブ オーダーは WndProc によって直接操作される可能性があります。これは一般的に悪い考えですが、時々発生することが知られています。

于 2011-07-13T21:16:40.747 に答える