17

設計時に MFC でコントロールの Z オーダーを変更する方法- つまり、SetWindowPos を使用できないか、実行時にこれを行うことができません - 変更された Z オーダーをデザイナーで確認したい (直接に頼る必要がある場合でも) .rc コードを編集します)。

コントロールを追加する MFC ダイアログがあります。コントロールのエッジ間にオーバーラップがある場合は、一方を他方の前面に移動したいと考えています。Windows フォームや WPF などでは、前面に移動、背面に移動、前面に移動、背面に移動できます。MFC にはこれらのオプションがありません。また、追加されたばかりのコントロールが以前にあったコントロールの背後にあることが多いため、前にあるものをどのように決定するかわかりません。MFC で Z オーダーを操作するにはどうすればよいですか? .rc ファイルのコードを直接操作しなければならない場合でも (つまり、デザイナーの周りをエンドランします)。

4

7 に答える 7

19

前のコントロールは、rc ファイルで発生する最後のコントロールになると思います。つまり、ダイアログ エディターは、rc ファイル内で検出された各コントロールを上から下に描画し、必要に応じてそれらを重ねます。

rc ファイルを編集して順序を変更したり、エディターでタブ オーダーを変更したりできます。これは、ファイル内でコントロールが発生する順序に基づいてタブ オーダーも設定されるため、同じことを行います。私の知る限り、MFC は、デザイン時に重複するコントロールを階層化する他の方法を提供していません。

于 2008-10-01T23:08:04.767 に答える
19

Visual Studio 6.0 では、次の操作を行います。

ダイアログ画面を開く(デザイナービュー)

Ctrl + D を押します

各コントロールのタブ オーダーが表示されます。

実行時に表示されると予想されるタブ オーダーでコントロールをクリックし始めます (つまり、最初にクリックしたコントロールのタブ オーダーは 1 に設定されます...)。

于 2009-04-22T05:39:20.697 に答える
10
GetDlgItem(IDC_MYCONTROL)->SetWindowPos(HWND_TOP,
                                        0, 0, 0, 0,
                                        SWP_NOMOVE | SWP_NOSIZE);
于 2008-10-01T22:49:02.503 に答える
9

実際、リソース エディターでこれを行いたい場合は、項目を切り取ってから貼り付けるだけで、手早く簡単に解決できます。Ctrl-X を押してから Ctrl-V を押します。

RC ファイルの編集も機能します。

于 2008-10-01T22:54:47.777 に答える
1

CWnd::SetWindowPos()を使用して、親ウィンドウでの位置を変更せずに、コントロールの Z オーダーを制御できます。

于 2008-10-01T22:49:08.773 に答える
1
GetDlgItem(IDC_CONTROL1)->SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE)
于 2014-03-05T01:07:39.503 に答える
1

MSVC 2005ダイアログリソース エディタには、タブ オーダーを設定するオプションがあります。MSVC 2005では、[形式]、[タブ オーダー] メニューにあります。

このメニュー オプションによって表示されるタブ オーダーは、コントロールがリソース ファイルに書き込まれる順序と同じです。

于 2008-10-02T04:25:14.783 に答える