でいくつかの実験を行いましMF_MENUBARBREAK
たが、これではメニューの最上位レベルで2つの列しか達成できません。
私が欲しいのはこのようなメニューです:
2列にしたいのはフルメニューではありませんが、最初の行に2つのメニュー(左と右)項目があります。他のすべてのエントリは、それ自体の行全体を占有します。それは可能ですか?
でいくつかの実験を行いましMF_MENUBARBREAK
たが、これではメニューの最上位レベルで2つの列しか達成できません。
私が欲しいのはこのようなメニューです:
2列にしたいのはフルメニューではありませんが、最初の行に2つのメニュー(左と右)項目があります。他のすべてのエントリは、それ自体の行全体を占有します。それは可能ですか?
いいえ、これは不可能です。ネイティブメニューシステムは、「分割」複数列メニューをサポートしていません。
ドロップダウンメニューに複数の列がある場合、ドロップダウンメニュー全体に複数の列があります。それ以外の場合は、すべての項目が1つの列に表示されます。
これを使用することはできません(私が行ったようにペイントでモックアップしない限り):
代わりに、MF_MENUBARBREAK
フラグを設定したアイテムの後に続くすべてのアイテムが2番目の列に表示されます。たとえば、「右」アイテムにMF_MENUBARBREAK
フラグが設定されている場合、メニューは次のようになります。
「One」から「Three」までのアイテムを、どちらかの列にないように表示することはできません。「右」の前にアイテム(フラグが付いているアイテム)を追加するMF_MENUBARBREAK
と、次のようにすべてが最初の列に表示されます。
…しかし、それらはまだ列にあります。所有者が自分でメニューを描く以外に、それを回避する方法はありません。これは、価値があるよりもはるかに多くの作業です(私を信じてください)。
おそらく、「左」と「右」のカテゴリの下にある番号の付いたアイテムを複製することができますか?各メニュー項目に一意のIDを指定している限り、コードでそれらを区別することは問題になりません。
ただし、「左」と「右」が列ヘッダーであり、その下の項目とは異なる方法で処理する必要があることを示す方法を見つける必要があります。それらを無効にしたり、太字で描画したりできると思いますが、それでも直感的なUIを生成できるとは限りません。
さらに良いことに、「創造的な」UIデザインの強制を最小限に抑え、別のトップレベルメニューを追加することをお勧めします。ユーザーはトップレベルメニューの使用方法を知っています。彼らはすでにこのメンタルモデルを理解しています。彼らはあなたの奇妙なカスタムメニューの使い方を本当に知りません、そして何か奇妙なものはあなたのユーザーをしばしばつまずかせるでしょう。
ユーザーも(一種の)サブメニューを理解しているので、番号付きの項目を含むサブメニューを表示する「左」と「右」の項目を含む単一のトップレベルメニューを使用できます。ただし、通常のルールが適用されます。ネストを深くしすぎないようにしてください。
OS Xでは、次のようなメニュー構造を見てきました。
それは、ユーザーがそれに慣れている場所でうまく機能します。そして、物事が適切にネストされてカテゴリに分類されるのを見るのが好きなプログラマーとして、私はそれがとても好きです。しかし、それがWindowsユーザーにとってどれほど直感的であるかはわかりませんが、Windowsユーザーにとってはかなり珍しいことです。いくつかのユーザビリティテストを行う必要があります。