</head> <body> <h1>Guiオブジェクト</h1> <pre class="NoIndent">class Gui extends Object</pre> <p>Provides an interface to create a window, add controls, modify the window, and retrieve information about the window. このようなウィンドウは、データ入力フォームやカスタムユーザーインターフェイスとして使用することができます。</p> <p>Guiオブジェクトは<a href="#Call">Gui()</a>で作成し、<a href="GuiFromHwnd.htm">GuiFromHwnd</a>で取得することができます。</p> <p>"Gui"はクラスそのものなので、以下ではあらゆるGuiオブジェクトのプレースホルダー(例では変数名)として "MyGui"を使用します。</p> <p>Guiオブジェクトは、<a href="Object.htm">Object</a>から継承されたメソッドやプロパティに加え、以下のような定義済みのメソッドやプロパティを持ちます。</p> <h2 id="toc">目次</h2> <ul class="indent"> <li><a href="#Static_Methods">静的メソッドです</a>: <ul> <li><a href="#Call">Call</a>: Creates a new window.</li> </ul> </li> <li><a href="#Methods">メソッド</a>: <ul> <li><a href="#Add">Add</a>: Creates a new control and adds it to the window.</li> <li><a href="#Destroy">Destroy</a>:ウィンドウを削除します。</li> <li><a href="#Flash">Flash</a>:ウィンドウとそのタスクバーボタンを点滅させます。</li> <li><a href="#GetClientPos">GetClientPos</a>:ウィンドウのクライアントエリアの位置とサイズを取得します。</li> <li><a href="#GetPos">GetPos</a>:ウィンドウの位置と大きさを取得します。</li> <li><a href="#Hide">Hide</a>:ウィンドウを隠します。</li> <li><a href="#Maximize">Maximize</a>:ウィンドウの非表示と最大化を解除します。</li> <li><a href="#Minimize">Minimize</a>:ウィンドウの非表示と最小化を行います。</li> <li><a href="#Move">Move</a>:ウィンドウを移動またはサイズ変更します。</li> <li><a href="#OnEvent">OnEvent</a>:与えられたイベントが発生したときに呼び出される関数またはメソッドを登録します。</li> <li><a href="#Opt">Opt</a>:ウィンドウの外観や動作に関するさまざまなオプションやスタイルを設定します。</li> <li><a href="#Restore">Restore</a>: Unhides and unminimizes or unmaximizes the window.</li> <li><a href="#SetFont">SetFont</a>:続いて作成されるコントロールの書体、サイズ、スタイル、テキストカラーを設定します。</li> <li><a href="#Show">Show</a>:ウィンドウを表示します。また、ウィンドウの最小化、最大化、移動も可能です。</li> <li><a href="#Submit">Submit</a>:名前付きコントロールから値を収集し、<a href="Object.htm">オブジェクトに</a>合成します。オプションでウィンドウを非表示にすることができます。</li> <li><a href="#__Enum">__Enum</a>: Enumerates the window's controls.</li> <li><a href="#__New">__New</a>:新しいGuiインスタンスを構築します。</li> </ul> </li> <li><a href="#Properties">プロパティ</a>: <ul> <li><a href="#BackColor">BackColor</a>:ウィンドウの背景色を取得または設定します。</li> <li><a href="#FocusedCtrl">FocusedCtrl</a>: Retrieves the <a href="GuiControl.htm">GuiControl object</a> of the window's focused control.</li> <li><a href="#Hwnd">Hwnd</a>:ウィンドウのウィンドウハンドル(HWND)を取得します。</li> <li><a href="#MarginX">MarginX</a>:側面とその後に作成されるコントロールの間の水平マージンのサイズを取得または設定します。</li> <li><a href="#MarginY">MarginY</a>:側面とその後に作成されるコントロールの間の垂直マージンのサイズを取得または設定します。</li> <li><a href="#MenuBar">MenuBar</a>:ウィンドウのメニューバーを取得または設定します。</li> <li><a href="#Name">Name</a>:ウィンドウのカスタムネームを取得または設定します。</li> <li><a href="#Title">Title</a>: Retrieves or sets the window's title.</li> <li><a href="#__Item">__Item</a>:指定された名前、テキスト、ClassNN、HWND に関連する<a href="GuiControl.htm">GuiControl オブジェクト</a>を取得します。</li> </ul> </li> <li>一般: <ul> <li><a href="#Navigate">キーボードナビゲーション</a></li> <li><a href="#Appear">ウィンドウの外観</a></li> <li><a href="#GenRemarks">総論</a></li> <li><a href="#Related">関連</a></li> <li><a href="#Examples">例</a></li> </ul> </li> </ul> <h2 id="Static_Methods">静的メソッド</h2> <div class="methodShort" id="Call"> <h3>Call</h3> <p>Creates a new window.</p> <pre class="Syntax">MyGui := Gui(<span class="optional">Options, Title, EventObj</span>) MyGui := Gui.<span class="func">Call</span>(<span class="optional">Options, Title, EventObj</span>)</pre> <h4 id="Call_Parameters">パラメータ</h4> <dl> <dt>Options</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>Any of the options supported by <a href="#Opt">Gui.Opt</a>.</p> </dd> <dt>Title</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>省略されたときは、デフォルトは<a href="../Variables.htm#ScriptName">A_ScriptName</a>です。Otherwise, specify the window title.</p> </dd> <dt id="EventObj">EventObj</dt><dd> <p>型:<a href="../Concepts.htm#objects">オブジェクト</a></p> <p>「イベントシンク」、つまりイベントをバインドするためのオブジェクトです。<em>EventObj</em>を指定した場合、<a href="GuiOnEvent.htm">OnEvent</a>、<a href="GuiOnNotify.htm">OnNotify</a>、<a href="GuiOnCommand.htm">OnCommand</a>を使用して、イベントが発生したときに呼び出される<em>EventObj</em>のメソッドを登録することができる。</p> </dd> </dl> <h4 id="Call_Return_Value">戻り値</h4> <p>型:<a href="../Concepts.htm#objects">オブジェクト</a></p> <p>This method or function returns a Gui object.</p> </div> <h2 id="Methods">メソッド</h2> <div class="methodShort" id="Add"> <h3>Add</h3> <p>Creates a new control and adds it to the window.</p> <pre class="Syntax"><a href="GuiControl.htm">GuiCtrl</a> := MyGui.<span class="func">Add</span>(ControlType <span class="optional">, Options, Text</span>) <a href="GuiControl.htm">GuiCtrl</a> := MyGui.<span class="func">Add</span>ControlType(<span class="optional">Options, Text</span>)</pre> <h4 id="Add_Parameters">パラメータ</h4> <dl> <dt>ControlType</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>これは、以下のいずれかとなります:<a href="GuiControls.htm#ActiveX">ActiveX</a>、<a href="GuiControls.htm#Button">Button</a>、<a href="GuiControls.htm#CheckBox">CheckBox</a>、<a href="GuiControls.htm#ComboBox">ComboBox</a>、<a href="GuiControls.htm#Custom">Custom</a>、<a href="GuiControls.htm#DateTime">DateTime</a>、<a href="GuiControls.htm#DropDownList">DropDownList(またはDDL)</a>、<a href="GuiControls.htm#Edit">Edit</a>、<a href="GuiControls.htm#GroupBox">GroupBox</a>、<a href="GuiControls.htm#Hotkey">Hotkey</a>、<a href="GuiControls.htm#Link">Link</a>、<a href="GuiControls.htm#ListBox">ListBox</a>、<a href="GuiControls.htm#ListView">ListView</a>、<a href="GuiControls.htm#MonthCal">MonthCal</a>、<a href="GuiControls.htm#Picture">Picture(またはPic)</a>、<a href="GuiControls.htm#Progress">Progress</a>、<a href="GuiControls.htm#Radio">Radio</a>、<a href="GuiControls.htm#Slider">Slider</a>、<a href="GuiControls.htm#StatusBar">StatusBar</a>、<a href="GuiControls.htm#Tab">Tab</a>、<a href="GuiControls.htm#Tab">Tab2</a>、<a href="GuiControls.htm#Tab">Tab3</a>、<a href="GuiControls.htm#Text">Text</a>、<a href="GuiControls.htm#TreeView">TreeView</a>、<a href="GuiControls.htm#UpDown">UpDown</a></p> <p>事例:</p> <pre>MyGui := Gui() MyGui.Add("Text",, "Please enter your name:") MyGui.AddEdit("vName") MyGui.Show</pre></dd> <dt>Options</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>If blank or omitted, the control starts off at its defaults. Otherwise, specify one or more of the following options and styles, each separated from the next with one or more spaces or tabs.</p> <p id="PosSize"><strong>コントロールの位置づけとサイズ</strong></p> <p><em>オプション</em>で寸法や座標が省略された場合、コントロールはその性質や内容に応じて、前のコントロールとの相対的な位置関係や大きさを自動的に決定します。</p> <p>以下のオプションに対応しています:</p> <p id="R"><strong>R</strong><em>n</em>: Rows of text (where <em>n</em> is any number, even a floating point number such as <code class="no-highlight">r2.5</code>). H(高さ)を指定するよりも、Rを指定した方が好ましい場合が多い。Rと Hの両方のオプションがある場合、Rが優先されます。グループボックスの場合、ボックス内のスペースを確保するコントロールの数を設定します。<a href="GuiControls.htm#DropDownList">DropDownList</a>、<a href="GuiControls.htm#ComboBox">ComboBox</a>、<a href="GuiControls.htm#ListBox">ListBox</a>の場合、コントロールのリスト部分で一度に表示できる項目の数です(ただし、DropDownListとComboBoxでは、ポップアップリストが自動的にユーザーのデスクトップの利用可能な高さを利用するため、Rと Hオプションの両方を省略することが望ましい場合があります)。その他のコントロールタイプの場合、Rはコントロール内に視覚的に収まるテキストの行数です。</p> <p><strong>W</strong><em>n</em>: Width (where <em>n</em> is any number in pixels). タブコントロールのデフォルトは、現在のフォントサイズの30倍と<a href="#MarginX">Xマージン</a>の3倍、垂直プログレスバーのデフォルトは現在のフォントサイズの2倍、水平プログレスバー、水平スライダー、ドロップダウンリスト、コンボボックス、リストボックス、グループボックス、エディット、ホットキーは現在のフォントサイズの15倍(ただしグループボックスはマージンのために内部にスペースを確保する18倍)となっています)、省略するとコントロールタイプによってはその内容から自動的に幅を計算します。</p> <p><strong>H</strong><em>n</em>: Height (where <em>n</em> is any number in pixels). Hと Rの両方のオプションがない場合、DropDownList、ComboBox、ListBox、空の複数行編集コントロールのデフォルトは3行、GroupBoxのデフォルトは2行、垂直スライダーとプログレスバーのデフォルトは5行、水平スライダーのデフォルトは30ピクセル(太さが指定されている場合は除く)、水平プログレッサーは現在のフォントサイズの2倍、ホットキーコントロールは1行、タブコントロールは10行になります。その他のコントロールタイプについては、その内容に基づいて高さが自動的に計算されます。なお、DropDownListとComboBoxの場合、Hはコントロールの常時表示部分とリスト部分の高さを合わせた値です(ただし、高さを低く設定しても、少なくとも1つのアイテムは常にリスト内に表示されます)。また、すべてのタイプのコントロールにおいて、Rオプションで行数を指定すると、テキストの部分的な行や不完全な行が表示されるのを防ぐことができるため、通常はHを使用するよりも好ましいとされています。</p> <p><strong>WP</strong><em>±n</em>, <strong>HP</strong><em>±n</em> (where <em>n</em> is any number in pixels) can be used to set the width and/or height of a control equal to the previously added control's width or height, with an optional plus or minus adjustment. 例えば、<code>wp</code>はコントロールの幅を前のコントロールの幅に設定し、<code class="no-highlight">wp-50</code>は前のコントロールの幅より50小さい幅に設定します。</p> <p id="XY"><strong>X</strong><em>n</em>, <strong>Y</strong><em>n</em>: X-position, Y-position (where <em>n</em> is any number in pixels). 例えば、<code>x0 y0</code>を指定すると、コントロールはウィンドウのクライアント領域(タイトルバーとメニューバーがある場合はその下の領域)の左上隅に配置されます。</p> <p id="PosPlus"><strong>X+</strong><em>n</em>, <strong>Y+</strong><em>n</em> (where <em>n</em> is any number in pixels): An optional plus sign can be included to position a control relative to the right or bottom edge (respectively) of the control that was previously added. 例えば、<code class="no-highlight">Y+10</code>を指定すると、標準的なパディング距離ではなく、前のコントロールの下10ピクセルに位置します。同様に、<code class="no-highlight">X+10</code>を指定すると、コントロールは前のコントロールの右端から10ピクセル右に位置します。<code class="no-highlight">x-10</code>のような負の数は絶対位置決め用に予約されているため、負のオフセットを使用する場合は、その前にプラス記号を含めます。事例:<code class="no-highlight">x+-10</code>。</p> <p id="PosPlusMargin">X+、 Y+の場合、ウィンドウの現在の<a href="#MarginX">マージン</a>の代用として<strong>M</strong>という文字が使えます。例えば、<code>x+m</code>は、前のコントロールの右端に標準的なパディング距離を加えたものを使用します。<code>xp y+m</code>は、コントロールが前のコントロールの下に位置します。一方、相対的なX座標を単独で(XPまたはX+で)指定すると、通常はデフォルトで<code>yp</code>が指定されます。</p> <p id="xp"><strong>XP</strong><em>±n</em>, <strong>YP</strong><em>±n</em> (where <em>n</em> is any number in pixels) can be used to position controls relative to the previous control's upper left corner, which is often useful for enclosing controls in a <a href="GuiControls.htm#GroupBox">GroupBox</a>.</p> <p id="xm"><strong>XM</strong><em>±n</em> and <strong>YM</strong><em>±n</em> (where <em>n</em> is any number in pixels) can be used to position a control at the leftmost and topmost <a href="#MarginX">margins</a> of the window, respectively, with an optional plus or minus adjustment.</p> <p id="xs"><strong>XS</strong><em>±n</em> and <strong>YS</strong><em>±n</em> (where <em>n</em> is any number in pixels): These are similar to XM and YM except that they refer to coordinates that were saved by having previously added a control with the word <a href="#Section">Section</a> in its options (the first control of the window always starts a new section, even if that word isn't specified in its options). 事例:</p> <pre>MyGui := Gui() MyGui.Add("Edit", "w600") <em>; ウィンドウの上部にかなり広いエディットコントロールを追加します。</em> MyGui.Add("Text", "<strong>Section</strong>", "First Name:") <em>; このコントロールの位置を保存し、新しいセクションを開始します。</em> MyGui.Add("Text",, "Last Name:") MyGui.Add("Edit","<strong>ys</strong>") <em>; このセクション内で新しいカラムを開始します。</em> MyGui.Add("Edit") MyGui.Show</pre> <p>XSとYSの後には、オプションでプラス・マイナス記号と数字を付けることができます。また、コントロールのオプションに<a href="#Section">Section</a>という単語とXS/YSの両方を指定することも可能です。この場合、それ自身は前のセクションを使用しますが、後続のコントロールには新しいセクションを確立します。</p> <p>X、Y、またはその両方を省略すると、将来コントロールやフォントのサイズを変更したときに、GUIレイアウトを自動的に調整するのに便利です。一方、すべてのコントロールに絶対位置を指定すると、拡大・縮小するコントロールの下や右側にあるすべてのコントロールの位置を手動で移動させる必要がある場合があります。</p> <p>Xと Yの両方が省略された場合、コントロールは標準的なパディング距離(現在の<a href="#MarginX">マージン</a>)を使用して前のコントロールの下に配置されます。連続するテキストコントロールやリンクコントロールには垂直方向のパディングが追加され、編集、DDL、または同様のサイズのコントロールの列がその右に追加された場合に、通常より整列するようになります。標準の垂直マージンのみを使用する場合は、<code>y+m</code>またはXに任意の値を指定してください。</p> <p>片方のコンポーネントだけが省略された場合、そのデフォルト値は、もう片方のコンポーネントを指定するためにどのオプションが使用されたかに依存します:</p> <table class="info"> <tr><th>指定されたX</th><th>Yのデフォルト</th></tr> <tr><td>X<em>n</em> または XM</td><td>以前のすべてのコントロールの下(最大Y範囲+マージン)。</td></tr> <tr><td>XS</td><td><a href="#Section">セクション</a>オプションの直近の使用以降、以前のすべてのコントロールの下にある。</td></tr> <tr><td>X+<em>n</em> または XP+<em>ノンゼロ</em></td><td>前コントロールのトップエッジ(<a href="#xp">YP</a>)と同じです。</td></tr> <tr><td>XP または XP+0</td><td>前のコントロールの下(下端+マージン)。</td></tr> <tr><th>指定されたY</th><th>Xのデフォルト</th></tr> <tr><td>Y<em>n</em> または YM</td><td>以前のすべてのコントロールの右側(最大X範囲+マージン)。</td></tr> <tr><td>YS</td><td><a href="#Section">セクション</a>オプションの直近の使用以降、以前のすべてのコントロールの右側にある。</td></tr> <tr><td>Y+<em>n</em> または YP+<em>ノンゼロ</em></td><td>前のコントロールの左端(<a href="#xp">XP</a>)と同じです。</td></tr> <tr><td>YP または YP+0</td><td>前のコントロールの右側(右端+マージン)。</td></tr> </table> <p id="Events"><strong>ユーザー入力の保存と対応</strong></p> <p id="var"><strong>V:</strong>コントロールの<a href="GuiControl.htm#Name">Name</a>を設定します。名前に含まれない文字「V」の直後を指定します。例えば、<code><strong>v</strong>MyEdit</code>を指定すると、コントロールに「MyEdit」という名前が付けられます。</p> <p id="label"><strong>イベント:</strong>イベントハンドラ(ユーザーがコントロールをクリックまたは変更したときに自動的に呼び出される関数など)は、コントロールの<em>オプションで</em>設定することはできません。代わりに、<a href="#OnEvent">OnEvent</a>を使用して、関心のあるイベントごとにコールバック関数またはメソッドを登録することができます。</p> <p id="OtherOptions"><strong>Common Options and Styles for Controls</strong></p> <p>注:先行する記号がない場合、プラス記号とみなされます。例えば、<code>Wrap</code>は <code>+Wrap</code>と同じです。これに対して、<code>-Wrap</code>は、単語の折り返し特性を削除します。</p> <p id="AltSubmit"><strong>AltSubmit:</strong>別の送信方法を使用します。DropDownList、ComboBox、ListBox、Tabの場合、<a href="#Submit">Gui.Submit</a>に選択項目のテキストではなく、その位置が保存されるようになるためです。項目が選択されていない場合でも、コンボボックスはその編集フィールドのテキストを保存します。</p> <p><strong>C:</strong> Color of text (has no effect on <a href="GuiControls.htm#Button">buttons</a> and <a href="GuiControls.htm#StatusBar">status bars</a>). 文字Cの直後に、色名(<a href="../misc/Colors.htm">カラーチャート</a>参照)またはRGB値(接頭辞0xは任意)を指定します。例:<code>cRed</code>、<code>cFF2211</code>、<code>c0xFF2211</code>、<code>cDefault</code>。</p> <p id="Disabled"><strong>Disabled:</strong>入力可能なコントロールを無効な状態で表示させ、ユーザーがその内容に注目したり、変更したりすることを防ぎます。後から有効にする場合は、<a href="GuiControl.htm#Enabled">GuiCtrl.Enabled</a>を使用します。注:Editコントロールを読み取り専用にするには、代わりに文字列<code>ReadOnly</code>を指定します。また、Disabledの直後に0または1を付加して、開始状態(0が有効、1が無効)を示すことも任意に可能です。つまり、<code>Disabled</code>と <code>"Disabled" VarContainingOne</code>は同じです。</p> <p id="Hidden"><strong>Hidden:</strong>コントロールは、初期状態では不可視です。後で表示する場合は<a href="GuiControl.htm#Visible">GuiCtrl.Visible</a>を使用します。Hiddenの直後に0または1を付加して、開始時の状態を示すこともできる(0は可視、1は非表示)。つまり、<code>Hidden</code>と <code>"Hidden" VarContainingOne</code>は同じです。</p> <p><strong>Left:</strong>コントロールのテキストを使用可能な幅の範囲内で左寄せにします。このオプションは、以下のコントロールに影響します:Text、Edit、Button、CheckBox、Radio、UpDown、Slider、Tab、Tab2、GroupBox、DateTime。</p> <p><strong>Right:</strong>コントロールのテキストを使用可能な幅の範囲内で右寄せにします。チェックボックスやラジオボタンの場合、ボックス自体もコントロールの左側ではなく、右側に配置されます。このオプションは、以下のコントロールに影響します:Text、Edit、Button、CheckBox、Radio、UpDown、Slider、Tab、Tab2、GroupBox、DateTime、Link。</p> <p><strong>Center:</strong>コントロールのテキストを使用可能な幅の範囲内でセンタリングします。このオプションは、以下のコントロールに影響します:Text、Edit、Button、CheckBox、Radio、Slider、GroupBox。</p> <p id="Section"><strong>Section:</strong>新しいセクションを開始し、このコントロールの位置を保存して、後で<a href="#xs">上記</a>のXSとYSの位置決めオプションで使用できるようにします。</p> <p id="Tabstop"><strong>Tabstop:</strong> Use <code>-Tabstop</code> (minus Tabstop) to have an input-capable control skipped over when the user presses <kbd>Tab</kbd> to navigate.</p> <p id="Wrap"><strong>Wrap:</strong>コントロールの内容を使用可能な幅の範囲内でワードラッピングすることができるようにします。ほぼすべての制御タイプは、最初にワードラッピングが有効になっているので、ワードラッピングを無効にするには、<code>-Wrap</code>を使用します。</p> <p><strong>VScroll:</strong>このタイプのコントロールに適している場合、垂直スクロールバーを提供します。</p> <p><strong>HScroll:</strong>このタイプのコントロールに適している場合、水平スクロールバーを提供します。この段落の続きは、<a href="GuiControls.htm#ListBox">ListBox</a>のみに適用されます。水平スクロールの幅は、デフォルトでListBoxの幅の3倍になっています。異なるスクロール幅を指定する場合は、HScrollという文字の直後に数字を含めてください。例えば、<code>HScroll500</code>を指定すると、ListBox内で500ピクセルのスクロールが可能になります。ただし、指定したスクロール幅がListBoxの幅より小さい場合は、スクロールバーは表示されません(ただし、<code>HScroll</code>が存在するだけで、<code>MyScrollBar.<a href="GuiControl.htm#Opt">Opt</a>("+HScroll500")</code>によって水平スクロールバーを後から追加することは可能ですが、他の方法では不可能です)。</p> <p><strong>Uncommon Options and Styles for Controls</strong></p> <p id="BackgroundTrans"><strong>BackgroundTrans:</strong>透明な背景を使用し、Text、Picture、GroupBox コントロールの後ろにあるコントロールが透けて見えるようにします。例えば、ピクチャコントロールの上に透明なテキストコントロールを表示すると、テキストがピクチャの一部に見えるようになります。このオプションを後で削除するには、<code>GuiCtrl.<a href="GuiControl.htm#Opt">Opt</a>("+Background")</code>を使用します。透過画像については、<a href="GuiControls.htm#PicAltSubmit">ピクチャーコントロールのAltSubmitの項</a>を参照してください。既知の制限:<a href="ListView.htm">ListView</a>を含む<a href="GuiControls.htm#Tab">Tabコントロール</a>内のコントロールで、BackgroundTransが正しく動作しない場合がある。制御型がこのオプションをサポートしていない場合、エラーが発生します。</p> <p id="Background"><strong>Background</strong><em>Color</em>:コントロールの背景色を変更します。<em>Color</em>を色名(<a href="../misc/Colors.htm">カラーチャート</a>参照)またはRGB値(0x接頭辞は任意)に置き換える。例:<code>BackgroundSilver</code>、<code>BackgroundFFDD99</code>。If this option is not used, or if <code>+Background</code> is used with no suffix, a <a href="GuiControls.htm#Text">Text</a>, <a href="GuiControls.htm#Picture">Picture</a>, <a href="GuiControls.htm#GroupBox">GroupBox</a>, <a href="GuiControls.htm#CheckBox">CheckBox</a>, <a href="GuiControls.htm#Radio">Radio</a>, <a href="GuiControls.htm#Slider">Slider</a>, <a href="GuiControls.htm#Tab">Tab</a> or <a href="GuiControls.htm#Link">Link</a> control uses the background color set by <a href="#BackColor">Gui.BackColor</a> (or if none or other control type, the system's default background color). <code>BackgroundDefault</code>または<code>-Background</code>を指定すると、システムのデフォルトの背景色が適用されます。For example, a control can be restored to the system's default color via <code>LV.Opt("+BackgroundDefault")</code>. 制御型がこのオプションをサポートしていない場合、エラーが発生します。</p> <p><strong>Border:</strong>コントロールの周囲に細い線のボーダーを提供します。ほとんどのコントロールは、すでにタイプ固有のボーダーを持っているため、これは必要ありません。<em>既存</em>のコントロールにボーダーを追加する場合、コントロールの幅と高さを1ピクセルずつ大きくする必要がある場合があります。</p> <p id="Redraw"><strong>Redraw:</strong><a href="GuiControl.htm#Opt">GuiCtrl.Opt</a>と併用することで、<a href="https://learn.microsoft.com/windows/win32/gdi/wm-setredraw">WM_SETREDRAW</a>メッセージを送信してコントロールの再描画(ビジュアルアップデート)を有効または無効にすることができます。詳しくは「<a href="GuiControl.htm#redraw-remarks">再描画</a>」をご覧ください。</p> <p><strong>Theme:</strong>このオプションを使用すると、ウィンドウの現在のテーマ設定を、新しく作成されたコントロールに上書きすることができます。既存のコントロールに使用しても効果はありませんが、将来のバージョンで変更される可能性があります。詳しくはGUIの<a href="#Theme">+/-Theme</a>オプションをご覧ください。</p> <p><strong>(Unnamed Style):</strong> Specify a plus or minus sign followed immediately by a decimal or hexadecimal <a href="../misc/Styles.htm">style number</a>. 符号を省略した場合は、プラス符号とします。</p> <p><strong>(Unnamed ExStyle):</strong> Specify a plus or minus sign followed immediately by the letter E and a decimal or hexadecimal extended style number. 符号を省略した場合は、プラス符号とします。例えば、<code>E0x200</code>では、WS_EX_CLIENTEDGE スタイルが追加され、画像やその他のコントロールに適した、縁がくぼんだボーダーを提供します。ここに書かれていない他の拡張スタイル(ほとんど使用されないため)については、「<a href="https://learn.microsoft.com/windows/win32/winmsg/extended-window-styles">拡張ウィンドウスタイル|Microsoft Docs</a>」を参照し、完全なリストを入手してください。</p></dd> <dt>Text</dt><dd>指定された制御タイプに応じて、文字列、数値、配列のいずれかを指定します。</dd> </dl> <h4 id="Add_Return_Value">戻り値</h4> <p>型:<a href="../Concepts.htm#objects">オブジェクト</a></p> <p>This method returns a <a href="GuiControl.htm">GuiControl object</a>.</p> </div> <div class="methodShort" id="Destroy"> <h3>Destroy</h3> <p>ウィンドウとそのすべてのコントロールを削除し、対応するメモリとシステムリソースを解放します。</p> <pre class="Syntax">MyGui.<span class="func">Destroy</span>()</pre> <p><code>MyGui.Destroy()</code>を使用しない場合、Guiオブジェクトが削除されるとウィンドウは自動的に破棄されます(詳細は「<a href="#deleted">一般備考</a>」を参照)。スクリプトが終了すると、すべてのGUIウィンドウは自動的に破棄されます。</p> </div> <div class="methodShort" id="Flash"> <h3>Flash</h3> <p>タスクバーのウィンドウのボタンを点滅させます。</p> <pre class="Syntax">MyGui.<span class="func">Flash</span>(<span class="optional">Blink</span>)</pre> <h4 id="Flash_Parameters">パラメータ</h4> <dl> <dt>Blink</dt><dd> <p>型:<a href="../Concepts.htm#boolean">論理値</a></p> <p>省略したときは、デフォルトでTrueになります。</p> <p>If <strong>true</strong>, the window's button in the taskbar will blink. これは、ウィンドウのタイトルバーやタスクバーボタン(ある場合)の色を反転させることによって行われます。</p> <p>If <strong>false</strong>, the original colors of the title bar and taskbar button will be restored (but the actual behavior might vary depending on OS version).</p> </dd> </dl> <h4 id="Flash_Remarks">備考</h4> <p>下の例では、ウィンドウが3回点滅していますが、これは1回の点滅が反転して元に戻るからです:</p> <pre>Loop 6 { MyGui.Flash Sleep 500 <em>; この値にはかなり敏感で、変更すると予期せぬ形で動作が変化する可能性があります。</em> }</pre> </div> <div class="methodShort" id="GetClientPos"> <h3>GetClientPos</h3> <p>ウィンドウのクライアントエリアの位置とサイズを取得します。</p> <pre class="Syntax">MyGui.<span class="func">GetClientPos</span>(<span class="optional">&amp;X, &amp;Y, &amp;Width, &amp;Height</span>)</pre> <h4 id="GetClientPos_Parameters">パラメータ</h4> <dl> <dt>&amp;X, &amp;Y</dt> <dd> <p>型:<a href="../Concepts.htm#variable-references">VarRef</a></p> <p>省略した場合は、対応する値は保存されません。そうでないときは、クライアント領域の左上隅のX座標とY座標を格納する出力変数への参照を指定します。</p> </dd> <dt>&amp;Width, &amp;Height</dt> <dd> <p>型:<a href="../Concepts.htm#variable-references">VarRef</a></p> <p>省略した場合は、対応する値は保存されません。そうでないときは、クライアント領域の幅と高さを格納する出力変数への参照を指定します。</p> <p>widthはクライアントエリアの左右の水平距離、heightは上下の垂直距離です(単位:ピクセル)。</p> </dd> </dl> <h4 id="GetClientPos_Remarks">備考</h4> <p>クライアント領域はウィンドウの一部で、コントロールを含むことができます。ウィンドウのタイトルバー、メニュー(標準のものがある場合)、ボーダーは除外されます。クライアント領域の位置とサイズは、<a href="#GetPos">Gui.GetPos</a>が返す値よりもOSのバージョンやテーマに依存しません。</p> <p><a href="WinGetClientPos.htm">WinGetClientPos</a>とは異なり、このメソッドは<em>Width</em>と <em>Height</em>に <a href="#DPIScale">DPIスケーリング</a>を適用します(<code>-DPIScale</code>オプションが使用されていない場合)。</p> </div> <div class="methodShort" id="GetPos"> <h3>GetPos</h3> <p>ウィンドウの位置と大きさを取得します。</p> <pre class="Syntax">MyGui.<span class="func">GetPos</span>(<span class="optional">&amp;X, &amp;Y, &amp;Width, &amp;Height</span>)</pre> <h4 id="GetPos_Parameters">パラメータ</h4> <dl> <dt>&amp;X, &amp;Y</dt> <dd> <p>型:<a href="../Concepts.htm#variable-references">VarRef</a></p> <p>省略した場合は、対応する値は保存されません。Otherwise, specify references to the output variables in which to store the X and Y coordinates of the window's upper left corner, in screen coordinates.</p> </dd> <dt>&amp;Width, &amp;Height</dt> <dd> <p>型:<a href="../Concepts.htm#variable-references">VarRef</a></p> <p>省略した場合は、対応する値は保存されません。Otherwise, specify references to the output variables in which to store the width and height of the window.</p> <p>widthはウィンドウの左右の水平距離、heightは上下の垂直距離です(単位:ピクセル)。</p> </dd> </dl> <h4 id="GetPos_Remarks">備考</h4> <p>As the coordinates returned by this method include the window's title bar, menu and borders, they may be dependent on OS version and theme. To get more consistent values across different systems, consider using <a href="#GetClientPos">Gui.GetClientPos</a> instead.</p> <p><a href="WinGetPos.htm">WinGetPos</a>とは異なり、このメソッドは<em>Width</em>と <em>Height</em>に <a href="#DPIScale">DPIスケーリング</a>を適用します(<code>-DPIScale</code>オプションが使用されていない場合)。</p> </div> <div class="methodShort" id="Hide"> <h3>Hide</h3> <p>ウィンドウを隠します。</p> <pre class="Syntax">MyGui.<span class="func">Hide</span>()</pre> </div> <div class="methodShort" id="Maximize"> <h3>Maximize</h3> <p>ウィンドウの非表示を解除し(必要な場合)、最大化します。</p> <pre class="Syntax">MyGui.<span class="func">Maximize</span>()</pre> </div> <div class="methodShort" id="Minimize"> <h3>Minimize</h3> <p>ウィンドウの非表示を解除し(必要な場合)、最小化します。</p> <pre class="Syntax">MyGui.<span class="func">Minimize</span>()</pre> </div> <div class="methodShort" id="Move"> <h3>Move</h3> <p>ウィンドウを移動またはサイズ変更します。</p> <pre class="Syntax">MyGui.<span class="func">Move</span>(<span class="optional">X, Y, Width, Height</span>)</pre> <h4 id="Move_Parameters">パラメータ</h4> <dl> <dt>X, Y</dt> <dd> <p>型:<a href="../Concepts.htm#numbers">整数</a></p> <p>If either is omitted, the position in that dimension will not be changed. Otherwise, specify the X and Y coordinates of the upper left corner of the window's new location, in screen coordinates.</p> </dd> <dt>Width, Height</dt> <dd> <p>型:<a href="../Concepts.htm#numbers">整数</a></p> <p>If either is omitted, the size in that dimension will not be changed. Otherwise, specify the new width and height of the window (in pixels).</p> </dd> </dl> <h4 id="Move_Remarks">備考</h4> <p><a href="WinMove.htm">WinMove</a>とは異なり、この方法では<em>Width</em>と <em>Height</em>に <a href="#DPIScale">DPIスケーリング</a>を適用します(<code>-DPIScale</code>オプションが使用されていない場合)。</p> <h4 id="Move_Examples">例</h4> <pre>MyGui.Move(10, 20, 200, 100) MyGui.Move(VarX+10, VarY+5, VarW*2, VarH*1.5) <em>; 左右を10ピクセルずつ拡大します。</em> MyGui.GetPos(&amp;x,, &amp;w) MyGui.Move(x-10,, w+20)</pre> </div> <div class="methodShort" id="OnEvent"> <h3>OnEvent</h3> <p>与えられたイベントが発生したときに呼び出される関数またはメソッドを登録します。</p> <pre class="Syntax">MyGui.<span class="func">OnEvent</span>(EventName, Callback <span class="optional">, AddRemove</span>)</pre> <p>詳しくは<a href="GuiOnEvent.htm">OnEvent</a>を参照してください。</p> </div> <div class="methodShort" id="Opt"> <h3>Opt</h3> <p>ウィンドウの外観や動作に関するさまざまなオプションやスタイルを設定します。</p> <pre class="Syntax">MyGui.<span class="func">Opt</span>(Options)</pre> <h4 id="Opt_Parameters">パラメータ</h4> <dl> <dt>Options</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>Zero or more of the following options and styles, each separated from the next with one or more spaces or tabs.</p> <p>パフォーマンス上の理由から、すべてのオプションを1行で設定し、ウィンドウを作成する前に(つまり、<a href="#Add">Gui.Add</a>などの他のメソッドを使用する前に)設定することをお勧めします。</p> <p>このパラメータの効果は累積的です。つまり、明示的に指定された設定のみを変更し、他の設定はすべて変更されないままです。</p> <p>オプションを追加する場合はプラス記号を、削除する場合はマイナス記号を指定します。事例:<code>MyGui.Opt("+Resize -MaximizeBox")</code>。</p> <p><strong>AlwaysOnTop:</strong><a href="WinSetAlwaysOnTop.htm">WinSetAlwaysOnTop</a>と同じ効果で、ウィンドウが他のすべてのウィンドウより上にあるようにします。</p> <p><strong>Border:</strong>ウィンドウの周囲に細い線のボーダーを提供します。これは一般的ではありません。</p> <p><strong>Caption</strong>(デフォルトで存在します):タイトルバーと太いウィンドウのボーダー/エッジを提供します。<a href="WinSetTransColor.htm">WinSetTransColor</a>を使用するウィンドウからキャプションを削除する場合、TransColorを設定した後に削除してください。</p> <p><strong>Disabled:</strong>ウィンドウを無効化し、ユーザーがそのコントロールと対話することを防ぎます。他のウィンドウを所有するウィンドウでよく使われます(「<a href="#Owner">所有者</a>」参照)。</p> <p id="DPIScale"><strong>DPIScale:</strong>デフォルトで有効になっている<a href="../misc/DPIScaling.htm">DPIスケーリング</a>を無効にするには、<code>MyGui.Opt("-DPIScale")</code>を使用します。DPIスケーリングが有効な場合、Guiおよび<a href="GuiControl.htm">GuiControl</a>のメソッド/プロパティに渡されたり、そこから取得された座標やサイズは、<a href="../Variables.htm#ScreenDPI">画面のDPI</a>に基づいて自動的にスケーリングされます。例えば、DPIが144(150&nbsp;%)の場合、<code>MyGui.Show("w100")</code>でGuiを150(100 * 1.5)ピクセル幅にし、マウスや<a href="WinMove.htm">WinMove</a>でウィンドウを200ピクセル幅にリサイズすると<code>MyGui.GetClientPos(,,&amp;W)</code>で<em>Wに</em>133(200 // 1.5)設定します。<a href="../Variables.htm#ScreenDPI">A_ScreenDPI</a>は、システムの現在の DPI を含んでいます。</p> <p>DPIスケーリングはGuiと<a href="GuiControl.htm">GuiControl</a>のメソッド/プロパティにのみ適用されるので、ControlGetPosやWinGetPosのような他のソースから直接得られる座標は動作しません。対処法はいくつもあります:</p> <ul> <li>可能な限り、ハードコードされた座標の使用を避けます。例えば、コントロールの位置指定に<a href="#xp">XP</a>、<a href="#xs">XS</a>、<a href="#xm">XM</a>、<a href="#PosPlusMargin">X+M</a>オプションを使い、高さをピクセルではなく<a href="#R">テキストの行数</a>で指定します。</li> <li>必要に応じて、スケーリングをその場で有効化(<code>MyGui.Opt("+DPIScale")</code>)、無効化(<code>MyGui.Opt("-DPIScale")</code>)することができます。設定を変更しても、すでに設定されている位置やサイズには影響しません。</li> <li>座標を手動でスケーリングします。例えば、<code>x*(A_ScreenDPI/96)</code>はxを論理/GUI座標から物理/非GUI座標に変換します。</li> </ul> <p id="LastFound"><strong>LastFound:</strong>ウィンドウを<a href="../misc/WinTitle.htm#LastFoundWindow">最後に見つかったウィンドウ</a>に設定します(ただし、<a href="GuiOnEvent.htm#Threads">GUIスレッド</a>では自動的に行われるため不要)。これにより、<a href="WinGetStyle.htm">WinGetStyle</a>や <a href="WinSetTransparent.htm">WinSetTransparent</a>などの関数が、ウィンドウが隠れていても操作できるようになります(つまり、<a href="DetectHiddenWindows.htm">DetectHiddenWindows</a>は不要です)。これは、ウィンドウを表示する前にウィンドウのプロパティを変更する場合に特に有効です。事例:</p> <pre>MyGui.Opt("+LastFound") WinSetTransColor(CustomColor " 150", MyGui) MyGui.Show()</pre> <p id="MaximizeBox"><strong>MaximizeBox:</strong>タイトルバーの最大化ボタンを有効にします。これは、下記の<em>Resizeの</em>一部としても含まれています。</p> <p id="MinimizeBox"><strong>MinimizeBox</strong>(デフォルトで存在):タイトルバーの最小化ボタンを有効にします。</p> <p id="MinSize"><strong>MinSize</strong> および <strong>MaxSize</strong>:ユーザーがウィンドウの端をドラッグしてサイズを変更するときなど、ウィンドウの最小および最大サイズを決定します。Specify <code>+MinSize</code> and/or <code>+MaxSize</code> (i.e. without suffix) to use the window's current size as the limit (if the window has no current size, it will use the size from the first use of <a href="#Show">Gui.Show</a>). または、幅の後にXを付け、その後に高さを付けます:<code>MyGui.Opt("+Resize +MinSize640x480")</code>。寸法はピクセル単位で、ウィンドウのクライアント領域(ボーダー、タイトルバー、<a href="#MenuBar">メニューバー</a>を除く)の大きさを指定します。各数値を16進数ではなく、10進数で指定します。</p> <p>幅または高さのどちらかを省略して変更しないことも可能です(例:<code>+MinSize640x</code>、<code>+MinSizex480</code>)。さらに、Min/MaxSizeを複数回指定することで、一方の次元にウィンドウの現在のサイズを、他方の次元に明示的なサイズを使用することができます。例えば、<code>+MinSize +MinSize640x</code>は、高さにウィンドウの現在のサイズ、幅に640を使用します。</p> <p>MinSizeと MaxSizeが一度も使われていない場合、オペレーティングシステムのデフォルトが使われます(同様に、<code>MyGui.Opt("-MinSize -MaxSize")</code>でデフォルトに戻ることができます)。注:の場合、ユーザーによるサイズ変更を可能にするために、ウィンドウには<a href="#Resize">+Resize</a>が必要です。</p> <p id="OwnDialogs"><strong>OwnDialogs:</strong><code>MyGui.Opt("+OwnDialogs")</code>は、その後に表示される<a href="MsgBox.htm">MsgBox</a>、<a href="InputBox.htm">InputBox</a>、<a href="FileSelect.htm">FileSelect</a>、<a href="DirSelect.htm">DirSelect</a>ダイアログをウィンドウで所有するための<a href="../misc/Threads.htm">各スレッド</a>(ボタンコントロールのイベント処理関数など)で指定する必要があります。このようなダイアログはモーダルであり、ユーザーはダイアログを閉じるまでGUIウィンドウと対話することができません。By contrast, <a href="ToolTip.htm">ToolTip</a> windows do not become modal even though they become owned; they will merely stay always on top of their owner. いずれの場合も、所有するダイアログやウィンドウは、そのGUIウィンドウが<a href="#Destroy">破棄</a>されると自動的に破棄されます。</p> <p>他の<a href="../misc/Threads.htm">スレッド</a>に影響を与えないため、通常、この設定をオフに戻す必要はありません。ただし、スレッドが所有と未所有の両方のダイアログを表示する必要がある場合は、<code>MyGui.Opt("-OwnDialogs")</code>によってこの設定をオフにすることができます。</p> <p id="Owner"><strong>Owner:</strong> Use <code>+Owner</code> to make the window owned by another. 所有するウィンドウは、デフォルトではタスクバーボタンがなく、表示されているときは常に所有者の上に表示されます。また、所有者が破壊されると自動的に破壊されます。<code>+Owner</code>は、所有するウィンドウが作成される前でも後でも使用できます。<code>+Owner</code>の使い方には、以下の2通りがあります:</p> <pre>MyGui.Opt("+Owner" OtherGui.Hwnd) <em>; GUIを<i>OtherGui</i>の所有にする。</em> MyGui.Opt("+Owner") <em>; タスクバーボタンの表示を防ぐため、GUIを<a href="../Variables.htm#ScriptHwnd">スクリプトのメインウィンドウ</a>に所有させる。</em></pre> <p><code>+Owner</code>は、任意のトップレベルウィンドウの<a href="#Hwnd">HWND</a>にすぐに続くことができます。</p> <p>オーナーウィンドウが表示されているときに、ユーザーがオーナーと対話できないようにするには、<code>MyGui.Opt("+Disabled")</code>でオーナーを無効化します。後で(所有するウィンドウをキャンセルしたり破棄するとき)、<code>MyGui.Opt("-Disabled")</code>で所有者を再有効化します。オーナーが自動的に再活性化されるように、キャンセル/破棄の前にこの操作を行います。</p> <p id="Parent"><strong>Parent:</strong>ウィンドウやコントロールの<a href="#Hwnd">HWNDに続けて</a> <code>+Parent</code>を使用すると、そのウィンドウの親として使用することができます。GUIをトップレベルのウィンドウに戻すには、<code>-Parent</code>を使用します。このオプションは、ウィンドウを作成した後でも機能します。既知の制限事項:</p> <ul> <li><a href="../Program.htm#Installer_uiAccess">UIアクセスで実行</a>すると、新しい親が常にトップで子ウィンドウがそうでない場合、<code>+Parent</code>オプションが既存のウィンドウで機能しない。</li> <li>The <code>+Parent</code> option may fail during GUI creation if the parent window is external, but may work after the GUI is created. This is due to differences in how styles are applied.</li> </ul> <p id="Resize"><strong>Resize:</strong>ウィンドウのサイズを変更できるようにし、タイトルバーの最大化ボタンを有効にします。最大化ボタンを有効にしない場合は、<code>+Resize -MaximizeBox</code>を指定します。</p> <p><strong>SysMenu</strong>(デフォルトで存在):ウィンドウ左上のシステムメニューとアイコンを省略する場合は、<code>-SysMenu</code>(マイナスSysMenu)を指定します。これにより、タイトルバーの最小化、最大化、および閉じるボタンも省略されます。</p> <p id="Theme"><strong>Theme:</strong><code>Themeを</code>指定すると、その後に作成されるウィンドウ内のコントロールはすべてクラシックテーマの外観となります。現在のテーマに従った制御を後から追加で作成する場合は、<code>+Theme</code>でオンに戻してください。注:このオプションは、「クラシックテーマ」が有効な場合は効果がありません。この設定は、コントロールの作成時にオプションで<code>+Theme</code>または<code>-Theme</code>を指定することで、個々のコントロールに対して変更することができます。</p> <p><strong>ToolWindow:</strong>タイトルバーの幅が狭くなりますが、ウィンドウにタスクバーボタンが表示されなくなります。<a href="../misc/Styles.htm#WS_MAXIMIZEBOX">WS_MAXIMIZEBOX</a>と<a href="../misc/Styles.htm#WS_MINIMIZEBOX">WS_MINIMIZEBOX</a>のスタイルが存在するかどうかに関わらず、常に最大化、最小化ボタンを非表示にします。</p> <p><strong>(Unnamed Style):</strong> Specify a plus or minus sign followed immediately by a decimal or hexadecimal <a href="../misc/Styles.htm">style number</a>.</p> <p><strong>(Unnamed ExStyle):</strong> Specify a plus or minus sign followed immediately by the letter E and a decimal or hexadecimal extended style number. 例えば、<code>+E0x40000</code>は、WS_EX_APPWINDOWスタイルを追加し、タスクバーボタンがないウィンドウに、タスクバーボタンを提供します。ここに書かれていない他の拡張スタイル(ほとんど使用されないため)については、「<a href="https://learn.microsoft.com/windows/win32/winmsg/extended-window-styles">拡張ウィンドウスタイル|Microsoft Docs</a>」を参照し、完全なリストを入手してください。</p></dd> </dl> </div> <div class="methodShort" id="Restore"> <h3>Restore</h3> <p>Unhides the window (if necessary) and unminimizes or unmaximizes it.</p> <pre class="Syntax">MyGui.<span class="func">Restore</span>()</pre> </div> <div class="methodShort" id="SetFont"> <h3>SetFont</h3> <p>これ以降にウィンドウに追加されるコントロールのフォントの書体、サイズ、スタイル、カラーを設定します。</p> <pre class="Syntax">MyGui.<span class="func">SetFont</span>(<span class="optional">Options, FontName</span>)</pre> <h4 id="SetFont_Parameters">パラメータ</h4> <dl> <dt>Options</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>選択肢は0個以上。各オプションは、1文字に続けて値を指定するか、1つの単語を指定します。複数のオプションを指定する場合は、各オプションの間にスペースを入れてください。事例:<code>cBlue s12 bold</code>。</p> <p>以下の単語に対応しています:<strong>bold</strong>、<em>italic</em>、<s>strike</s>、<u>underline</u>、norm。<em>Norm</em>は、フォントを通常のウェイト/太さに戻し、イタリック、ストライク、アンダーラインをオフにします(ただし、既存の色とサイズは保持されます)。ノームを使ってすべての属性をオフにし、他の属性を選択的にオンにすることが可能です。例えば、<code>norm italic</code>を指定すると、フォントはノーマルに設定された後、イタリックに設定されます。</p> <p><strong>C:</strong>色名(<a href="../misc/Colors.htm">カラーチャート</a>参照)またはRGB値 -- あるいはDefaultを指定すると、システムのデフォルトカラー(ほとんどのシステムでは黒)に戻ります。例値:<code>cRed</code>、<code>cFFFFAA</code>、<code>cDefault</code>。Note: <a href="GuiControls.htm#Button">Buttons</a> and <a href="GuiControls.htm#StatusBar">status bars</a> do not obey custom colors. また、Cオプションを含めることで、現在のフォントカラー以外のフォントカラーを持つ個別コントロールを作成することができます。事例:<code>MyGui.Add("Text", "cRed", "My Text")</code>。</p> <p><strong>S:</strong>サイズ(単位:ポイント)。事例:<code>s12</code>(16進数ではなく、10進数を指定します)</p> <p><strong>W:</strong>ウェイト(太字)、1~1000の数値(400が普通、700が太字)。事例:<code>w600</code>(16進数ではなく10進数で指定してください)</p> <p id="fontq"><strong>Q:</strong>テキスト描画の品質。事例:<code>q3</code>。Qの後には、次の表から番号を選んでください:</p> <table class="info"> <tr> <th>数</th> <th abbr="定数">ウィンドウズ定数</th> <th abbr="説明">説明</th> </tr> <tr> <td>0</td> <td>DEFAULT_QUALITY</td> <td>フォントの外観は問いません。</td> </tr> <tr> <td>1</td> <td>DRAFT_QUALITY</td> <td>フォントの外観は、PROOF_QUALITY 値を使用する場合よりも重要ではありません。</td> </tr> <tr> <td>2</td> <td>PROOF_QUALITY</td> <td>フォントの文字品質は、論理フォント属性の完全一致よりも重要です。</td> </tr> <tr> <td>3</td> <td>NONANTIALIASED_QUALITY</td> <td>フォントのアンチエイリアスは行われません。つまり、フォントスムージングは行われません。</td> </tr> <tr> <td>4</td> <td>ANTIALIASED_QUALITY</td> <td>フォントがアンチエイリアスをサポートしており、フォントのサイズが小さすぎたり大きすぎたりしない場合は、アンチエイリアス、またはスムージングが行われます。</td> </tr> <tr> <td>5</td> <td>CLEARTYPE_QUALITY</td> <td>設定されている場合、テキストは(可能な限り)ClearTypeアンチエイリアシング方式でレンダリングされます。</td> </tr> </table> <p>これらの値の意味の詳細については、<a href="https://learn.microsoft.com/windows/win32/api/wingdi/nf-wingdi-createfonta">Microsoft Docs:CreateFont</a>を参照してください。</p> <p>通常、最高画質がデフォルトであるため、この機能は、アンチエイリアスを無効にすることで、テキストがより鮮明になる特定のケースで使用されることが一般的です。</p></dd> <dt>FontName</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p><em>FontName</em>には、<a href="../misc/FontsStandard.htm">フォントテーブル</a>のような任意のフォントの名前を指定することができる。<em>FontName</em>が省略された場合、またはシステム上に存在しない場合は、以前のフォントの書体が使用されます(存在しない場合は、システムのデフォルトのGUI書体が使用されます)。この動作は、GUIウィンドウが複数のシステムで同じようなフォントを持つようにするのに便利で、それらのシステムの一部が優先フォントを持たない場合であっても、この動作は有効です。例えば、以下の方法を順番に使用すると、VerdanaはArialよりも優先され、MS Sans Serifよりも優先されます:</p> <pre>MyGui.SetFont(, "MS Sans Serif") MyGui.SetFont(, "Arial") MyGui.SetFont(, "Verdana") <em>; Preferred font.</em></pre></dd> </dl> <h4 id="SetFont_Remarks">備考</h4> <p>両方のパラメーターを省略すると、フォントをシステムのデフォルトのGUI書体、サイズ、色に戻すことができます。それ以外の場合、指定されていないフォント属性は、前のフォントからコピーされます。</p> <p>また、オペレーティングシステムには、フォント、色、アイコンを選択するダイアログボックスが標準装備されています。These dialogs can be displayed via <a href="DllCall.htm">DllCall</a> in combination with <a href="https://learn.microsoft.com/previous-versions/windows/desktop/legacy/ms646914(v=vs.85)">comdlg32\ChooseFont</a>, <a href="https://learn.microsoft.com/previous-versions/windows/desktop/legacy/ms646912(v=vs.85)">comdlg32\ChooseColor</a>, or <a href="https://learn.microsoft.com/windows/win32/api/shlobj_core/nf-shlobj_core-pickicondlg">shell32\PickIconDlg</a>. Search the forums for examples.</p> </div> <div class="methodShort" id="Show"> <h3>Show</h3> <p>デフォルトでは、ウィンドウを可視化し、(必要に応じて)最小化を解除し、<a href="WinActivate.htm">アクティブ化</a>します。</p> <pre class="Syntax">MyGui.<span class="func">Show</span>(<span class="optional">Options</span>)</pre> <h4 id="Show_Parameters">パラメータ</h4> <dl> <dt>Options</dt><dd> <p>型:<a href="../Concepts.htm#strings">文字列</a></p> <p>以下のX、Y、W、Hのオプションを省略すると、ウィンドウは以前のサイズと位置を維持します。前の位置がない場合、後述のXおよびYオプションがなければ、ウィンドウは1次元または両次元で自動中心化されます。以前のサイズがない場合、ウィンドウは、それが含むコントロールのサイズと位置に応じて自動サイズになります。</p> <p><em>オプション</em>には、以下の文字列を0個以上指定することができます(各数値は16進数ではなく10進数で指定してください):</p> <p><strong>W</strong><em>n</em>:ウィンドウのクライアント領域の幅(ピクセル)を<em>n</em>に指定する(クライアント領域はウィンドウのボーダー、タイトルバー、<a href="#MenuBar">メニューバー</a>を除く)。</p> <p><strong>H</strong><em>n</em>:ウィンドウのクライアント領域の高さを<em>n</em>にピクセル単位で指定します。</p> <p><strong>X</strong><em>n</em>:画面上のウィンドウの X 位置を<em>n</em>にピクセル単位で指定します。ポジション0は、画面上で見えるピクセルの一番左の列です。</p> <p><strong>Y</strong><em>n</em>:画面上のウィンドウの Y 位置をピクセル単位で<em>n</em>に指定します。ポジション0は、画面上で見える一番上の画素列です。</p> <p><strong>Center:</strong>画面上でウィンドウを縦横にセンタリングします。</p> <p><strong>xCenter:</strong>画面上でウィンドウを水平方向にセンタリングします。事例:<code>MyGui.Show("xCenter y0")</code>。</p> <p><strong>yCenter:</strong>画面上でウィンドウを縦方向にセンタリングします。</p> <p id="AutoSize"><strong>AutoSize:</strong>現在表示されているコントロールのみを収容するためにウィンドウのサイズを変更します。これは、新しいコントロールが追加されたり、既存のコントロールがサイズ変更されたり、隠されたり、隠されなかったりした後に、ウィンドウのサイズを変更するのに便利です。事例:<code>MyGui.Show("AutoSize Center")</code>。</p> <p><em><strong>また、以下のいずれかが存在する場合があります:</strong></em></p> <p><strong>Minimize:</strong>ウィンドウを最小化し、その下のウィンドウをアクティブにします。</p> <p><strong>Maximize:</strong>ウィンドウを最大化し、アクティブ化します。</p> <p><strong>Restore:</strong>必要に応じて、ウィンドウの最小化または最大化を解除します。また、必要に応じてウィンドウを表示し、起動します。</p> <p><strong>NoActivate:</strong>必要に応じて、ウィンドウの最小化または最大化を解除します。また、ウィンドウをアクティブにしなくても表示されます。</p> <p><strong>NA:</strong>ウィンドウをアクティブにせずに表示します。ウィンドウが最小化された場合、その状態を維持しますが、おそらくzオーダー(alt-tabセレクタで見られる順序)でより高く上昇します。ウィンドウが以前は隠れていた場合、アクティブなウィンドウが非アクティブになっていないにもかかわらず、ウィンドウがアクティブなウィンドウの上に表示されてしまうことが考えられます。</p> <p><strong>Hide:</strong>ウィンドウを隠し、その下にあるウィンドウをアクティブにします。この機能は<a href="#Hide">Gui.Hide</a>と同じですが、非表示のウィンドウを表示せずに移動したりサイズを変更したりすることができます。事例:<code>MyGui.Show("Hide x55 y66 w300 h200")</code>。</p></dd> </dl> </div> <div class="methodShort" id="Submit"> <h3>Submit</h3> <p>名前付きコントロールから値を収集し、<a href="Object.htm">オブジェクトに</a>合成します。オプションでウィンドウを非表示にすることができます。</p> <pre class="Syntax">NamedCtrlValues := MyGui.<span class="func">Submit</span>(<span class="optional">Hide</span>)</pre> <h4 id="Submit_Parameters">パラメータ</h4> <dl> <dt>Hide</dt><dd> <p>型:<a href="../Concepts.htm#boolean">論理値</a></p> <p>省略したときは、デフォルトでTrueになります。</p> <p>If <strong>true</strong>, the window will be hidden.</p> <p>If <strong>false</strong>, the window will not be hidden.</p> </dd> </dl> <h4 id="Submit_Return_Value">戻り値</h4> <p>型:<a href="../Concepts.htm#objects">オブジェクト</a></p> <p>This method returns an object that contains one own property per named control, like <code>NamedCtrlValues.%GuiCtrl.<a href="GuiControl.htm#Name">Name</a>% := GuiCtrl.<a href="GuiControl.htm#Value">Value</a></code>, with the exceptions noted below. <a href="GuiControl.htm#Value">GuiCtrl.Value</a>をサポートし、名前が付与された入力可能なコントロールのみが含まれます。Use <code>NamedCtrlValues.NameOfControl</code> to retrieve an individual value or <a href="Object.htm#OwnProps">OwnProps</a> to enumerate them all.</p> <p><a href="GuiControls.htm#DropDownList">DropDownList</a>、<a href="GuiControls.htm#ComboBox">ComboBox</a>、<a href="GuiControls.htm#ListBox">ListBox</a>、<a href="GuiControls.htm#Tab">Tab</a>については、コントロールに<u>AltSubmit</u>オプションが<a href="#AltSubmit">ない</a>場合、またはComboBoxのテキストがリストアイテムと一致しない場合、その位置番号ではなく、選択アイテム/Tabのテキストが格納されます。それ以外の場合は、<a href="GuiControl.htm#Value">Value</a>(アイテムの位置番号)が格納されます。</p> <p id="submit-radio">ラジオグループの<a href="GuiControls.htm#Radio">ラジオ</a>ボタンに1つだけ名前がある場合、Submitはコントロールの<a href="GuiControl.htm#Value">Value</a>ではなく、現在選択されているボタンの番号を保存します。1は1番目のラジオボタン(オリジナル作成順)、2は2番目のラジオボタン、といった具合に。選択されているボタンがない場合は、0が格納されます。</p> <p>入力可能でないため除外:<a href="GuiControls.htm#Text">Text</a>、<a href="GuiControls.htm#Pic">Pic</a>、<a href="GuiControls.htm#GroupBox">GroupBox</a>、<a href="GuiControls.htm#Button">Button</a>、<a href="GuiControls.htm#Progress">Progress</a>、<a href="GuiControls.htm#Link">Link</a>、<a href="GuiControls.htm#StatusBar">StatusBar</a>。</p> <p>同様に除外:<a href="ListView.htm">ListView</a>、<a href="TreeView.htm">TreeView</a>、<a href="GuiControls.htm#ActiveX">ActiveX</a>、<a href="GuiControls.htm#Custom">Custom</a>。</p> </div> <div class="methodShort" id="__Enum"> <h3>__Enum</h3> <p>Enumerates the window's controls.</p> <pre class="Syntax">MyGuiのCtrlの場合</pre> <pre class="Syntax">MyGuiのHwnd、Ctrlの場合</pre> <p>新しい<a href="Enumerator.htm">列挙者</a>を返します。このメソッドは通常、直接呼び出されることはありません。その代わりに、Guiオブジェクトは直接<a href="For.htm">forループに渡され、forループ</a>は__Enumを一度呼び出し、ループの各繰り返しで列挙器を一度呼び出します。列挙者を呼び出すたびに、次のコントロールが返されます。forループの変数は、列挙者のパラメータに対応しており、次のようになっています:</p> <dl> <dt>Hwnd</dt> <dd> <p>型:<a href="../Concepts.htm#numbers">整数</a></p> <p>コントロールのHWNDです。2パラメータモード時のみ存在します。</p> </dd> <dt>Ctrl</dt> <dd> <p>型:<a href="../Concepts.htm#objects">オブジェクト</a></p> <p>The control's <a href="GuiControl.htm">GuiControl object</a>.</p> </dd> </dl> <p>事例:</p> <pre>MyGuiのHwnd、GuiCtrlObjの場合 MsgBox "Control #" A_Index " is " GuiCtrlObj.ClassNN</pre> </div> <div class="methodShort" id="__New"> <h3>__New</h3> <p>新しいGuiインスタンスを構築します。</p> <pre class="Syntax">MyGui.<span class="func">__New</span>(<span class="optional">Options, Title, EventObj</span>)</pre> <p>Guiのサブクラスは、__Newをオーバーライドして、独自のイベントを処理するために<code>super.__New(Options, Title, this)</code>をコールすることができます。このような場合、メインウィンドウのイベント(閉じるなど)は、<code>this</code>はすでにGuiへの参照を含んでいるため、明示的なGuiパラメータを渡すことはありません。</p> <p>The Gui retains a reference to <em>EventObj</em> for the purpose of calling event handlers, and releases it when the window is destroyed. If <em>EventObj</em> itself contains a reference to the Gui, this would typically create a circular reference which prevents the Gui from being <a href="#Destroy">automatically destroyed</a>. However, an exception is made for when <em>EventObj</em> is the Gui itself, to avoid a circular reference in that case.</p> <p>ウィンドウが既に構築または破棄されている場合は、例外が発生します。</p> </div> <h2 id="Properties">プロパティ</h2> <div class="methodShort" id="BackColor"> <h3>BackColor</h3> <p>ウィンドウの背景色を取得または設定します。</p> <pre class="Syntax">CurrentColor := MyGui.<span class="func">BackColor</span></pre> <pre class="Syntax">MyGui.<span class="func">BackColor</span> := NewColor</pre> <p><em>CurrentColor</em>は、このプロパティで以前に設定された現在の色の 6 桁の RGB 値であり、デフォルトの色が使用されている場合は空文字列です。</p> <p><em>NewColor</em>は、16の主要な<a href="../misc/Colors.htm">HTMLカラー名</a>、16進数のRGBカラー値(接頭辞0xはオプション)、純粋な数値のRGBカラー値、またはデフォルトカラーを表すDefault(または空の文字列)のいずれかです。例値:<code>"Silver"</code>、<code>"FFFFAA"</code>、<code>0xFFFFAA</code>、<code>"Default"</code>、<code>""</code>。</p> <p>デフォルトでは、ウィンドウの背景色は、ボタンの表面のシステムの色になります。</p> <p>この例のように、<a href="#MenuBar">メニューバー</a>と、そのサブメニューの色を変更することができます:<code>MyMenuBar.<a href="Menu.htm#SetColor">SetColor</a> "White"</code>。</p> <p>背景を透明にする場合は、<a href="WinSetTransColor.htm">WinSetTransColor</a>を使用します。ただし、<a href="#BackColor">Gui.BackColor</a>でカスタムウィンドウを割り当てずにこの操作を行うと、ボタンも透明になります。これを防ぐには、まずカスタムカラーを割り当て、そのカラーを透明にします。事例:</p> <pre>MyGui.BackColor := "EEAA99" WinSetTransColor("EEAA99", MyGui)</pre> <p>背景が透明なウィンドウから、ボーダーとタイトルバーを追加で削除するには、次のようにします:<code>MyGui.Opt("-Caption")</code></p> <p>上記を説明するために、本ページの下部付近にOSD(オンスクリーンディスプレイ)の例を掲載しています。</p> </div> <div class="methodShort" id="FocusedCtrl"> <h3>FocusedCtrl</h3> <p>Retrieves the <a href="GuiControl.htm">GuiControl object</a> of the window's focused control.</p> <pre class="Syntax">GuiCtrlObj := MyGui.<span class="func">FocusedCtrl</span></pre> <p>注:効果的に使用するためには、一般的にウィンドウを最小化または非表示にする必要はありません。</p> </div> <div class="methodShort" id="Hwnd"> <h3>Hwnd</h3> <p>ウィンドウのウィンドウハンドル(HWND)を取得します。</p> <pre class="Syntax">CurrentHwnd := MyGui.<span class="func">Hwnd</span></pre> <p>GUIのHWNDは、<a href="PostMessage.htm">PostMessage</a>、<a href="SendMessage.htm">SendMessage</a>、<a href="DllCall.htm">DllCall</a>で、よく使われます。また、<a href="../misc/WinTitle.htm#ahk_id">WinTitleパラメータ</a>で直接使用することも可能です。</p></div> <div class="methodShort" id="MarginX"> <h3>MarginX</h3> <p>側面とその後に作成されるコントロールの間の水平マージンのサイズを取得または設定します。</p> <pre class="Syntax">CurrentValue := MyGui.<span class="func">MarginX</span></pre> <pre class="Syntax">MyGui.<span class="func">MarginX</span> := NewValue</pre> <p><em>CurrentValue</em>は、現在の水平マージンのピクセル数です。</p> <p><em>NewValue</em>は、<a href="#XY">X座標</a>が明示されていないコントロールを自動配置する際に、ウィンドウの左右に残すスペースのピクセル数です。また、マージンは、自動配置されたコントロール同士を隔てる水平方向の距離を決定するために使用されます。最後に、マージンは<a href="#Show">Gui.Show</a>の最初の使用でウィンドウのサイズを計算する際に考慮されます(サイズが明示的に指定されていない場合)。</p> <p>デフォルトでは、このマージンは現在選択されている<a href="#SetFont">フォント</a>のサイズに比例します(左と右はfont-heightの1.25倍)。</p> </div> <div class="methodShort" id="MarginY"> <h3>MarginY</h3> <p>側面とその後に作成されるコントロールの間の垂直マージンのサイズを取得または設定します。</p> <pre class="Syntax">CurrentValue := MyGui.<span class="func">MarginY</span></pre> <pre class="Syntax">MyGui.<span class="func">MarginY</span> := NewValue</pre> <p><em>CurrentValue</em>は、現在の垂直マージンのピクセル数です。</p> <p><em>NewValue</em>は、<a href="#XY">Y座標</a>が明示されていないコントロールを自動配置する際に、ウィンドウの上側と下側に残すスペースのピクセル数です。また、マージンは、自動配置されたコントロール同士を分離する垂直距離を決定するために使用されます。最後に、マージンは<a href="#Show">Gui.Show</a>の最初の使用でウィンドウのサイズを計算する際に考慮されます(サイズが明示的に指定されていない場合)。</p> <p>デフォルトでは、このマージンは現在選択されている<a href="#SetFont">フォント</a>のサイズに比例します(上部と下部はフォントハイトの0.75倍)。</p> </div> <div class="methodShort" id="MenuBar"> <h3>MenuBar</h3> <p>ウィンドウのメニューバーを取得または設定します。</p> <pre class="Syntax">CurrentBar := MyGui.<span class="func">MenuBar</span></pre> <pre class="Syntax">MyGui.<span class="func">MenuBar</span> := NewBar</pre> <p><em>CurrentBar</em> and <em>NewBar</em> are a <a href="Menu.htm">MenuBar object</a> created by <a href="Menu.htm#Call">MenuBar()</a>. 事例:</p> <pre>FileMenu := Menu() FileMenu.Add "&amp;Open`tCtrl+O", (*) =&gt; FileSelect() <em>; Ctrl+Oについては後述します。</em> FileMenu.Add "E&amp;xit", (*) =&gt; ExitApp() HelpMenu := Menu() HelpMenu.Add "&amp;About", (*) =&gt; MsgBox("Not implemented") Menus := MenuBar() Menus.Add "&amp;File", FileMenu <em>; 上記で作成した2つのサブメニューを添付する。</em> Menus.Add "&amp;Help", HelpMenu MyGui := Gui() MyGui.MenuBar := Menus MyGui.Show "w300 h200"</pre> <p>上の1行目では、<code>&amp;Open</code>の後に<code>Ctrl+O</code>(間にタブ文字が入る)が入っていることに注目してください。これは、ユーザーがメニュー項目を選択する代わりに押すことができるキーボードショートカットを示しています。ショートカットが標準的な修飾キー名であるCtrl、Alt、Shiftのみを使用する場合、GUI用の<em>キーボードアクセラレータ</em>として自動的に登録されます。修飾語のない1文字のアクセラレータは大文字と小文字を区別し、IMEや<kbd>Alt</kbd>+NNNNなど通常とは異なる手段でトリガーすることができます。</p> <p>特定のキーの組み合わせが自動的に機能しない場合は、<a href="_HotIf.htm">コンテキスト依存のホットキー</a>の使用が必要になる場合があります。しかし、このようなホットキーは一般的に<a href="Send.htm">Send</a>でトリガーすることができず、標準的なキーボードアクセラレータよりも他のスクリプトに干渉する可能性が高いです。</p> <p>ウィンドウの現在のメニューバーを削除するには、<code>MyGui.MenuBar := ""</code>(つまり、空の文字列を代入)を使用します。</p> </div> <div class="methodShort" id="Name"> <h3>Name</h3> <p>ウィンドウのカスタムネームを取得または設定します。</p> <pre class="Syntax">CurrentName := MyGui.<span class="func">Name</span></pre> <pre class="Syntax">MyGui.<span class="func">Name</span> := NewName</pre> </div> <div class="methodShort" id="Title"> <h3>Title</h3> <p>Retrieves or sets the window's title.</p> <pre class="Syntax">CurrentTitle := MyGui.<span class="func">Title</span></pre> <pre class="Syntax">MyGui.<span class="func">Title</span> := NewTitle</pre> </div> <div class="methodShort" id="__Item"> <h3>__Item</h3> <p>指定された名前、テキスト、ClassNN、HWND に関連する<a href="GuiControl.htm">GuiControl オブジェクト</a>を取得します。</p> <pre class="Syntax">GuiCtrlObj := MyGui[Name] GuiCtrlObj := MyGui.<span class="func">__Item</span>[Name]</pre> </div> <h2 id="Navigate">キーボードナビゲーション</h2> <p>GUIウィンドウは<kbd>Tab</kbd>で移動することができ、キーボードフォーカスは次の入力可能なコントロールに移動します(<a href="#Tabstop">Tabstop</a>スタイルが削除されたコントロールはスキップされます)。ナビゲーションの順序は、コントロールが最初に追加された順序によって決定されます。ただし、そのコントロールがボタンであり、かつデフォルトのボタンがある場合は、後者が代わりにフォーカスされます。</p> <p id="ShortcutKey">一部のコントロールには、キーボードショートカットを作成するためのアンパサンド(&amp;)が含まれている場合があり、コントロールのテキストに下線文字として表示される場合があります(システム設定に依存)。<kbd>Alt</kbd>を押しながら文字を入力することで、ショートカットを有効にすることができます。ボタン、チェックボックス、ラジオボタンの場合、ショートカットを押すことはコントロールをクリックすることと同じです。グループボックスとテキストコントロールの場合、ショートカットを押すと、その後に作成された最初の入力可能な<a href="#Tabstop">タブストップ</a>コントロールにキーボードフォーカスが移動するようにします。ただし、複数のコントロールが同じショートカットキーを持つ場合、ショートカットキーを押すと、同じショートカットキーを持つすべてのコントロールの間でキーボードフォーカスが交互に変わります。</p> <p>上記のコントロールタイプの中にリテラルなアンパサンドを表示するには、この例のように2つの連続したアンパサンドを指定します:<code>MyGui.Add("Button",, "Save &amp;&amp; Exit")</code>。</p> <h2 id="Appear">ウィンドウの外観</h2> <p>GUIウィンドウのアイコンは、ウィンドウの作成時に有効だった<a href="../Program.htm#tray-icon">トレイアイコン</a>を使用します。したがって、別のアイコンを持つには、ウィンドウを作成する前にトレイアイコンを変更します。事例:<code><a href="TraySetIcon.htm">TraySetIcon</a>("MyIcon.ico")</code>。また、ウィンドウの大アイコンを小アイコンと異なるものにすることも可能です(大アイコンはalt-tabタスクスイッチャーに表示されます)。これは、<a href="LoadPicture.htm">LoadPicture</a>と <a href="SendMessage.htm">SendMessage</a>で行うことができます;例えば、:</p> <pre>iconsize := 32 <em>; alt-tabの理想的なサイズは、システムやOSのバージョンによって異なる。</em> hIcon := LoadPicture("My Icon.ico", "Icon1 w" iconsize " h" iconsize, &amp;imgtype) MyGui := Gui() SendMessage(0x0080, 1, hIcon, MyGui) <em>; 0x0080はWM_SETICONで、1はICON_BIG(ICON_SMALLは0)を意味します。</em> MyGui.Show()</pre> <p>OSの制限により、デフォルト以外の文字色が指定されたチェックボックス、ラジオボタン、グループボックスは、クラシックテーマの外観となります。</p> <p>関連トピック:<a href="#MarginX">ウィンドウのマージン</a>。</p> <h2 id="GenRemarks">総論</h2> <p>GUIウィンドウの各コントロールを操作するには、<a href="GuiControl.htm">GuiControlオブジェクト</a>を使用します。</p> <p>1つのGUIウィンドウには、最大11,000個のコントロールが可能です。ただし、コントロールの種類によってはシステムが不安定になる可能性があるため、5000個以上のコントロールを作成する場合は注意してください。</p> <p id="deleted">GUIウィンドウは、Guiオブジェクトが削除されたとき(<a href="../Objects.htm#Reference_Counting">参照カウント</a>がゼロになったとき)に、自動的に<a href="#Destroy">破棄</a>されます。ただし、ウィンドウが表示されている間は、<a href="#Show">Show</a>が自動的に参照カウントを増加させるため、通常は発生しません。ウィンドウが表示されている間、ユーザーはウィンドウと対話し、スクリプトによって処理されるイベントを発生させることができます。ユーザーがウィンドウを閉じたり、<a href="#Hide">Hide</a>、<a href="#Show">Show</a>、<a href="#Submit">Submit</a>でウィンドウが隠されたりすると、この余分な参照は解放されます。</p> <p><a href="#Show">Show</a>を呼び出したり、Guiオブジェクトへの参照を保持することなくGUIウィンドウを「生かす」ために、スクリプトは<a href="ObjAddRef.htm">ObjAddRef</a>でオブジェクトの参照カウントを増やすことができます(この場合、ウィンドウが不要になったときに<a href="ObjAddRef.htm">ObjRelease</a>が呼び出される必要があります)。例えば、非表示のGUIウィンドウを使用して<a href="OnMessage.htm">メッセージを受信</a>する場合や、<a href="WinShow.htm">WinShow</a>などの「外部」手段でウィンドウを表示する場合(このスクリプトや他のスクリプトによる)などに行われることがあります。</p> <p>他の理由でスクリプトが<a href="../Scripts.htm#persistent">持続</a>しない場合、最後に表示されたGUIが閉じられた後に終了します。最後のスレッドが完了したとき、またはスレッドが実行されていない場合は直ちに終了します。</p> <h2 id="Related">関連</h2> <p><a href="GuiControl.htm">GuiControlオブジェクト</a>、<a href="GuiFromHwnd.htm">GuiFromHwnd</a>、<a href="GuiCtrlFromHwnd.htm">GuiCtrlFromHwnd</a>、<a href="GuiControls.htm">コントロール</a>、<a href="ListView.htm">ListView</a>、<a href="TreeView.htm">TreeView</a>、<a href="Menu.htm">Menuオブジェクト</a>、<a href="Control.htm">Control関数</a>、<a href="MsgBox.htm">MsgBox</a>、<a href="FileSelect.htm">FileSelect</a>、<a href="DirSelect.htm">DirSelect</a></p> <h2 id="Examples">例</h2> <div class="ex" id="ExPopup"> <p><a class="ex_number" href="#ExPopup"></a> ポップアップウィンドウを作成します。</p> <pre>MyGui := Gui(, "Title of Window") MyGui.Opt("+AlwaysOnTop +Disabled -SysMenu +Owner") <em>; +Ownerはタスクバーボタンを回避することができる。</em> MyGui.Add("Text",, "Some text to display.") MyGui.Show("NoActivate") <em>; NoActivateは、現在アクティブなウィンドウを非アクティブにすることを回避します。</em></pre> </div> <div class="ex" id="ExInputBox"> <p><a class="ex_number" href="#ExInputBox"></a> 姓と名を入力するシンプルな入力ボックスを作成します。</p> <pre>MyGui := Gui(, "Simple Input Example") MyGui.Add("Text",, "First name:") MyGui.Add("Text",, "Last name:") MyGui.Add("Edit", "vFirstName ym") <em>; ymオプションは、コントロールの新しい列を開始します。</em> MyGui.Add("Edit", "vLastName") MyGui.Add("Button", "default", "OK").OnEvent("Click", ProcessUserInput) MyGui.OnEvent("Close", ProcessUserInput) MyGui.Show() ProcessUserInput(*) { Saved := MyGui.Submit() <em>; 名前付きコントロールの内容を、オブジェクトに保存します。</em> MsgBox("You entered '" Saved.FirstName " " Saved.LastName "'.") }</pre> </div> <div class="ex" id="ExTab"> <p><a class="ex_number" href="#ExTab"></a> 複数のタブを持つタブコントロールを作成し、それぞれのタブには異なるコントロールが配置され、対話することができます。</p> <pre>MyGui := Gui() Tab := MyGui.Add("Tab3",, ["First Tab","Second Tab","Third Tab"]) MyGui.Add("CheckBox", "vMyCheckBox", "Sample checkbox") Tab.UseTab(2) MyGui.Add("Radio", "vMyRadio", "Sample radio1") MyGui.Add("Radio",, "Sample radio2") Tab.UseTab(3) MyGui.Add("Edit", "vMyEdit r5") <em>; r5は5列の高さを意味します。</em> Tab.UseTab() <em>; つまり、その後に追加されたコントロールは、タブコントロールに属さない。</em> Btn := MyGui.Add("Button", "default xm", "OK") <em>; xmは左下に配置します。</em> Btn.OnEvent("Click", ProcessUserInput) MyGui.OnEvent("Close", ProcessUserInput) MyGui.OnEvent("Escape", ProcessUserInput) MyGui.Show() ProcessUserInput(*) { Saved := MyGui.Submit() <em>; 名前付きコントロールの内容を、オブジェクトに保存します。</em> MsgBox("You entered:`n" Saved.MyCheckBox "`n" Saved.MyRadio "`n" Saved.MyEdit) }</pre> </div> <div class="ex" id="ExListBox"> <p><a class="ex_number" href="#ExListBox"></a> ディレクトリ内のファイルを含む ListBox コントロールを作成します。</p> <pre>MyGui := Gui() MyGui.Add("Text",, "Pick a file to launch from the list below.") LB := MyGui.Add("ListBox", "w640 r10") LB.OnEvent("DoubleClick", LaunchFile) Loop Files, "C:\*.*" <em>; このフォルダとワイルドカードのパターンをお好みで変更してください。</em> LB.Add([A_LoopFilePath]) MyGui.Add("Button", "Default", "OK").OnEvent("Click", LaunchFile) MyGui.Show() LaunchFile(*) { if MsgBox("Would you like to launch the file or document below?`n`n" LB.Text,, 4) = "No" return <em>; それ以外の場合は、起動してみてください:</em> try Run(LB.Text) if A_LastError MsgBox("Could not launch the specified file. Perhaps it is not associated with anything.") }</pre> </div> <div class="ex" id="ExToolTip"> <p><a class="ex_number" href="#ExToolTip"></a> ユーザーが特定のコントロールの上にマウスを移動すると、(ToolTipを介して)コンテキストセンシティブヘルプを表示させます。</p> <pre> MyGui := Gui() MyEdit := MyGui.Add("Edit") <em>; カスタムプロパティにツールチップテキストを格納する:</em> MyEdit.ToolTip := "This is a tooltip for the control whose name is MyEdit." MyDDL := MyGui.Add("DropDownList",, ["Red","Green","Blue"]) MyDDL.ToolTip := "Choose a color from the drop-down list." MyGui.Add("CheckBox",, "This control has no tooltip.") MyGui.Show() OnMessage(0x0200, On_WM_MOUSEMOVE) On_WM_MOUSEMOVE(wParam, lParam, msg, Hwnd) { static PrevHwnd := 0 if (Hwnd != PrevHwnd) { Text := "", ToolTip() <em>; Turn off any previous tooltip.</em> CurrControl := GuiCtrlFromHwnd(Hwnd) if CurrControl { if !CurrControl.HasProp("ToolTip") return <em>; No tooltip for this control.</em> Text := CurrControl.ToolTip SetTimer () =&gt; ToolTip(Text), -1000 SetTimer () =&gt; ToolTip(), -4000 <em>; Remove the tooltip.</em> } PrevHwnd := Hwnd } }</pre> </div> <div class="ex" id="ExOSD"> <p><a class="ex_number" href="#ExOSD"></a> 透明なウィンドウでオンスクリーンディスプレイ(OSD)を作成します。</p> <pre>MyGui := Gui() MyGui.Opt("+AlwaysOnTop -Caption +ToolWindow") <em>; +ToolWindowは、タスクバーボタンとalt-tabメニュー項目を回避します。</em> MyGui.BackColor := "EEAA99" <em>; Can be any RGB color (it will be made transparent below).</em> MyGui.SetFont("s32") <em>; 大きなフォントサイズ(32ポイント)を設定します。</em> CoordText := MyGui.Add("Text", "cLime", "XXXXX YYYY") <em>; XXとYYは、ウィンドウサイズを自動化する役割を果たします。 ; この色のすべてのピクセルを透明にし、テキスト自体を半透明にする(150):</em> WinSetTransColor(MyGui.BackColor " 150", MyGui) SetTimer(UpdateOSD, 200) UpdateOSD() <em>; 最初の更新をタイマー待ちではなく、即時更新します。</em> MyGui.Show("x0 y400 NoActivate") <em>; NoActivateは、現在アクティブなウィンドウを非アクティブにすることを回避します。</em> UpdateOSD(*) { MouseGetPos &amp;MouseX, &amp;MouseY CoordText.Value := "X" MouseX ", Y" MouseY }</pre> </div> <div class="ex" id="ExProgressBar"> <p><a class="ex_number" href="#ExProgressBar"></a> 背景画像に重なるように動くプログレスバーを作成します。</p> <pre>MyGui := Gui() MyGui.BackColor := "White" MyGui.Add("Picture", "x0 y0 h350 w450", A_WinDir "\Web\Wallpaper\Windows\img0.jpg") MyBtn := MyGui.Add("Button", "Default xp+20 yp+250", "Start the Bar Moving") MyBtn.OnEvent("Click", MoveBar) MyProgress := MyGui.Add("Progress", "w416") MyText := MyGui.Add("Text", "wp") <em>; wpは「前の幅を使え」という意味です。</em> MyGui.Show() MoveBar(*) { Loop Files, A_WinDir "\*.*", "R" { if (A_Index &gt; 100) break MyProgress.Value := A_Index MyText.Value := A_LoopFileName Sleep 50 } MyText.Value := "Bar finished." }</pre> </div> <div class="ex" id="ExImageViewer"> <p><a class="ex_number" href="#ExImageViewer"></a> シンプルなイメージビューアを作成します。</p> <pre>MyGui := Gui("+Resize") MyBtn := MyGui.Add("Button", "default", "&amp;Load New Image") MyBtn.OnEvent("Click", LoadNewImage) MyRadio := MyGui.Add("Radio", "ym+5 x+10 checked", "Load &amp;actual size") MyGui.Add("Radio", "ym+5 x+10", "Load to &amp;fit screen") MyPic := MyGui.Add("Pic", "xm") MyGui.Show() LoadNewImage(*) { Image := FileSelect(,, "Select an image:", "Images (*.gif; *.jpg; *.bmp; *.png; *.tif; *.ico; *.cur; *.ani; *.exe; *.dll)") if Image = "" return if (MyRadio.Value) <em>; 画像を実際の大きさで表示します。</em> { Width := 0 Height := 0 } else <em>; 2番目のラジオが選択されている:画面に合わせて画像をリサイズします。</em> { Width := A_ScreenWidth - 28 <em>; 内側にボーダーや余白のスペースを確保するため、28をマイナスします。</em> Height := -1 <em>; "アスペクト比を保つ"が一番良さそうです。</em> } MyPic.Value := Format("*w{1} *h{2} {3}", Width, Height, Image) <em>; 画像を読み込みます。</em> MyGui.Title := Image MyGui.Show("xCenter y0 AutoSize") <em>; 画像サイズに合わせてウィンドウをリサイズします。</em> }</pre> </div> <div class="ex" id="ExEditor"> <p><a class="ex_number" href="#ExEditor"></a> メニューバーを持つシンプルなテキストエディタを作成します。</p> <pre> <em>; Create the MyGui window:</em> MyGui := Gui("+Resize", "Untitled") <em>; ウィンドウをリサイズ可能にします。</em> <em>; メニューバーのサブメニューを作成する:</em> FileMenu := Menu() FileMenu.Add("&amp;New", MenuFileNew) FileMenu.Add("&amp;Open", MenuFileOpen) FileMenu.Add("&amp;Save", MenuFileSave) FileMenu.Add("Save &amp;As", MenuFileSaveAs) FileMenu.Add() <em>; 区切り線です。</em> FileMenu.Add("E&amp;xit", MenuFileExit) HelpMenu := Menu() HelpMenu.Add("&amp;About", MenuHelpAbout) <em>; サブメニューをくっつけてメニューバーを作成する:</em> MyMenuBar := MenuBar() MyMenuBar.Add("&amp;File", FileMenu) MyMenuBar.Add("&amp;Help", HelpMenu) <em>; メニューバーをウィンドウに貼り付ける:</em> MyGui.MenuBar := MyMenuBar <em>; メインのEditコントロールを作成します:</em> MainEdit := MyGui.Add("Edit", "WantTab W600 R20") <em>; イベントを適用します:</em> MyGui.OnEvent("DropFiles", Gui_DropFiles) MyGui.OnEvent("Size", Gui_Size) MenuFileNew() <em>; デフォルトの設定を適用します。</em> MyGui.Show() <em>; ウィンドウを表示します。</em> MenuFileNew(*) { MainEdit.Value := "" <em>; Editコントロールをクリアします。</em> FileMenu.Disable("3&amp;") <em>; グレイアウトと保存.</em> MyGui.Title := "Untitled" } MenuFileOpen(*) { MyGui.Opt("+OwnDialogs") <em>; メインウィンドウに戻る前に、FileSelectダイアログを強制終了させる。</em> SelectedFileName := FileSelect(3,, "Open File", "Text Documents (*.txt)") if SelectedFileName = "" <em>; ファイルが選択されていない。</em> return global CurrentFileName := readContent(SelectedFileName) } MenuFileSave(*) { saveContent(CurrentFileName) } MenuFileSaveAs(*) { MyGui.Opt("+OwnDialogs") <em>; メインウィンドウに戻る前に、FileSelectダイアログを強制終了させる。</em> SelectedFileName := FileSelect("S16",, "Save File", "Text Documents (*.txt)") if SelectedFileName = "" <em>; ファイルが選択されていない。</em> return global CurrentFileName := saveContent(SelectedFileName) } MenuFileExit(*) <em>; ユーザーはファイルメニューから "Exit"を選択しました。</em> { WinClose() } MenuHelpAbout(*) { About := Gui("+owner" MyGui.Hwnd) <em>; メインウィンドウを「アバウトボックス」のオーナーにする。</em> MyGui.Opt("+Disabled") <em>; メインウィンドウを無効にします。</em> About.Add("Text",, "Text for about box.") About.Add("Button", "Default", "OK").OnEvent("Click", About_Close) About.OnEvent("Close", About_Close) About.OnEvent("Escape", About_Close) About.Show() About_Close(*) { MyGui.Opt("-Disabled") <em>; メインウィンドウを再度有効にします(次のステップの前に行う必要があります)。</em> About.Destroy() <em>; アバウトボックスを破棄します。</em> } } readContent(FileName) { try FileContent := FileRead(FileName) <em>; ファイルの中身を変数に読み込みます。</em> catch { MsgBox("Could not open '" FileName "'.") return } MainEdit.Value := FileContent <em>; コントロールにテキストを入れる。</em> FileMenu.Enable("3&amp;") <em>; 再度有効化および保存。</em> MyGui.Title := FileName <em>; タイトルバーにファイル名を表示します。</em> return FileName } saveContent(FileName) { try { if FileExist(FileName) FileDelete(FileName) FileAppend(MainEdit.Value, FileName) <em>; 内容をファイルに保存します。</em> } catch { MsgBox("The attempt to overwrite '" FileName "' failed.") return } <em>; 成功したら、タイトルバーにファイル名を表示する(MenuFileSaveAsから呼び出された場合のため):</em> MyGui.Title := FileName return FileName } Gui_DropFiles(thisGui, Ctrl, FileArray, *) <em>; ドラッグ&ドロップに対応。</em> { CurrentFileName := readContent(FileArray[1]) <em>; 最初のファイルだけ読み込む(複数ある場合)。</em> } Gui_Size(thisGui, MinMax, Width, Height) { if MinMax = -1 <em>; ウィンドウは最小化されました。何もする必要はない。</em> return <em>; それ以外の場合は、ウィンドウのサイズが変更されたり、最大化されたりしています。それに合わせてEditコントロールのサイズを変更します。</em> MainEdit.Move(,, Width-20, Height-20) }</pre> </div> <div class="ex" id="ExRefCycle"> <p><a class="ex_number" href="#ExRefCycle"></a> Demonstrates <a href="../Objects.htm#refs-problems">problems caused by reference cycles</a>.</p> <pre> ; Click Open or double-click tray icon to show another GUI. ; Use the menu items, Escape or Close button to see how it responds. A_TrayMenu.Add("&amp;Open", ShowRefCycleGui) Persistent ShowRefCycleGui(*) { static n := 0 g := Gui(, "GUI #" (++n)), g.n := n g.MenuBar := mb := MenuBar() <em>; g -&gt; mb</em> mb.Add("Gui", m := Menu()) <em>; mb -&gt; m</em> m.Add("Hide", (*) =&gt; g.Hide()) <em>; (*) -&gt; g</em> m.Add("Destroy", (*) =&gt; g.Destroy()) <em>; For a GUI event, the callback parameter can be used to avoid a ; reference cycle (using the same name prevents accidental capture). ; However, Hide() doesn't break the *other* reference cycles.</em> g.OnEvent("Escape", (g, *) =&gt; g.Hide()) <em>; Capturing the variable can work out in our favour.</em> g.OnEvent("Close", (*) =&gt; g := unset) g.Show("w300 h200") <em>; __Delete is not called due to the reference cycle: ; g -&gt; mb -&gt; m -&gt; (*) -&gt; g ; unless g is unset by triggering the Close event, ; or MenuBar and event handlers are released by Destroy.</em> g.__Delete := this =&gt; MsgBox("GUI #" this.n " deleted") } </pre> </div> </body> </html>