VB では、MDI (MultipleDocumentInterface、マルチウィンドウ プログラム) フォームは次のように定義されます。「MDI フォームはプログラムのバックグラウンド ウィンドウとして機能し、MDIChild 属性が True に設定されたフォームが含まれます。」 VB プログラムでは、MDI 親フォームは最大 1 つ、MDI 子フォームは複数存在できます。MDI 親フォームを作成するには、VB の [ファイル] メニューで [NewMDIForm] を選択します。
MDI プログラムの実行中、子ウィンドウにメニューがある場合、子ウィンドウがアクティブ化されると、子ウィンドウが最小化されると、子ウィンドウのメニューが親ウィンドウのメニューに自動的に置き換えられます。 MDI 親ウィンドウのアイコンに表示されます。
Windows のユニバーサル グラフィカル インターフェイスの登場により、コンピュータ ユーザーは特別な学習なしでさまざまな Windows ソフトウェアを簡単に使用できるようになっただけでなく、プログラム設計者が Windows プログラムのインターフェイスを設計する際に従わなければならない標準にもなりました。プログラム設計者は、問題の解決と実装に集中できるようになります。
Visual Basic の登場により、Windows プログラム インターフェイスの設計はさらに簡素化され、標準の Windows アプリケーションのインターフェイスを実装するのに必要なコードはほんのわずかです。ただし、Windows プログラム インターフェイス設計の原則を理解していない場合、または VB でのインターフェイス プログラミングのスキルに慣れていない場合、一般的な標準に準拠しつつ独自のインターフェイスを設計して実装することは困難です。インターフェイス設計の原則 インターフェイス設計には一般原則があり、最も重要なものは次のとおりです。
インターフェースは一貫している必要があります。一貫性の原則は、インターフェース設計において最も違反しやすく、また変更や回避も最も簡単です。たとえば、メニューとオンライン ヘルプでは同じ用語を使用する必要があり、ダイアログ ボックスも同じスタイルにする必要があります。
一般的な操作にはショートカットが必要です。共通の操作は頻繁に使用されるため、操作シーケンスの長さを短縮する必要があります。たとえば、開く、保存、名前を付けて保存などの一般的なファイル操作のショートカット キーを設定します。一般的な操作のショートカットを提供することで、ユーザーの作業効率が向上するだけでなく、インターフェースがシンプルかつ効率的に機能実装できるようになります。
簡単なエラー処理を提供します。システムにはエラー処理機能が必要です。システムは、エラーが発生したときにそれを検出し、シンプルでわかりやすいエラー処理機能を提供できる必要があります。エラーが発生した後、システムのステータスが変化しない場合、システムはエラー回復ガイダンスを提供する必要があります。
有益なフィードバックを提供します。オペレータの重要な操作については情報フィードバックが必要です。よく使用される操作や単純な操作についてはフィードバックの必要はありませんが、使用頻度が低い操作や重要な操作については、システムが情報をフィードバックする必要があります。
操作は可逆的です。操作は元に戻せる必要があります。これは、専門知識のないオペレーターにとって便利です。可逆アクションは、単一の操作または比較的独立した一連の操作です。
うまく設計されたオンライン ヘルプ。オンライン ヘルプは熟練したユーザーにとっては必須ではありませんが、ほとんどの熟練していないユーザーにとっては非常に重要な役割を果たします。
メニュー設計の原則とプログラミング
メニューのデザインには次の一般原則があります。
システム機能に応じてメニューを整理します。
狭くて深いメニュー ツリーではなく、広くて浅いメニュー ツリーを選択します。
メニュー オプションをその意味に従ってグループ化し、特定のルールに従って並べ替えます。メニュー オプションのタイトルは短く明確にする必要があり、できればキーワードで始める必要があります。
よく使うオプションにはショートカットキーを設定する必要があります。上記の原則を組み合わせると、メニュー プログラミングには次のテクノロジとテクニックが使用されます。
メニューオプションのグループ化
VB では、メニュー オプションのグループ化は、メニュー バーを水平線で分割することによって実現されます。キャプション属性が「」のメニュー項目をメニュー内の特定の位置に追加すると、メニュー上に横線として表示されます。多くの場合、同じ機能メニューは、メニュー オプションの機能に応じていくつかのグループに分割できます。この場合、分割水平線を使用してメニュー項目をグループ化できます。
共通オプションのショートカットキーの設定
メニュー デザイン ウィンドウ (MenuDesignWindow) を開きます。各メニュー オプションに対応するショートカット キー (ショートカット) リストが表示されます。リストから 1 つを選択します。サブメニューまたはトップレベルのメニューを持つメニューのショートカット キーは、この方法では定義できないことに注意してください。 Windows インターフェイスの設計原則に従って、トップ メニューのショートカット キーは Alt 文字キーの形式になっています。その実現方法については後述する。
よく使用される一部の機能メニュー項目には、従来のショートカット キーがあります。たとえば、CTRL O を使用してファイルを開き、CRTL S を使用してファイルを保存し、CTRL P を使用して印刷するなどです。
メニュー オプションのショートカット キーを定義すると、メニュー上のオプションの後ろにショートカット キーのテキスト表現が表示されます。
有効化と無効化、表示と非表示のメニュー オプション メニュー オプションの特別な機能を表現するために、メニュー オプションの有効化と無効化、表示と非表示の属性を使用できます。何らかの理由により、オプションが表す機能を実現できない場合には、そのオプションの選択を禁止する必要がある。メニュー オプションは、オプションの Enabled 属性を変更することで有効または無効になります。たとえば、メニュー オプションの名前が nmuName であるとすると、このオプションの無効化は次のように実装できます。
mnuName.Enabled=False
同様に、次を使用してオプションを非表示にすることができます
mnuName.Visible=False
これを実現するには、非表示のオプションを再度表示するには、次を使用します。
mnuName.Visible=True
成し遂げる。
メニュー項目の非表示と表示の復元は、動的メニューの実装でよく使用されます。
メニュー項目の動的な読み込み
メニュー項目の動的ロードとは、メニュー項目の数が固定されておらず、必要に応じて動的にロードできることを意味します。最も単純な例は、[ファイル] メニューで最近開いたファイルのリストです。初めてファイルを開く前は、リストは空であり、ファイル メニューには表示されません。ファイルを開いた後は、リストは空ではなくなり、開いたファイルを表すメニュー項目がファイル メニューに表示されます。
上記の例では、メニュー項目の添え字属性(Index)、タイトル属性(Caption)、可視属性(Visible)、メニュー項目のロードメソッド(LoadMethod)を総合的に利用している。
具体的な実装プロセスは次のとおりです。
任意のタイトルを持つファイル メニューにメニュー項目を追加し、メニュー項目の Name 属性が opens_files_list であると仮定します。
メニュー項目opened_files_listのvisible属性をopened_files_list.Visible=Falseになるように変更します。
メニュー項目opened_files_listの添え字属性を次のように変更します。
開いた_ファイル_ファイル_リスト.インデックス=0
プログラム内のメニュー項目opened_files_listの動的ロードを制御します。
2 番目に開かれたファイルのファイル名を表示する必要があり、そのファイル名がファイル名配列opened_file_nameに格納されているとします。次のコードはこの関数を実装します。
開いたファイルのリストをロード(1)
開いたファイル名(1).Caption="&2" 開いたファイル名(1)
opens_files_list(1).Visible=True
添字が 0 のメニュー項目には Load メソッドを使用できないことに注意してください。メニュー項目はプログラムの実行時にメモリにロードされるため、メニュー項目のタイトル属性文字の「&」文字には特別な意味があり、その機能は属性文字列を表示することです。同時に、「&」自体は表示されませんが、「&」の直後の文字が下線付きで表示され、その文字がホットキーになります。
インデックスが 0 ではないメニュー項目が不要になった場合は、メモリ リソースの占有を減らすために、Unload メソッドを使用してそのメニュー項目をメモリからアンロードできます。同様に、Unload を使用してインデックスのメニュー項目をアンロードすることはできません。は0です。
ポップアップメニューの実装(PopupMenuMethod)
VBのメニューデザインウィンドウ(MenuDesignWindow)でデザインするメニューはドロップダウンメニューです。ドロップダウン メニューは、ユーザーが上部のメニュー バーで選択を行った後いつでも引き出すことができるメニューであり、ポップアップ メニューは、特定の領域でマウス ボタンをクリックした後に表示されるメニューです。プログラムのインターフェース。場合によっては、ポップアップ メニューによりシステム機能がより簡潔かつ効率的になり、使いやすくなります。
Widnows プログラムのポップアップ メニューは通常、ユーザーがプログラムのデスクトップでマウス ボタンをクリックすると表示されます。ポップアップ メニューは主に、システムの追加または拡張機能を実装するために使用されます。ポップアップ メニューの内容は、マウス ボタンをクリックした場所に応じて変化します。ポップアップメニューは画面の一部を覆うため、メニュー内の文字はできるだけ短くしてください。
VB でポップアップ メニューを実装するには、ドロップダウン メニュー設計テクノロジと PopupMenu メソッドを使用する必要があります。具体的な方法は次のとおりです。
メニュー設計ウィンドウ(MenuDesignWindow)で、該当フォームのポップアップメニューを設計します。ポップアップされるメニューには少なくとも 1 つのサブメニューが必要であるため、このメニューにはショートカット キーを含めることはできず、Checked 属性は False である必要があることに注意してください。次に、ポップアップ メニューの Visible プロパティを False に変更します。
設計されたポップアップ メニューを含むフォームの Form_Click に次のコードを追加します (ポップアップ メニューの Name プロパティが mnuExample であると仮定します)。
サブフォーム_クリック()
ポップアップメニューnu例
EndSub
マウスの左ボタンまたは右ボタンを押すことによってのみメニューをアクティブにする必要がある場合は、次のコードを Form_MouseDown に追加する必要があります。
SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
IfButton=2thenButton=2 はマウスの右ボタンを意味します
ポップアップメニューnu例
EndIf
PopupMenu の完全な構文は次のとおりです。
[Form.]PopupMenununame[flags[,x[,y]]]
フラグの値を変更すると、ポップアップ メニューの外観を制御できます。フラグには 2 つの値のセットがあります。最初の値のセットは、POPUPMENU_LEFTALIGNPOPUPMENU_CENTERALIGN と POPUPMENU_RIGHTALIGN を含むメニューの表示モードを制御するために使用されます。これらはそれぞれ、x を左境界、x を中央、x を右境界として表示モードを表します。また、左境界として x を使用するのがデフォルトの方法であり、POPUPMENU_LEFTBUTTON および POPUPMENU_RIGHTBUTTON などの別の値のセットがメニュー項目の選択方法を制御するために使用されます。これらはそれぞれ左クリック選択と左/右クリック選択を示します。左クリックによる選択がデフォルトの方法です。 Flags の値は、上記の 2 つの値セットの OR を演算することによって取得されます。たとえば、ディスプレイを左揃えにする必要があり、左ボタンが選択されている場合は、次のようにする必要があります。
flags=POPUPMENU_LEFTALIGNORPOPUPMENU_LEFTBUTTON
x と y は、メニュー ポップアップの位置を定義するために使用されます。デフォルトはマウス ポイントの位置です。
メニュー項目のその他のプロパティ
ALT 文字キーを使用してトップレベルのメニューをアクティブにするか、メニューがアクティブになった後で文字キーを使用してメニュー項目をアクティブにします。& の使い方を学ぶ必要があります。 &はメニュー項目のタイトル属性(Caption)で使用されます。使い方や機能はC言語でコンパイルしたWindowsプログラムと同じです。
トップレベルのメニュー間のスペースを大きくしたい場合や、トップレベルのメニューをメニュー バーの右端に表示したい場合は、スペース タイトル属性を持つメニューを使用する必要があります。メニューのタイトルが複数のスペースで構成されている場合、メニューはメニュー バー上のスペースの数に対応するスペースを占有し、このメニューの Visible プロパティが次の場合はその後ろのメニューも順次後方に移動します。 False の場合、存在しないものと同じになります。
ウィンドウ設計の原則と例
以下はフローティング ウィンドウ テクノロジーの例です。ユーザーの注意を引くため、または重要な情報を含むウィンドウが他のウィンドウに覆われないようにするために、フローティング ウィンドウ テクノロジを使用して「TopMost」ウィンドウが作成されます。具体的な方法は次のとおりです。
(1) VB プログラムに次の文を追加します。
DeclareFunctionSetWindowPosLib"user"(Byvalh,Byvalhb,Byvalx,Byvaly,By
valcx,Byvalcy,Byvalf)AsInteger
GlobalConstSWP_NOMOVE=2
GlobalConstSWP_NOSIZE=1
GlobalConstHWND_TOPMOST=1
GlobalConstHWND_NOTOPMOST=2
GlobalConstFLAGS=SWP_NOMOVEOrSWP_NOSIZE
(2) フォーム frmExample を常に前面に表示されるウィンドウに設定したいとします。frmExample フォームの Form_Load にフォームを設定するだけです。
次のコードをプロセスに追加します。
不成功
success=SetWindowPos(frmExample.hWnd,HWND_TOPMOST,0,0,0,0,FLAGS)
常に最前面に表示される機能をキャンセルしたい場合は、次のコードを実行できます。
success=SetWindowPos(frmExample.hWnd,HWND_NOTOPMOST,0,0,0,0,FLAGS)
成功は 0 ではありません。これは、SetWindowPos が正常に実行されたことを意味します。
MDI プログラムでは、1 つのウィンドウが他のすべてのウィンドウの親ウィンドウとなり、各子ウィンドウは、複数の独立したツールの組み合わせと同様に、比較的独立した機能を実行します。この点に関しては、MSWord と Windows の FileManager が最良の例です。 ->