ウインドウの基礎編

Size: px
Start display at page:

Download "ウインドウの基礎編"

Transcription

1

2 表示関連 1. ウインドウの表示 / 非表示 2. ウインドウの有効化 / 無効化 3. ウインドウの最大化 / 最小化 / 元に戻す 4. ウインドウの最小化 / 元に戻す処理 5. ウインドウの最大化 / 最小化の状態 6. ウインドウの最大化 / 最小化 / 通常の状態

3 ウインドウの表示 / 非表示 ウインドウの表示と非表示は ShowWindow() 関数で行います この関数の第一引数に対象のウイ ンドウ ハンドルを指定して 第二引数に SW_SHOW で表示 SW_HIDE で非表示になります また 第一引数にダイアログ ハンドルを指定するとダイアログを表示 非表示にできます BOOL ShowWindow( HWND hwnd, // ウインドウ ハンドル int ncmdshow // 表示状態 それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 表示 ShowWindow( hwnd, SW_SHOW // 非表示 ShowWindow( hwnd, SW_HIDE ウインドウの表示と非表示の状態を調べるには IsWindowVisible() 関数を使います この関数の第 一引数に対象のウインドウ ハンドルを指定するだけで状態を調べられます 戻り値は BOOL 型 ですから 0(FALSE) なら非表示 1(TRUE) なら表示されてることを意味します BOOL IsWindowVisible( HWND hwnd // ウインドウ ハンドル こちらも使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します 調べた結 果は if 文などで表示状態に合わせた処理を記述します if ( IsWindowVisible(hWnd) ){ // ウインドウが表示されてる else{ // ウインドウは非表示である ShowWindow() 関数で表示 非表示の設定を行います IsWindowVisible() 関数で表示 非表示の状態を調査できます

4 ウインドウの有効化 / 無効化 ウインドウの有効化と無効化は EnableWindow() 関数で行います この関数の第一引数に対象のウ インドウ ハンドルを指定して 第二引数に TRUE で有効化 FALSE で無効化になります また 第一引数にダイアログ ハンドルを指定するとダイアログを有効化 無効化にできます BOOL EnableWindow( HWND hwnd, // ウインドウ ハンドル BOOL benable // 有効化 無効化のスイッチ それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 有効化 EnableWindow( hwnd, TRUE // 無効化 EnableWindow( hwnd, FALSE ウインドウの有効化と無効化の状態を調べるには IsWindowEnabled() 関数を使います この関数 の第一引数に対象のウインドウ ハンドルを指定するだけで状態を調べられます 戻り値は BOOL 型ですから 0(FALSE) なら無効化 1(TRUE) なら有効化してることを意味します BOOL IsWindowEnabled( HWND hwnd // ウインドウ ハンドル こちらも使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します 調べた結 果は if 文などで有効状態に合わせた処理を記述します if ( IsWindowEnabled(hWnd) ){ // ウインドウが有効化されてる else{ // ウインドウは無効化である EnableWindow() 関数で有効化 無効化の設定を行います IsWindowEnabled() 関数で有効化 無効化の状態を調査できます

5 ウインドウの最大化 / 最小化 / 元に戻す ウインドウの最大化 最小化 元に戻す操作をプログラミングで行うには ShowWindow() 関数を使います この関数の第一引数に対象のウインドウ ハンドルを指定して 第二引数に SW_MAXIMIZE で最大化 SW_MINIMIZE で最小化 SW_RESTORE で元に戻す処理を行います 以前にウインドウの表示 非表示で紹介した API 関数と同じです ただし 第二引数に渡す定数を変えることで違う動作になるわけです 面白いですね BOOL ShowWindow( HWND hwnd, // ウインドウ ハンドル int ncmdshow // 表示状態 それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 最大化 ShowWindow( hwnd, SW_MAXIMIZE // 最小化 ShowWindow( hwnd, SW_MINIMIZE // 元に戻す ShowWindow( hwnd, SW_RESTORE ShowWindow(hWnd,SW_MAXIMIZE) で最大化できます ShowWindow(hWnd,SW_MINIMIZE) で最小化できます ShowWindow(hWnd,SW_RESTORE) で元に戻す操作が行えます

6 ウインドウの最小化 / 元に戻す処理 ウインドウの最小化と元に戻す操作をプログラミングで行うには ShowWindow() 関数以外にも用意されてます それが CloseWindow() 関数と OpenIcon() 関数です この関数の第一引数に対象のウインドウ ハンドルを指定するだけで操作できます つまり CloseWindow() 関数で最小化 OpenIcon() 関数で元に戻す操作を行えます 名前からすると CloseWindow() 関数はウインドウをクローズ ( 破棄 ) するように想像しがちですが違います ウインドウを破棄する API は DestroyWindow() 関数ですから混同しないように気を付けましょう あと最小化のことをアイコン化されてると表現する場合があります このことから OpenIcon() 関数はタスクバーにあるタスク アイコンをオープンすると覚えれば良いでしょう 関数名の名づけ方に統一性がなくて非常に面白いですね マイクロソフト社は BOOL CloseWindow( HWND hwnd // ウインドウ ハンドル BOOL OpenIcon( HWND hwnd // ウインドウ ハンドル それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 最小化 CloseWindow( hwnd // 元に戻す OpenIcon( hwnd CloseWindow() 関数で最小化を行います OpenIcon() 関数で元に戻す操作を行えます その他 OpenIcon() 関数はウインドウに WM_QUERYOPEN メッセージを送信します このメッセージを処理すればウインドウが最小化から復帰 ( 元に戻るとき ) を操作できます 例えば WM_QUERYOPEN メッセージ内で CloseWindow() 関数を呼び出すとずっと最小化されたままにできます

7 ウインドウの最大化 / 最小化の状態 ウインドウの最大化と最小化の状態を調べるには次の 2 つの API 関数で行います IsZoomed() 関 数は最大化状態 IsIconic() 関数は最小化状態を調べる事ができます この 2 つの API 関数を使う ことで最大化と最小化でない状態 ( 普通の状態 ) も判定できます BOOL IsZoomed( HWND hwnd // ウィンドウのハンドル BOOL IsIconic( HWND hwnd // ウィンドウのハンドル それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します if ( IsZoomed(hWnd) ){ // 最大化の状態 else if ( IsIconic(hWnd) ){ // 最小化の状態 else{ // 普通の状態 IsZoomed() 関数で最大化状態を調べます IsIconic() 関数で最小化状態を調べます

8 ウインドウの最大化 / 最小化 / 通常の状態 ウインドウの最大化 最小化 通常の状態を調べる方法として GetWindowPlacement() 関数を使 うこともできます この関数なら IsZoomed() 関数 IsIconic() 関数の 2 つの API 関数を呼び出さな くても良いでしょう どの方法でも希望通りに最大化 最小化 普通の状態を判定できます BOOL GetWindowPlacement( WINDOWPLACEMENT *lpinfo // 位置情報の構造体 次は構造体を紹介します typedef struct tagwindowplacement { UINT length; // 構造体のサイズ ( 必ずセットすること ) UINT flags; // 制御フラグ UINT showcmd; // ウインドウの表示状態 POINT ptminposition; // 最小化されるときのウインドウ左上隅位置 POINT ptmaxposition; // 最大化されるときのウインドウ左上隅位置 RECT rcnormalposition; // 通常ウインドウの矩形領域 WINDOWPLACEMENT; それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します WINDOWPLACEMENT info; info.length = sizoef(windowplacement GetWindowPlacement( hwnd, &info switch ( info.showcmd ){ case SW_SHOWNORMAL: // 普通の状態 break; case SW_SHOWMINIMIZED: // 最小化の状態 break; case SW_SHOWMAXIMIZED: // 最大化の状態 break; default: // エラーの処理 GetWindowPlacement() 関数で showcmd メンバを調べます showcmd メンバが SW_SHOWNORMAL 定数なら普通の状態となります showcmd メンバが SW_SHOWMINIMIZED 定数なら最小化の状態となります showcmd メンバが SW_SHOWMAXIMIZED 定数なら最大化の状態となります

9 位置とサイズ関連 1. ウインドウの位置を取得 / 設定 2. ウインドウのサイズを取得 / 設定 3. ウインドウの通常サイズを取得 / 設定 4. ウインドウの最小化位置を取得 / 設定 5. ウインドウの最大化位置を取得 / 設定

10 ウインドウの位置を取得 / 設定 ウインドウの位置を取得するには GetWindowRect() 関数で行います この関数の第一引数に対象 のウインドウ ハンドルを指定して 第二引数に長方形情報の構造体へのポインタを指定します これでウインドウの矩形領域を RECT 構造体に取得します BOOL GetWindowRect( LPRECT lprect // ウィンドウの座標値 次は構造体を紹介します typedef struct tagrect { LONG left; // 左上隅のX 座標 LONG top; // 左上隅のY 座標 LONG right; // 右下隅のX 座標 LONG bottom; // 右下隅のY 座標 RECT, *LPRECT; ウインドウの位置を設定するには SetWindowPos() 関数で行います BOOL SetWindowPos( HWND hwndinsertafter, // 配置順序のハンドル int X, // 横方向の位置 int Y, // 縦方向の位置 int cx, // 幅 int cy, // 高さ UINT uflags // ウィンドウ位置のオプション それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // ウインドウ位置の取得 RECT rc; LONG cx; LONG cy; GetWindowRect( hwnd, &rc cx = (rc.left cy = (rc.top // ウインドウ位置の設定 cx = 600; cy = 200; SetWindowPos( hwnd, NULL, cx, cy, 0, 0, (SWP_NOZORDER SWP_NOOWNERZORDER SWP_NOSIZE) GetWindowRect() 関数でウインドウ位置を取得します SetWindowPos() 関数でウインドウ位置を設定します

11 ウインドウのサイズを取得 / 設定 ウインドウのサイズを取得するには GetWindowRect() 関数で行います この関数の第一引数に対 象のウインドウ ハンドルを指定して 第二引数に長方形情報の構造体へのポインタを指定し ます これでウインドウの矩形領域を RECT 構造体に取得します BOOL GetWindowRect( LPRECT lprect // ウィンドウの座標値 次は構造体を紹介します typedef struct tagrect { LONG left; // 左上隅のX 座標 LONG top; // 左上隅のY 座標 LONG right; // 右下隅のX 座標 LONG bottom; // 右下隅のY 座標 RECT, *LPRECT; ウインドウのサイズを設定するには SetWindowPos() 関数で行います BOOL SetWindowPos( HWND hwndinsertafter, // 配置順序のハンドル int X, // 横方向の位置 int Y, // 縦方向の位置 int cx, // 幅 int cy, // 高さ UINT uflags // ウィンドウ位置のオプション それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // ウインドウ サイズの取得 RECT rc; LONG sx; LONG sy; GetWindowRect( hwnd, &rc sx = (rc.right - rc.left sy = (rc.bottom - rc.top // ウインドウ サイズの設定 sx = 640; sy = 320; SetWindowPos( hwnd, NULL, 0, 0, sx, sy, (SWP_NOZORDER SWP_NOOWNERZORDER SWP_NOMOVE) GetWindowRect() 関数でウインドウ サイズを取得します SetWindowPos() 関数でウインドウ サイズを設定します

12 ウインドウの通常サイズを取得 / 設定 ウインドウが最小化状態や最大化状態でも正しくウインドウ サイズを取得 / 設定するには次の2 つの関数を利用します GetWindowPlacement() 関数で位置情報を取得 SetWindowPlacement() 関数で位置情報を設定します この関数の第一引数に対象のウインドウ ハンドルを指定して 第二引数に WINDOWPLACEMENT 構造体へのポインタを指定します これでウインドウの位置情報を WINDOWPLACEMENT 構造体を使って取得 / 設定できます BOOL GetWindowPlacement( WINDOWPLACEMENT *lpinfo // 位置情報の構造体 BOOL SetWindowPlacement( CONST WINDOWPLACEMENT *lpinfo // 位置情報の構造体 次は構造体を紹介します typedef struct tagwindowplacement { UINT length; // 構造体のサイズ ( 必ずセットすること ) UINT flags; // 制御フラグ UINT showcmd; // ウインドウの表示状態 POINT ptminposition; // 最小化されるときのウインドウ左上隅位置 POINT ptmaxposition; // 最大化されるときのウインドウ左上隅位置 RECT rcnormalposition; // 通常ウインドウの矩形領域 WINDOWPLACEMENT; それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // ウインドウ サイズの取得 WINDOWPLACEMENT info; LONG sx; LONG sy; info.length = sizoef(windowplacement GetWindowPlacement( hwnd, &info sx = (info.rcnormalposition.right - info.rcnormalposition.left sy = (info.rcnormalposition.bottom - info.rcnormalposition.top // ウインドウ サイズの設定 sx = 640; sy = 320; info.length = sizoef(windowplacement info.rcnormalposition.right = (info.rcnormalposition.left + sx info.rcnormalposition.bottom = (info.rcnormalposition.top + sy SetWindowPlacement( hwnd, &info GetWindowPlacement() 関数でウインドウの通常サイズを取得します SetWindowPlacement() 関数でウインドウの通常サイズを設定します

13 ウインドウの最小化位置を取得 / 設定 ウインドウが最小化されるときのウインドウ左上隅位置を取得 / 設定するには次の2つの関数を利用します GetWindowPlacement() 関数で位置情報を取得 SetWindowPlacement() 関数で位置情報を設定します この関数の第一引数に対象のウインドウ ハンドルを指定して 第二引数に WINDOWPLACEMENT 構造体へのポインタを指定します これでウインドウの位置情報を WINDOWPLACEMENT 構造体を使って取得 / 設定できます BOOL GetWindowPlacement( WINDOWPLACEMENT *lpinfo // 位置情報の構造体 BOOL SetWindowPlacement( CONST WINDOWPLACEMENT *lpinfo // 位置情報の構造体 次は構造体を紹介します typedef struct tagwindowplacement { UINT length; // 構造体のサイズ ( 必ずセットすること ) UINT flags; // 制御フラグ UINT showcmd; // ウインドウの表示状態 POINT ptminposition; // 最小化されるときのウインドウ左上隅位置 POINT ptmaxposition; // 最大化されるときのウインドウ左上隅位置 RECT rcnormalposition; // 通常ウインドウの矩形領域 WINDOWPLACEMENT; それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // ウインドウの最小化位置を取得 WINDOWPLACEMENT info; LONG cx; LONG cy; info.length = sizoef(windowplacement GetWindowPlacement( hwnd, &info cx = (info.ptminposition.x cy = (info.ptminposition.y // ウインドウの最小化位置を設定 cx = 600; cy = 200; info.length = sizoef(windowplacement info.ptminposition.x = cx; info.ptminposition.y = cy; SetWindowPlacement( hwnd, &info GetWindowPlacement() 関数でウインドウの最小化位置を取得します SetWindowPlacement() 関数でウインドウの最小化位置を設定します

14 ウインドウの最大化位置を取得 / 設定 ウインドウが最大化されるときのウインドウ左上隅位置を取得 / 設定するには次の2つの関数を利用します GetWindowPlacement() 関数で位置情報を取得 SetWindowPlacement() 関数で位置情報を設定します この関数の第一引数に対象のウインドウ ハンドルを指定して 第二引数に WINDOWPLACEMENT 構造体へのポインタを指定します これでウインドウの位置情報を WINDOWPLACEMENT 構造体を使って取得 / 設定できます BOOL GetWindowPlacement( WINDOWPLACEMENT *lpinfo // 位置情報の構造体 BOOL SetWindowPlacement( CONST WINDOWPLACEMENT *lpinfo // 位置情報の構造体 次は構造体を紹介します typedef struct tagwindowplacement { UINT length; // 構造体のサイズ ( 必ずセットすること ) UINT flags; // 制御フラグ UINT showcmd; // ウインドウの表示状態 POINT ptminposition; // 最大化されるときのウインドウ左上隅位置 POINT ptmaxposition; // 最大化されるときのウインドウ左上隅位置 RECT rcnormalposition; // 通常ウインドウの矩形領域 WINDOWPLACEMENT; それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // ウインドウの最大化位置を取得 WINDOWPLACEMENT info; LONG cx; LONG cy; info.length = sizoef(windowplacement GetWindowPlacement( hwnd, &info cx = (info.ptmaxposition.x cy = (info.ptmaxposition.y // ウインドウの最大化位置を設定 cx = 600; cy = 200; info.length = sizoef(windowplacement info.ptmaxposition.x = cx; info.ptmaxposition.y = cy; SetWindowPlacement( hwnd, &info GetWindowPlacement() 関数でウインドウの最大化位置を取得します SetWindowPlacement() 関数でウインドウの最大化位置を設定します

15 スタイル関連 1. ウインドウ スタイルの動的変更 2. 拡張ウインドウ スタイルの動的変更 3. ウインドウの最前面表示を設定 / 解除 4. ウインドウのタスクボタンを表示 / 非表示 5. ウインドウのタイトルバーを表示 / 非表示

16 ウインドウ スタイルの動的変更 ウインドウ スタイルを動的に変更するには次の手順で行います 1. ウインドウ スタイルの取得 (GetWindowLong) 2. スタイル データのビットを動的に変更 (AND,OR) 3. ウインドウ スタイルの設定 (SetWindowLong) 4. ウインドウ スタイルの反映 (SetWindowPos) LONG GetWindowLong( int nindex // 取得するデータ値のインデックス LONG SetWindowLong( int nindex, // 設定するデータ値のインデックス LONG dwnewlong // 新しい値 BOOL SetWindowPos( HWND hwndinsertafter, // 配置順序のハンドル int X, // 横方向の位置 int Y, // 縦方向の位置 int cx, // 幅 int cy, // 高さ UINT uflags // ウィンドウ位置のオプション それでは変更例を簡単に紹介します hwnd にウインドウのハンドルを指定します // WS_THICKFRAME 属性の設定 LONG lstyle; lstyle = GetWindowLong( hwnd, GWL_STYLE lstyle = WS_THICKFRAME; lstyle = SetWindowLong( hwnd, GWL_STYLE, lstyle SetWindowPos( hwnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE SWP_NOSIZE SWP_NOZORDER SWP_FRAMECHANGED) // WS_THICKFRAME 属性の解除 LONG lstyle; lstyle = GetWindowLong( hwnd, GWL_STYLE lstyle &= ~WS_THICKFRAME; lstyle = SetWindowLong( hwnd, GWL_STYLE, lstyle SetWindowPos( hwnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE SWP_NOSIZE SWP_NOZORDER SWP_FRAMECHANGED) 上記のサンプルでは WS_THICKFRAME 属性を設定したり解除してます なお SetWindowLong() 関数でウインドウ スタイルを設定しただけでは反映しません 反映させるには必ず SetWindowPos() 関数で SWP_FRAMECHANGED オプションを実行します

17 拡張ウインドウ スタイルの動的変更 拡張ウインドウ スタイルを動的に変更するには次の手順で行います 1. 拡張ウインドウ スタイルの取得 (GetWindowLong) 2. 拡張スタイル データのビットを動的に変更 (AND,OR) 3. 拡張ウインドウ スタイルの設定 (SetWindowLong) 4. 拡張ウインドウ スタイルの反映 (SetWindowPos) LONG GetWindowLong( int nindex // 取得するデータ値のインデックス LONG SetWindowLong( int nindex, // 設定するデータ値のインデックス LONG dwnewlong // 新しい値 BOOL SetWindowPos( HWND hwndinsertafter, // 配置順序のハンドル int X, // 横方向の位置 int Y, // 縦方向の位置 int cx, // 幅 int cy, // 高さ UINT uflags // ウィンドウ位置のオプション それでは変更例を簡単に紹介します hwnd にウインドウのハンドルを指定します // WS_EX_TOOLWINDOW 属性の設定 LONG lexstyle; lexstyle = GetWindowLong( hwnd, GWL_EXSTYLE lexstyle = WS_EX_TOOLWINDOW; lexstyle = SetWindowLong( hwnd, GWL_EXSTYLE, lexstyle SetWindowPos( hwnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE SWP_NOSIZE SWP_NOZORDER SWP_FRAMECHANGED) // WS_EX_TOOLWINDOW 属性の解除 LONG lexstyle; lexstyle = GetWindowLong( hwnd, GWL_EXSTYLE lexstyle &= ~WS_EX_TOOLWINDOW; lexstyle = SetWindowLong( hwnd, GWL_EXSTYLE, lexstyle SetWindowPos( hwnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE SWP_NOSIZE SWP_NOZORDER SWP_FRAMECHANGED) 上記のサンプルでは WS_EX_TOOLWINDOW 属性を設定したり解除してます なお SetWindowLong() 関数でウインドウ スタイルを設定しただけでは反映しません 反映させるには必ず SetWindowPos() 関数で SWP_FRAMECHANGED オプションを実行します

18 ウインドウの最前面表示を設定 / 解除 指定ウインドウを最前面表示に設定したり 解除するには SetWindowPos() 関数を使います この API 関数はオプションが多く初心者には使いにくいかも知れません しかし お決まりパターンがありますから一度知ってしまえば簡単です また 最前面表示とは常に前面にウインドウが表示される状態のことです つまり 普通はアクティブ ウインドウのみが前面に表示されますが これよりも優先されて前面に表示させる状態を最前面表示と呼びます 応用としては小さい時計ソフトを常に表示させたい場合には 時計ソフトの起動時に最前面表示の設定を行えば良いのです BOOL SetWindowPos( HWND hwndinsertafter, // 配置順序のハンドル int X, // 横方向の位置 int Y, // 縦方向の位置 int cx, // 幅 int cy, // 高さ UINT uflags // ウィンドウ位置のオプション それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します さらに次の 操作を行うと必ずウインドウはアクティブ状態になります // 最前面表示の設定 SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, 0, 0, (SWP_NOOWNERZORDER SWP_NOMOVE SWP_NOSIZE) // 最前面表示の解除 SetWindowPos( hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, (SWP_NOOWNERZORDER SWP_NOMOVE SWP_NOSIZE) ウインドウを非アクティブ状態で設定や解除するには SWP_NOACTIVATE 定数を追加する必要が あります // 最前面表示の設定 SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, 0, 0, (SWP_NOOWNERZORDER SWP_NOMOVE SWP_NOSIZE SWP_NOACTIVATE) // 最前面表示の解除 SetWindowPos( hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, (SWP_NOOWNERZORDER SWP_NOMOVE SWP_NOSIZE SWP_NOACTIVATE) SetWindowPos() 関数で最前面表示を設定したり 最前面表示を解除します 非アクティブ化で設定と解除するときには SWP_NOACTIVATE 定数を追加します

19 ウインドウのタスクボタンを表示 / 非表示 普通のウインドウはタスクバーにタスク アイコン ( タスクボタン ) が表示されます このタスクボタンを表示したり 非表示にするにはウインドウ スタイルを動的に変更します 応用としては小さい時計ソフトを常に表示させたい場合には 時計ソフトの起動時にタスクボタンを非表示にすることで不要なタスク アイコンを1つ減らせます LONG GetWindowLong( int nindex // 取得するデータ値のインデックス LONG SetWindowLong( int nindex, // 設定するデータ値のインデックス LONG dwnewlong // 新しい値 BOOL ShowWindow( HWND hwnd, // ウインドウ ハンドル int ncmdshow // 表示状態 それでは変更例を簡単に紹介します hwnd にウインドウのハンドルを指定します // WS_EX_APPWINDOW 属性の設定 LONG lexstyle; lexstyle = GetWindowLong( hwnd, GWL_EXSTYLE lexstyle = WS_EX_APPWINDOW; ShowWindow( hwnd, SW_HIDE SetWindowLong( hwnd, GWL_EXSTYLE, lexstyle ShowWindow( hwnd, SW_SHOW // WS_EX_APPWINDOW 属性の解除 LONG lexstyle; lexstyle = GetWindowLong( hwnd, GWL_EXSTYLE lexstyle &= ~WS_EX_APPWINDOW; ShowWindow( hwnd, SW_HIDE SetWindowLong( hwnd, GWL_EXSTYLE, lexstyle ShowWindow( hwnd, SW_SHOW 上記のサンプルでは WS_EX_APPWINDOW 属性を設定したり解除してます なお SetWindowLong() 関数で拡張ウインドウ スタイルを設定しただけでは反映しません 反映させるには必ず ShowWindow() 関数でウインドウ非表示 スタイル変更 ウインドウ表示の順に実行します あと拡張ウインドウ スタイルに WS_EX_TOOLWINDOW 属性も追加されてないと正常に機能しません Windows OS の詳しい内部は公開されてないために 何故このような方法でないとタスク アイコン ( タスクボタン ) を表示したり 非表示にできないのか不明です しかし うまく組み合わせることで実現させるのが上級プログラマなのです

20 ウインドウのタイトルバーを表示 / 非表示 普通のウインドウはタイトルバーが表示されます このタイトルバーを表示したり 非表示にするにはウインドウ スタイルを動的に変更します 応用としては小さい時計ソフトを常に表示させたい場合には 時計ソフトの起動時にタイトルバーを非表示にすることで表示部分のみの時計ソフトが実現できます LONG GetWindowLong( int nindex // 取得するデータ値のインデックス LONG SetWindowLong( int nindex, // 設定するデータ値のインデックス LONG dwnewlong // 新しい値 それでは変更例を簡単に紹介します hwnd にウインドウのハンドルを指定します // WS_CAPTION 属性の設定 LONG lstyle; lstyle = GetWindowLong( hwnd, GWL_STYLE lstyle = WS_CAPTION; lstyle = SetWindowLong( hwnd, GWL_STYLE, lstyle // WS_CAPTION 属性の解除 LONG lstyle; lstyle = GetWindowLong( hwnd, GWL_STYLE lstyle &= ~WS_CAPTION; lstyle = SetWindowLong( hwnd, GWL_STYLE, lstyle 上記のサンプルでは WS_CAPTION 属性を設定したり解除してます この WS_CAPTION 属性はウインドウ スタイルを変更するだけで設定が有効になります このためウインドウ スタイルの動的変更で紹介したように SetWindowLong() 関数に SWP_FRAMECHANGED オプションを指定して実行する必要はありません むしろ実行すると正常に機能しません 注意しましょう

21 矩形領域関連 1. ウインドウの矩形領域を取得 2. ウインドウ情報から矩形領域を取得 3. タイトルバーの矩形領域を取得 4. タイトルバー情報から矩形領域を取得 5. デスクトップの矩形領域を取得

22 ウインドウの矩形領域を取得 ウインドウ画面の矩形領域とクライアント領域の矩形領域を取得する方法を紹介します ウインドウ画面は GetWindowRect() 関数で矩形領域を取得できます クライアント領域は GetClientRect() 関数で矩形領域を取得できます なお クライアント領域とはウインドウ画面からタイトルバーやメニュー領域を除いた作業領域のことです BOOL GetWindowRect( LPRECT lprect // ウィンドウの矩形領域 BOOL GetClientRect( LPRECT lprect // クライアントの矩形領域 次は構造体を紹介します typedef struct tagrect { LONG left; // 左上隅のX 座標 LONG top; // 左上隅のY 座標 LONG right; // 右下隅のX 座標 LONG bottom; // 右下隅のY 座標 RECT, *LPRECT; ウインドウ画面やクライアント領域の矩形領域を取得するときに利用する長方形情報の構造体です この RECT 構造体は汎用的なので GetWindowRect() 関数や GetClientRect() 関数以外でも良く登場します それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // ウインドウの矩形領域を取得 RECT rc; GetWindowRect( hwnd, &rc // クライアントの矩形領域を取得 RECT rc; GetClientRect( hwnd, &rc GetWindowRect() 関数でウインドウの矩形領域を取得します GetClientRect() 関数でクライアントの矩形領域を取得します

23 ウインドウ情報から矩形領域を取得 ウインドウの矩形領域を取得するもう一つの方法を紹介します 今回は GetWindowInfo() 関数を利用して一発でウインドウの矩形領域を取得します この API 関数を利用するとウインドウ矩形領域 クライアント矩形領域 ウインドウ スタイル 拡張ウインドウ スタイルなど様々な情報を一発で取得できます BOOL GetWindowInfo( LPWINDOWINFO lpinfo // ウインドウ情報の構造体 次は構造体を紹介します typedef struct tagwindowinfo { DWORD cbsize; // 構造体のサイズ ( 必ずセットすること ) RECT rcwindow; // ウインドウの矩形領域 RECT rcclient; // クライアントの矩形領域 DWORD dwstyle; // ウインドウ スタイル DWORD dwexstyle; // 拡張ウインドウ スタイル DWORD dwwindowstatus; // ウインドウのアクティブ状態 UINT cxwindowborders; // ウインドウ境界の横幅 UINT cywindowborders; // ウインドウ境界の高さ ATOM atomwindowtype; // ウインドウ クラスのアトム値 WORD wcreatorversion; // ウインドウのバージョン WINDOWINFO, *LPWINDOWINFO; 上記の構造体にウインドウ情報が格納されます hwnd にウインドウのハンドルを指定します // ウインドウ情報の取得 WINDOWINFO info; info.cbsize = sizoef(windowinfo GetWindowInfo( hwnd, &info 上記の info.rcwindow メンバにウインドウの矩形領域が取得されます 上記の info.rcclient メンバにクライアントの矩形領域が取得されます 上記の info.dwstyle メンバにウインドウ スタイルが取得されます 上記の info.dwexstyle メンバに拡張ウインドウ スタイルが取得されます その他の情報は構造体を参考にして下さい GetWindowInfo() 関数でウインドウ情報を一括で取得します

24 タイトルバーの矩形領域を取得 タイトルバーの矩形領域を取得する方法を紹介します タイトルバーはウインドウ画面の矩形領域から計算できます BOOL GetWindowRect( LPRECT lprect // ウィンドウの矩形領域 int GetSystemMetrics( int nindex // システム メトリック番号 次は構造体を紹介します typedef struct tagrect { LONG left; // 左上隅のX 座標 LONG top; // 左上隅のY 座標 LONG right; // 右下隅のX 座標 LONG bottom; // 右下隅のY 座標 RECT, *LPRECT; ウインドウ画面の矩形領域を取得するときに利用する長方形情報の構造体です GetSystemMetrics() 関数でタイトルバーの高さを取得します それでは計算方法 ( アルゴリズム ) を 紹介します hwnd にウインドウのハンドルを指定します // タイトルバーの矩形領域を取得 RECT rc; GetWindowRect( hwnd, &rc rc.bottom = rc.top; rc.bottom += GetSystemMetrics(SM_CYCAPTION rc.bottom += GetSystemMetrics(SM_CYFIXEDFRAME // 状況に応じて SM_CYSMCAPTION // 状況に応じて SM_CYSIZEFRAME 上記のサンプルはサイズ変更できないウインドウ スタイルの場合です サイズ変更可能なウインドウ スタイルの場合は SM_CYFIXEDFRAME を SM_CYSIZEFRAME に変更します また 小さいタイトルバーの矩形領域を取得するには SM_CYCAPTION を SM_CYSMCAPTION に変更します この辺を自動的に判断するには GetWindowLong() 関数でウインドウ スタイルを取得して WS_THICKFRAME 属性があればサイズ変更可能と判断 さらに GetWindowLong() 関数で拡張ウインドウ スタイルを取得して WS_EX_TOOLWINDOW 属性があれば小さいタイトルバーと判断できます GetWindowRect() 関数でウインドウの矩形領域を取得します GetSystemMetrics() 関数でタイトルバーの高さを取得します これらを組み合わせることでタイトルバーの矩形領域を求めます

25 タイトルバー情報から矩形領域を取得 タイトルバーの矩形領域を取得するもう一つの方法を紹介します 今回は GetTitleBarInfo() 関数を利用して一発でタイトルバーの矩形領域を取得します ただし タイトルバーにアイコンがある場合はアイコン部分を除いた矩形領域が取得されます BOOL GetTitleBarInfo( LPTITLEBARINFO lpinfo // タイトルバー情報の構造体 次は構造体を紹介します typedef struct tagtitlebarinfo { DWORD cbsize; // 構造体のサイズ ( 必ずセットすること ) RECT rctitlebar; // タイトルバーの矩形領域 DWORD rgstate[cchildren_titlebar + 1]; // 登録ステータス TITLEBARINFO, *LPTITLEBARINFO; 上記の構造体にタイトルバー情報が格納されます hwnd にウインドウのハンドルを指定し ます // タイトルバーの矩形領域を取得 TITLEBARINFO info; LONG sx; LONG sy; info.cbsize = sizoef(titlebarinfo GetTitleBarInfo( hwnd, &info sx = (info.rctitlebar.right - info.rctitlebar.left sy = (info.rctitlebar.bottom - info.rctitlebar.top 上記の info.rctitlebar メンバにタイトルバーの矩形領域が取得されます GetTitleBarInfo() 関数でタイトルバーの矩形領域を取得します ただし タイトルバーにアイコンがある場合はアイコン部分を除いた矩形領域が取得されます

26 デスクトップの矩形領域を取得 デスクトップ画面の矩形領域とワークエリア領域の矩形領域を取得する方法を紹介します デスクトップ画面は GetDesktopWindow() 関数でウインドウ ハンドルを取得してから GetWindowRect() 関数で矩形領域を取得できます ワークエリア領域は SystemParametersInfo() 関数に SPI_GETWORKAREA 定数を与えることで矩形領域を一発で取得可能です なお ワークエリアとはデスクトップ画面からタスクバー領域を除いた作業領域のことです HWND GetDesktopWindow( VOID // デスクトップのハンドル BOOL GetWindowRect( LPRECT lprect // ウィンドウの座標値 BOOL SystemParametersInfo( UINT uiaction, // 取得または設定するべきシステムパラメータ UINT uiparam, // 実施するべき操作によって異なる PVOID pvparam, // 実施するべき操作によって異なる UINT fwinini // ユーザープロファイルの更新オプション 次は構造体を紹介します typedef struct tagrect { LONG left; // 左上隅のX 座標 LONG top; // 左上隅のY 座標 LONG right; // 右下隅のX 座標 LONG bottom; // 右下隅のY 座標 RECT, *LPRECT; デスクトップやワークエリアの矩形領域を取得するときに利用する長方形情報の構造体です この RECT 構造体は汎用的なので GetWindowRect() 関数や SystemParametersInfo() 関数以外でも良く登場します 覚えておくと便利でしょう それでは本題の GetDesktopRect() 関数と GetMonitorRect() 関数のソースを載せます hwnd に対象のウインドウ ハンドルを指定するだけで矩形領域を取得できます // デスクトップの矩形領域を取得 VOID GetDesktopRect( LPRECT lprc ) { GetWindowRect( GetDesktopWindow(), lprc // ワークエリアの矩形領域を取得 VOID GetMonitorRect( LPRECT lprc ) { SystemParametersInfo( SPI_GETWORKAREA, 0, lprc, 0 GetDesktopRect() 関数でデスクトップの矩形領域を取得します GetMonitorRect() 関数でワークエリアの矩形領域を取得します

27 アイコン関連 1. 大きいウインドウ アイコンの取得 / 設定 2. 小さいウインドウ アイコンの取得 / 設定

28 大きいウインドウ アイコンの取得 / 設定 ウインドウの起動後に大きいアイコンを取得したり 設定したりする方法を紹介します この方法を利用するとダイアログのウインドウに対しても左上隅にアイコンを設定できます また 既にウインドウにアイコンが設定されてる場合は変更することも可能です なお アイコンの取得と設定はアイコン ハンドルを使って操作します LRESULT SendMessage( UINT Msg, // メッセージ WPARAM wparam, // 最初のパラメータ LPARAM lparam // 後続のパラメータ BOOL DestroyIcon( HICON hicon // アイコンのハンドル HANDLE LoadImage( HINSTANCE hinst, // インスタンスのハンドル LPCTSTR lpszname, // イメージの名前または識別子 UINT utype, // イメージのタイプ int cx, // 希望する幅 int cy, // 希望する高さ UINT fuload // ロードのオプション それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 大きいアイコンの取得 HICON hicon; hicon = (HICON)SendMessage( hwnd, WM_GETICON, ICON_BIG, 0 // 大きいアイコンの設定 HICON hicon; hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SendMessage( hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon // 大きいアイコンの変更 HICON hicon; hicon = (HICON)SendMessage( hwnd, WM_GETICON, ICON_BIG, 0 DestroyIcon( hicon hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SendMessage( hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon SendMessage() 関数で大きいアイコンを設定します DestroyIcon() 関数で大きいアイコンを破棄します

29 小さいウインドウ アイコンの取得 / 設定 ウインドウの起動後に小さいアイコンを取得したり 設定したりする方法を紹介します この方法を利用するとダイアログのウインドウに対しても左上隅にアイコンを設定できます また 既にウインドウにアイコンが設定されてる場合は変更することも可能です なお アイコンの取得と設定はアイコン ハンドルを使って操作します LRESULT SendMessage( UINT Msg, // メッセージ WPARAM wparam, // 最初のパラメータ LPARAM lparam // 後続のパラメータ BOOL DestroyIcon( HICON hicon // アイコンのハンドル HANDLE LoadImage( HINSTANCE hinst, // インスタンスのハンドル LPCTSTR lpszname, // イメージの名前または識別子 UINT utype, // イメージのタイプ int cx, // 希望する幅 int cy, // 希望する高さ UINT fuload // ロードのオプション それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 小さいアイコンの取得 HICON hicon; hicon = (HICON)SendMessage( hwnd, WM_GETICON, ICON_SMALL, 0 // 小さいアイコンの設定 HICON hicon; hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SendMessage( hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon // 小さいアイコンの変更 HICON hicon; hicon = (HICON)SendMessage( hwnd, WM_GETICON, ICON_SMALL, 0 DestroyIcon( hicon hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SendMessage( hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon SendMessage() 関数で小さいアイコンを設定します DestroyIcon() 関数で小さいアイコンを破棄します

30 クラス関連 1. 大きいクラス アイコンの取得 / 設定 2. 小さいクラス アイコンの取得 / 設定

31 大きいクラス アイコンの取得 / 設定 ウインドウの起動後に大きいアイコンを取得したり 設定したりする方法を紹介します この方法はウインドウ クラスに設定されてるアイコンを操作します ウインドウ アイコンは1つのウインドウに対してのアイコン操作ですが クラス アイコンは同じウインドウ クラスなら全て同じアイコンに設定できます 複数のモードレス ダイアログのアイコンを一括で変更したい場合に利用します ULONG_PTR GetClassLongPtr( HWND hwnd, // ウインドウのハンドル int nindex // 取得するインデックス定数 ULONG_PTR SetClassLongPtr( HWND hwnd, // ウインドウのハンドル int nindex, // 設定するインデックス定数 LONG_PTR dwnewlong // 設定するクラスのデータ値 それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 大きいアイコンの取得 HICON hicon; hicon = (HICON)GetClassLongPtr( hwnd, GCLP_HICON // 大きいアイコンの設定 HICON hicon; hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SetClassLongPtr( hwnd, GCLP_HICON, (LONG_PTR)hIcon // 大きいアイコンの変更 HICON hicon; hicon = (HICON)GetClassLongPtr( hwnd, GCLP_HICON DestroyIcon( hicon hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SetClassLongPtr( hwnd, GCLP_HICON, (LONG_PTR)hIcon GetClassLongPtr() 関数で大きいアイコンを取得します SetClassLongPtr() 関数で大きいアイコンを設定します DestroyIcon() 関数で大きいアイコンを破棄します

32 小さいクラス アイコンの取得 / 設定 ウインドウの起動後に小さいアイコンを取得したり 設定したりする方法を紹介します この方法はウインドウ クラスに設定されてるアイコンを操作します ウインドウ アイコンは1つのウインドウに対してのアイコン操作ですが クラス アイコンは同じウインドウ クラスなら全て同じアイコンに設定できます 複数のモードレス ダイアログのアイコンを一括で変更したい場合に利用します ULONG_PTR GetClassLongPtr( HWND hwnd, // ウインドウのハンドル int nindex // 取得するインデックス定数 ULONG_PTR SetClassLongPtr( HWND hwnd, // ウインドウのハンドル int nindex, // 設定するインデックス定数 LONG_PTR dwnewlong // 設定するクラスのデータ値 それでは使用例を簡単に紹介します hwnd にウインドウのハンドルを指定します // 小さいアイコンの取得 HICON hicon; hicon = (HICON)GetClassLongPtr( hwnd, GCLP_HICONSM // 小さいアイコンの設定 HICON hicon; hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SetClassLongPtr( hwnd, GCLP_HICONSM, (LONG_PTR)hIcon // 小さいアイコンの変更 HICON hicon; hicon = (HICON)GetClassLongPtr( hwnd, GCLP_HICONSM DestroyIcon( hicon hicon = (HICON)LoadImage( hwnd, MAKEINTRESOURCE(IDI_ICON01), IMAGE_ICON, 0, 0, (LR_DEFAULTSIZE LR_SHARED) SetClassLongPtr( hwnd, GCLP_HICONSM, (LONG_PTR)hIcon GetClassLongPtr() 関数で小さいアイコンを取得します SetClassLongPtr() 関数で小さいアイコンを設定します DestroyIcon() 関数で小さいアイコンを破棄します

33 便利関数の付録 1. 便利関数の紹介 2. 便利関数のプロトタイプ宣言 3. GetWindowMove / SetWindowMove 4. GetWindowSize / SetWindowSize 5. ModifyWindowStyle / ModifyWindowStyleEx 6. GetWindowTopMost / SetWindowTopMost 7. GetTaskBar / SetTaskBar 8. GetTitleBar / SetTitleBar 9. GetTitleBarRect 10. GetWindowIcon / SetWindowIcon 11. DelWindowIcon 12. GetClassIcon / SetClassIcon 13. DelClassIcon

34 便利関数の紹介 この章では 今まで紹介したウインドウの基礎を基にした便利関数を紹介します 1. ウインドウ位置の取得 / 設定 (GetWindowMove SetWindowMove) 2. ウインドウ サイズの取得 / 設定 (GetWindowSize SetWindowSize) 3. ウインドウ スタイルの動的変更 (ModifyWindowStyle ModifyWindowStyleEx) 4. ウインドウの最前面表示を設定 / 解除 (GetWindowTopMost SetWindowTopMost) 5. ウインドウのタスクボタンを表示 / 非表示 (GetTaskBar SetTaskBar) 6. ウインドウのタイトルバーを表示 / 非表示 (GetTitleBar SetTitleBar) 7. ウインドウのタイトルバー領域を取得 (GetTitleBarRect) 8. ウインドウ アイコンの取得 / 設定 (GetWindowIcon SetWindowIcon) 9. ウインドウ アイコンの削除 (DelWindowIcon) 10. クラス アイコンの取得 / 設定 (GetClassIcon SetClassIcon) 11. クラス アイコンの削除 (DelClassIcon) 上記以外にも一連の操作手順を関数として用意することでプログラミングが楽しくなります C 言語 C++ 言語 その他のコンピュータ言語でも考え方は同じです 上級プログラマは独自の処理手順を関数として1つのオリジナル ライブラリとして用意します このような考え方をソフトウェア財産と呼ぶことがあります 一連の操作手順は関数として1つにます そして関数を1つ呼びだすだけで実現させるのがプログラミングのコツです なお 関数名も分かりやすく名付ける工夫も必要になります

35 便利関数のプロトタイプ宣言 便利関数のプロトタイプ宣言を載せます // ウインドウ位置の取得 / 設定 LONG GetWindowMove( HWND hwnd, LONG *cx, LONG *cy LONG SetWindowMove( HWND hwnd, LONG cx, LONG cy // ウインドウ サイズの取得 / 設定 LONG GetWindowSize( HWND hwnd, LONG *sx, LONG *sy LONG SetWindowSize( HWND hwnd, LONG sx, LONG sy // ウインドウ スタイルの動的変更 VOID ModifyWindowStyle( HWND hwnd, LONG lreset, LONG lset, BOOL bchanged VOID ModifyWindowStyleEx( HWND hwnd, LONG lreset, LONG lset, BOOL bchanged // ウインドウの最前面表示を設定 / 解除 BOOL GetWindowTopMost( HWND hwnd BOOL SetWindowTopMost( HWND hwnd, BOOL btopmost // ウインドウのタスクボタンを表示 / 非表示 BOOL GetTaskBar( HWND hwnd BOOL SetTaskBar( HWND hwnd, BOOL btaskbar // ウインドウのタイトルバーを表示 / 非表示 BOOL GetTitleBar( HWND hwnd BOOL SetTitleBar( HWND hwnd, BOOL btitlebar // ウインドウのタイトルバー領域を取得 LONG GetTitleBarRect( HWND hwnd, LPRECT lprc // ウインドウ アイコンの取得 / 設定 / 削除 VOID GetWindowIcon( HWND hwnd, HICON *hlarge, HICON *hsmall VOID SetWindowIcon( HWND hwnd, HICON hlarge, HICON hsmall VOID DelWindowIcon( HWND hwnd // クラス アイコンの取得 / 設定 / 削除 VOID GetClassIcon( HWND hwnd, HICON *hlarge, HICON *hsmall VOID SetClassIcon( HWND hwnd, HICON hlarge, HICON hsmall VOID DelClassIcon( HWND hwnd 上記の便利関数は 関数名だけで処理内容が伝わるように工夫してます また 関数名の名付け方にも一連の統一感を持たせてみました 読者の方も今後の関数作成で大いに参考に出来ることでしょう

36 GetWindowMove / SetWindowMove ウインドウ位置の取得関数を紹介します // ウインドウ位置の取得 LONG GetWindowMove( HWND hwnd, LONG *cx, LONG *cy ) { RECT rc; GetWindowRect( hwnd, &rc *cx = (rc.left *cy = (rc.top return MAKELONG( *cx, *cy hwnd にウインドウのハンドルを指定します cx cy にはウインドウ位置を受け取る LONG 型へのポインタを指定します NULL ポインタを渡すと実行時エラーになりますから注意しましょう 戻り値は上位 16 ビットが縦座標 下位 16 ビットが横座標となります ウインドウ位置の設定関数を紹介します // ウインドウ位置の設定 LONG SetWindowMove( HWND hwnd, LONG cx, LONG cy ) { SetWindowPos( hwnd, NULL, cx, cy, 0, 0, (SWP_NOZORDER SWP_NOOWNERZORDER SWP_NOSIZE) return MAKELONG( cx, cy hwnd にウインドウのハンドルを指定します cx cy にはウインドウ位置のスクリーン座標を指定します マイナス値を渡すと左側や上側にウインドウが移動します プラス値が大き過ぎると右側や下側にウインドウが移動して隠れたりします 戻り値は上位 16 ビットが縦座標 下位 16 ビットが横座標となります GetWindowMove() 関数でウインドウ位置を取得します SetWindowMove() 関数でウインドウ位置を設定します

37 GetWindowSize / SetWindowSize ウインドウ サイズの取得関数を紹介します // ウインドウ サイズの取得 LONG GetWindowSize( HWND hwnd, LONG *sx, LONG *sy ) { RECT rc; GetWindowRect( hwnd, &rc *sx = (rc.right - rc.left *sy = (rc.bottom - rc.top return MAKELONG( *sx, *sy hwnd にウインドウのハンドルを指定します sx sy にはウインドウ サイズを受け取る LONG 型へのポインタを指定します NULL ポインタを渡すと実行時エラーになりますから注意しましょう 戻り値は上位 16 ビットが縦サイズ 下位 16 ビットが横サイズとなります ウインドウ サイズの設定関数を紹介します // ウインドウ サイズの設定 LONG SetWindowSize( HWND hwnd, LONG sx, LONG sy ) { SetWindowPos( hwnd, NULL, 0, 0, sx, sy, (SWP_NOZORDER SWP_NOOWNERZORDER SWP_NOMOVE) return MAKELONG( sx, sy hwnd にウインドウのハンドルを指定します sx sy にはピクセル単位でウインドウ サイズを指定します マイナス値を渡したときの動作は保障できません プラス値が大き過ぎるとデスクトップからウインドウがはみ出します 戻り値は上位 16 ビットが縦サイズ 下位 16 ビットが横サイズとなります GetWindowSize() 関数でウインドウ サイズを取得します SetWindowSize() 関数でウインドウ サイズを設定します

38 ModifyWindowStyle / ModifyWindowStyleEx ウインドウ スタイルを動的に変更する関数を紹介します // ウインドウ スタイルの動的変更 VOID ModifyWindowStyle( HWND hwnd, LONG lreset, LONG lset, BOOL bchanged ) { LONG lstyle; lstyle = GetWindowLong( hwnd, GWL_STYLE lstyle &= ~lreset; lstyle = lset; SetWindowLong( hwnd, GWL_STYLE, lstyle // ウインドウ スタイルの取得 // 削除するウインドウ スタイル // 追加するウインドウ スタイル // ウインドウ スタイルの設定 if ( bchanged ){ SetWindowPos( hwnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE SWP_NOSIZE SWP_NOZORDER SWP_NOACTIVATE SWP_FRAMECHANGED) hwnd にウインドウのハンドルを指定します lreset には削除したいウインドウ スタイルを指定します lset には追加したいウインドウ スタイルを指定します 拡張ウインドウ スタイルを動的に変更する関数を紹介します // 拡張ウインドウ スタイルの動的変更 VOID ModifyWindowStyleEx( HWND hwnd, LONG lreset, LONG lset, BOOL bchanged ) { LONG lstyle; lstyle = GetWindowLong( hwnd, GWL_EXSTYLE lstyle &= ~lreset; lstyle = lset; SetWindowLong( hwnd, GWL_EXSTYLE, lstyle // 拡張ウインドウ スタイルの取得 // 削除する拡張ウインドウ スタイル // 追加する拡張ウインドウ スタイル // 拡張ウインドウ スタイルの設定 if ( bchanged ){ SetWindowPos( hwnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE SWP_NOSIZE SWP_NOZORDER SWP_NOACTIVATE SWP_FRAMECHANGED) hwnd にウインドウのハンドルを指定します lreset には削除したい拡張ウインドウ スタイルを指定します lset には追加したい拡張ウインドウ スタイルを指定します ModifyWindowStyle() 関数でウインドウ スタイルを動的に変更します ModifyWindowStyleEx() 関数で拡張ウインドウ スタイルを動的に変更します

39 GetWindowTopMost / SetWindowTopMost 最前面表示状態の取得関数を紹介します // 最前面表示状態の取得 BOOL GetWindowTopMost( HWND hwnd ) { if ( GetWindowLong(hWnd,GWL_EXSTYLE) & WS_EX_TOPMOST ){ return TRUE; return FALSE; hwnd にウインドウのハンドルを指定します 戻り値は BOOL 型ですから FALSE なら最前面表示ではない TRUE なら最前面表示の状態であることを意味します 最前面表示状態の設定関数を紹介します // 最前面表示状態の設定 BOOL SetWindowTopMost( HWND hwnd, BOOL btopmost ) { if ( btopmost ){ SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, 0, 0, (SWP_NOOWNERZORDER SWP_NOMOVE SWP_NOSIZE) else{ SetWindowPos( hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, (SWP_NOOWNERZORDER SWP_NOMOVE SWP_NOSIZE) return GetWindowTopMost( hwnd hwnd にウインドウのハンドルを指定します btopmost には最前面表示状態を指定します TRUE なら最前面表示に設定して FALSE なら最前面表示を解除します 戻り値は BOOL 型ですから FALSE なら最前面表示ではない TRUE なら最前面表示の状態であることを意味します GetWindowTopMost() 関数で最前面表示状態を取得します SetWindowTopMost() 関数で最前面表示状態を設定します

40 GetTaskBar / SetTaskBar タスクボタン状態の取得関数を紹介します // タスクボタン状態の取得 BOOL GetTaskBar( HWND hwnd ) { if ( GetWindowLong(hDlg,GWL_EXSTYLE) & WS_EX_APPWINDOW ){ return TRUE; return FALSE; hwnd にウインドウのハンドルを指定します 戻り値は BOOL 型ですから FALSE ならタスクボタンは表示されてない TRUE ならタスクボタンが表示状態であることを意味します タスクボタン状態の設定関数を紹介します // タスクボタン状態の設定 BOOL SetTaskBar( HWND hwnd, BOOL btaskbar ) { LONG lexstyle = GetWindowLong(hWnd,GWL_EXSTYLE if ( btaskbar ){ lexstyle = WS_EX_APPWINDOW; else{ lexstyle &= ~WS_EX_APPWINDOW; ShowWindow( hwnd, SW_HIDE SetWindowLong( hwnd, GWL_EXSTYLE, lexstyle ShowWindow( hwnd, SW_SHOW return GetTaskBar( hwnd hwnd にウインドウのハンドルを指定します btaskbar にはタスクボタン状態を指定します TRUE ならタスクボタンを表示して FALSE ならタスクボタンを非表示にします 戻り値は BOOL 型ですから FALSE ならタスクボタンは表示されてない TRUE ならタスクボタンが表示状態であることを意味します GetTaskBar() 関数でタスクボタン状態を取得します SetTaskBar() 関数でタスクボタン状態を設定します 注意事項としては 拡張ウインドウ スタイルに WS_EX_TOOLWINDOW 属性が追加されてないと正常に機能しません

41 GetTitleBar / SetTitleBar タイトルバー状態の取得関数を紹介します // タイトルバー状態の取得 BOOL GetTitleBar( HWND hwnd ) { if ( (GetWindowLong(hWnd,GWL_STYLE) & WS_CAPTION) == WS_CAPTION ){ return TRUE; return FALSE; hwnd にウインドウのハンドルを指定します 戻り値は BOOL 型ですから FALSE ならタイトルバーは表示されてない TRUE ならタイトルバーが表示状態であることを意味します タイトルバー状態の設定関数を紹介します // タイトルバー状態の設定 BOOL SetTitleBar( HWND hwnd, BOOL btitlebar ) { LONG lstyle = GetWindowLong(hWnd,GWL_STYLE if ( btitlebar ){ lstyle = WS_CAPTION; else{ lstyle &= ~WS_CAPTION; SetWindowLong( hwnd, GWL_STYLE, lstyle return GetTitleBar( hwnd hwnd にウインドウのハンドルを指定します btitlebar にはタイトルバー状態を指定します TRUE ならタイトルバーを表示して FALSE ならタイトルバーを非表示にします 戻り値は BOOL 型ですから FALSE ならタイトルバーは表示されてない TRUE ならタイトルバーが表示状態であることを意味します GetTitleBar() 関数でタイトルバー状態を取得します SetTitleBar() 関数でタイトルバー状態を設定します

42 GetTitleBarRect タイトルバー領域の取得関数を紹介します typedef struct tagrect { LONG left; // 左上隅のX 座標 LONG top; // 左上隅のY 座標 LONG right; // 右下隅のX 座標 LONG bottom; // 右下隅のY 座標 RECT, *LPRECT; 上記の長方形情報の構造体にタイトルバーの矩形領域がセットされます // タイトルバーの矩形領域を取得 LONG GetTitleBarRect( HWND hwnd, LPRECT lprc ) { INT sx; INT sy; // ウインドウの矩形領域を取得 GetWindowRect( hwnd, &lprc lprc->bottom = lprc->top; // サイズ変更可能なウインドウの調査 if ( GetWindowLong(hWnd,GWL_STYLE) & WS_THICKFRAME ){ lprc->bottom += GetSystemMetrics(SM_CYSIZEFRAME else{ lprc->bottom += GetSystemMetrics(SM_CYFIXEDFRAME // 小さいタイトルバー ウインドウの調査 if ( GetWindowLong(hWnd,GWL_EXSTYLE) & WS_EX_TOOLWINDOW ){ lprc->bottom += GetSystemMetrics(SM_CYSMCAPTION else{ lprc->bottom += GetSystemMetrics(SM_CYCAPTION sx = (lprc->right - lprc->left sy = (lprc->bottom - lprc->top return MAKELONG( sx, sy // タイトルバーの横幅 // タイトルバーの高さ hwnd にウインドウのハンドルを指定します lprc にはタイトルバー領域を格納する RECT 型へのポインタを指定します 戻り値は上位 16 ビットが縦サイズ 下位 16 ビットが横サイズとなります GetTitleBarRect() 関数でタイトルバー領域の矩形領域を取得します 戻り値のデータ lret を次のマクロ関数で縦横サイズに分離できます LOWORD(lRet) でタイトルバーの横サイズが取得できます HIWORD(lRet) でタイトルバーの縦サイズが取得できます

43 GetWindowIcon / SetWindowIcon ウインドウ アイコンの取得関数を紹介します // ウインドウ アイコンの取得 VOID GetWindowIcon( HWND hwnd, HICON *hlarge, HICON *hsmall ) { *hlarge = (HICON)SendMessage( hwnd, WM_GETICON, ICON_BIG, 0 *hsmall = (HICON)SendMessage( hwnd, WM_GETICON, ICON_SMALL, 0 hwnd にウインドウのハンドルを指定します hlarge には大きいアイコン ハンドルを格納する HICON 型へのポインタを指定します hsmall には小さいアイコン ハンドルを格納する HICON 型へのポインタを指定します ウインドウ アイコンの設定関数を紹介します // ウインドウ アイコンの設定 VOID SetWindowIcon( HWND hwnd, HICON hlarge, HICON hsmall ) { HICON hicon; if ( hlarge!= NULL ){ if ( (hicon = (HICON)SendMessage(hWnd,WM_GETICON,ICON_BIG,0))!= NULL ){ DestroyIcon( hicon SendMessage( hwnd, WM_SETICON, ICON_BIG, (LPARAM)hLarge if ( hsmall!= NULL ){ if ( (hicon = (HICON)SendMessage(hWnd,WM_GETICON,ICON_SMALL,0))!= NULL ){ DestroyIcon( hicon SendMessage( hwnd, WM_SETICON, ICON_SMALL, (LPARAM)hSmall hwnd にウインドウのハンドルを指定します hlarge には設定する大きいアイコン ハンドルを指定します hlarge が NULL なら設定しない hsmall には設定する小さいアイコン ハンドルを指定します hsmall が NULL なら設定しない GetWindowIcon() 関数でウインドウ アイコンを取得します SetWindowIcon() 関数でウインドウ アイコンを設定します

44 DelWindowIcon ウインドウ アイコンの削除関数を紹介します // ウインドウ アイコンの削除 VOID DelWindowIcon( HWND hwnd ) { DestroyIcon( (HICON)SendMessage(hWnd,WM_GETICON,ICON_BIG,0) DestroyIcon( (HICON)SendMessage(hWnd,WM_GETICON,ICON_SMALL,0) SendMessage( hwnd, WM_SETICON, ICON_BIG, NULL SendMessage( hwnd, WM_SETICON, ICON_SMALL, NULL hwnd にウインドウのハンドルを指定します DelWindowIcon() 関数でウインドウ アイコンを削除します

45 GetClassIcon / SetClassIcon クラス アイコンの取得関数を紹介します // クラス アイコンの取得 VOID GetClassIcon( HWND hwnd, HICON *hlarge, HICON *hsmall ) { *hlarge = (HICON)GetClassLongPtr( hwnd, GCLP_HICON *hsmall = (HICON)GetClassLongPtr( hwnd, GCLP_HICONSM hwnd にウインドウのハンドルを指定します hlarge には大きいアイコン ハンドルを格納する HICON 型へのポインタを指定します hsmall には小さいアイコン ハンドルを格納する HICON 型へのポインタを指定します クラス アイコンの設定関数を紹介します // クラス アイコンの設定 VOID SetClassIcon( HWND hwnd, HICON hlarge, HICON hsmall ) { HICON hicon; if ( hlarge!= NULL ){ if ( (hicon = (HICON)GetClassLongPtr(hWnd,GCLP_HICON))!= NULL ){ DestroyIcon( hicon SetClassLongPtr( hwnd, GCLP_HICON, (LONG_PTR)hLarge if ( hsmall!= NULL ){ if ( (hicon = (HICON)GetClassLongPtr(hWnd,GCLP_HICONSM))!= NULL ){ DestroyIcon( hicon SetClassLongPtr( hwnd, GCLP_HICONSM, (LONG_PTR)hSmall hwnd にウインドウのハンドルを指定します hlarge には設定する大きいアイコン ハンドルを指定します hlarge が NULL なら設定しない hsmall には設定する小さいアイコン ハンドルを指定します hsmall が NULL なら設定しない GetClassIcon() 関数でクラス アイコンを取得します SetClassIcon() 関数でクラス アイコンを設定します

46 DelClassIcon クラス アイコンの削除関数を紹介します // クラス アイコンの削除 VOID DelClassIcon( HWND hwnd ) { DestroyIcon( (HICON)GetClassLongPtr(hWnd,GCLP_HICON) DestroyIcon( (HICON)GetClassLongPtr(hWnd,GCLP_HICONSM) SetClassLongPtr( hwnd, GCLP_HICON, NULL SetClassLongPtr( hwnd, GCLP_HICONSM, NULL hwnd にウインドウのハンドルを指定します DelClassIcon() 関数でクラス アイコンを削除します

47 おわりに 1. 著者のプロフィール

48 著者のプロフィール ニックネーム 科学太郎 性別 男性 誕生日 1975 年 03 月 24 日生まれ 都道府県 長野県 職業 電脳プログラミング塾 ( 自営業 ) 自己紹介 日本では2003 年度より全国一律の高校で 情報 という教科書が導入されました しかし 文部省は パソコンに関する授業をすれば良い という手抜きルールを作りました これではワープロソフトやインターネットの使い方だけで終わる高校から ソフトウェア開発の基礎知識であるプログラミングの授業を行う高校が現れて 天と地 の差となります 分かりやすく 数学 で例えると文部省は 数学の授業に対して 数字を扱う授業をすれば良い という手抜きルー ルを作った事と同じです つまり 足し算と引き算を教える高校から微分と積分を教える高校が現れるという事です そこで全国の高校生諸君のために 勝手に プログラミング普及推進委員会 と名乗ってフリーソフトやフリーゲー ムの製作方法を電子書籍シリーズとして情報公開します なお 2009 年 2 月頃まで オンライン ショップ経営 を目指してた元プログラマである 今後は オンライン ショップ経営 ではなく 本格的に 電子書籍の普及 と ソフト制作知識の普及 を本業とするために 電脳プログラミング塾 を開講しました つまり 電子書籍シリーズこそ 元プログラマだった私 科学太郎 の新しい個人営業 ( 自営業 ) の晴れ舞台なのです ホームページ プログラミングのメモ帳 活動内容 インターネット上で 電脳プログラミング塾 という自営業で活動中です 元プログラマから フリーソフト制作塾 という位置づけでソフトウェアの技能 ( 技術能力 =ノウハウ ) を情報公開します 基本的な部分やプログラミング レッスンは無料版として ソフトウェアの製作方法のみ有料版とする方針です

ウィンドウ操作 応用

ウィンドウ操作 応用 Win32API 関数 ウィンドウ操作 ウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得 メモ帳や電卓等のウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得する方法を 下記に示す Visual Basic Imports System.Runtime.InteropServices Public Class WindowFromWindowName

More information

Microsoft PowerPoint - 講義資料-mlib

Microsoft PowerPoint - 講義資料-mlib 計測制御工学特論 B 電気電子工学専攻情報通信システム分野第 1 三輪 ー Windows ベース C プログラミングによる視覚化技術ー 講義形態 : 座学 & 実習 場所 :ATEC 2F PC 室 (PC 24 台 ) 講義目的 :Windows の Visual C をベースとしたグラフ化 データ処理 計測のための実践的プログラミングを習得する 講義内容 :Microsoft Visual C++

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体

More information

MISAO with WPF

MISAO with WPF MISAO with WPF JZ5 2009/2/7 自己紹介 JZ5( 松江祐輔 ) プログラマーですか? 違います Verilog 書いてます @jz5 Twitter katamari.jp katamari.wankuma.com Agenda ニコニコメソッド & Katamari.MISAO WPF プログラミング What s ニコニコメソッド 2007/4/25 ニコニコ動画勉強会

More information

Windows 10 はマイクロソフト社の OS(Operating System: 基本ソフト ) です OS は パソコンの本体とプリンター キーボード マウスなどのハードウェアを仲介します また Word Excel などのアプリの制御や ファイルの作成 削除などを階層的に管理します を使うと

Windows 10 はマイクロソフト社の OS(Operating System: 基本ソフト ) です OS は パソコンの本体とプリンター キーボード マウスなどのハードウェアを仲介します また Word Excel などのアプリの制御や ファイルの作成 削除などを階層的に管理します を使うと Windows の基本操作 学内 PC(Windows 10) 画面構成 パソコンの電源を入れ パスワード入力後に現れる画面を デスクトップ といいます 画面構成と役割を確認しましょう 本学では 学内の PC を使用する場合 ユーザー認証のための 学生証 (IC カード ) および パスワード が必要です ❶ アイコンアプリやフォルダー ファイルなどを画像で表したもの ダブルクリックすることで起動できる

More information

AquesTalk プログラミングガイド

AquesTalk プログラミングガイド AquesTalk プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2 種類があります 使用するアプリケーションに応じて選択してください

More information

プロセス間通信

プロセス間通信 プロセス間通信 プロセス間通信 (SendMessage) プロセス間通信とは 同一コンピューター上で起動して居るアプリケーション間でデータを受け渡し度い事は時々有る Framework には リモート処理 と謂う方法でデータの受け渡しを行なう方法が有る 此処では 此の方法では無く 従来の方法の API を使用したプロセス間通信を紹介する 此の方法は 送信側は API の SendMessage で送り

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

プログラミングI第10回

プログラミングI第10回 プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる

More information

ウィンドウ操作 詳細

ウィンドウ操作 詳細 Win32API 関数 ウィンドウ操作 目次 FindWindow 関数 3 指定された文字列と一致するクラス名とウィンドウ名を持つトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを返す 此の関数は 子ウィンドウは探さない 亦 検索では 大文字小文字は区別されない FindWindowEx 関数 3 指定された文字列と一致するクラス名とウィンドウ名文字列を持つウィンドウのハンドルを返す

More information

MOS_Windows8

MOS_Windows8 テキストの見方や Windows 8 がインストールされているパソコンで の環境設定 CD-ROM のセットアップなど 学習を進める際に知ってお くべき内容について確認します Windows 8 がインストールされている環境では 各テキストに収録されている模擬試験プログラムが正常に動作しない場合があります 本書の記載は 次のテキストを対象としています また テキスト名には次の略称を使用しています テキスト名

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラマー勉強会 1 回 basic.h 補足 [ 修飾子 ] const 付けた変数は初期化以外で値を設定することができなくなる 定数宣言に使う unsigned 付けた変数は符号がなくなり 正の値しか設定できない [ 条件コンパイル ] #ifdef M ここ以前に M がマクロとして定義されていれば ここ以下をコンパイルする #ifndef M ここ以前に M というマクロが定義されていなければ

More information

AquesTalk Win Manual

AquesTalk Win Manual AquesTalk Win マニュアル 株式会社アクエスト http://www.a-quest.com/ 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

ファクス送信用変換ソフト 操作説明書_UA

ファクス送信用変換ソフト 操作説明書_UA ファクス送信用変換ソフト操作説明書 ファクス送信用変換ソフトのインストールから操作までを説明します 本書では ファクス送信用変換ソフトを 本ソフト と表記している場合があります ファクス送信用変換ソフトについて...2 ファクス送信用変換ソフトをインストールする...3 ファクス送信用変換ソフトを再インストールする...5 ファクス送信用変換ソフトをアンインストールする...5 Windows 10

More information

情報システム設計論II ユーザインタフェース(1)

情報システム設計論II ユーザインタフェース(1) プログラミング演習 (5) 条件分岐 (2) 中村, 高橋 小林, 橋本 1 目標 Processing で当たり判定に挑戦! 条件分岐を理解する 何らかの条件を満たした時に色を変える! マウスカーソルと動いている円がぶつかったら終了 シューティングゲームやもぐらたたきに挑戦! 課題 : Processing でゲームを作ろう! 占いを作ってみよう フローチャートと条件分岐 プログラムの流れ 年齢確認

More information

<4D F736F F D20342E899E D2091E52D81848FAC82D682CC88F8897A2E646F6378>

<4D F736F F D20342E899E D2091E52D81848FAC82D682CC88F8897A2E646F6378> まるコピ marucopy 容量の大きい HDD から小さ い HDD への引越し方法 1 説明 ここでは 記憶容量の大きい HDD から小さい HDD への引越し手順を紹介します まるコピ は記憶容量が同じか より大きな HDD への引越しを支援する目的で製作しておりますが ここで紹介するフリーソフト GParted を使用すれば 記憶容量の小さい HDD への引越しも可能です なお このソフトウェアは

More information

建築業務管理システム 補足マニュアル Internet Explorer11 設定ガイド (Windows10 用 )

建築業務管理システム 補足マニュアル Internet Explorer11 設定ガイド (Windows10 用 ) 建築業務管理システム 補足マニュアル (Windows10 用 ) 目次 目次 はじめに 1 Internet Explorer11 とは? 1 1. 設定を行なう前にご確認ください 2 OS の確認方法 2 2. ブラウザの設定を行なう 3 Internet Explorer11 の起動方法について 3 アドレスバーの設定を行なう 5 SSL3.0 を無効化する 設定を行なう 8 Adobe Reader

More information

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - CproNt02.ppt [互換モード] 第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント

More information

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

More information

1 準備 1 ダウンロードした受験プログラムをダブルクリックします ファイル名の v の部分は変更される場合があります 2 セキュリティ警告のダイアログボックスが表示される場合は [ 実行 ] をクリックします オープニング画面が表示されます 3 [ 次へ ] をクリックします 試験の

1 準備 1 ダウンロードした受験プログラムをダブルクリックします ファイル名の v の部分は変更される場合があります 2 セキュリティ警告のダイアログボックスが表示される場合は [ 実行 ] をクリックします オープニング画面が表示されます 3 [ 次へ ] をクリックします 試験の サーティファイソフトウェア活用能力認定委員会 サンプル問題受験プログラムの使い方 (Office2010/2013 共通 ) Version 3.2.0.3 このプログラムは サーティファイソフトウェア活用能力認定委員会主催のExcel Word Access PowerPointの各認定試験の受験を体験していただくためのものです プログラムを使用する前に この内容を確認し認定試験の流れを理解した上で

More information

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL: マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL: http://excel2010.kokodane.com/excel2010macro_01.htm http://span.jp/office2010_manual/excel_vba/basic/start-quit.html Excel2010 でマクロを有効にする

More information

SnNCutCnvs 内蔵のラインストーン模様を使いましょう [ ステップ ] 編集画面にある模様テンプレートから模様を選びます 模様リストから [ ラインストーン ] カテゴリーを選択します 模様リストが表示されます 希望の模様を選んで 編集領域へドラッグします 一覧から模様アイコンをクリックする

SnNCutCnvs 内蔵のラインストーン模様を使いましょう [ ステップ ] 編集画面にある模様テンプレートから模様を選びます 模様リストから [ ラインストーン ] カテゴリーを選択します 模様リストが表示されます 希望の模様を選んで 編集領域へドラッグします 一覧から模様アイコンをクリックする SnNCutCnvs ラインストーン機能の使い方 カッティングマシンを使用して ラインストーンを使った華やかな飾りを作ることができます SnNCutCnvs の基本的な操作については ヘルプを参照してください ヘルプを表示させるには 画面上部のます をクリックし ラインストーン機能は 認証後に使用できます 詳しい内容は ラインストーンスターターキットの取扱説明書をご覧ください 2 つのラインストーン機能から

More information

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - lec10.ppt 今日の内容, とポインタの組み合わせ, 例題 1. 住所録例題 2. と関数とは. を扱う関数. 例題 3. のリスト とポインタの組み合わせ 今日の到達目標 自分で を定義する 自分で定義したについて, 配列やポインタを作成する データ型 基本データ型 char 文字 (1 文字 ) int 整数 double 浮動小数など その他のデータ型配列 データの並び ( 文字列も, 文字の並び ) ポインタ

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

Microsoft Word - インストールマニュアルSBS XP SP1第1版 doc

Microsoft Word - インストールマニュアルSBS XP SP1第1版 doc spaaqs 光セキュリティベーシック powered by Symantec Windows XP Service Pack 2 版インストールマニュアル 第 2 版 2010 年 9 月 7 日 1 目次 1. ご利用の前に P. 3 2. 申し込みから利用開始までの流れ P. 4 3. お申し込み ダウンロード P. 5 4. インストール P. 9 5. アクティブ化 P.13 6. Live

More information

Windows8.1基礎 ファイル管理

Windows8.1基礎 ファイル管理 OA ベーシック Windows8.1 基礎ファイル管理 1 / 8 Windows8.1 基礎ファイル管理 ファイル管理前編 ファイルとフォルダーの概要 ファイル Excel や Word などのアプリで作成したデータを ファイル といいます ファイルは 作成元のアプリの種類により Word では 文書 Excel では ブック PowerPoint では プレゼンテーション と呼ばれています ファイルの種類はアイコンのデザインで確認できます

More information

AquesTalk for WinCE プログラミングガイド

AquesTalk for WinCE プログラミングガイド AquesTalk for WinCE プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk for WinCE ( 以下 AquesTalk) をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと

More information

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - chap10_OOP.ppt プログラミング講義 Chapter 10: オブジェクト指向プログラミング (Object-Oriented Programming=OOP) の入り口の入り口の入り口 秋山英三 F1027 1 例 : 部屋のデータを扱う // Test.java の内容 public class Test { public static void main(string[] args) { double length1,

More information

TFTP serverの実装

TFTP serverの実装 TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった

More information

JavaScript プログラミング 4.Web ブラウザのオブジェクト 4-4 window オブジェクト 4-5 location オブジェクトと history オブジェクト 4-6 link オブジェクト 08T4082A 野太樹

JavaScript プログラミング 4.Web ブラウザのオブジェクト 4-4 window オブジェクト 4-5 location オブジェクトと history オブジェクト 4-6 link オブジェクト 08T4082A 野太樹 JavaScript プログラミング 4.Web ブラウザのオブジェクト 4-4 window オブジェクト 4-5 location オブジェクトと history オブジェクト 4-6 link オブジェクト 08T4082A 野太樹 4-4 window オブジェクト window オブジェクト Webブラウザのウィンドウを管理するオブジェクト Webブラウザで開いた段階で 動的に 成 新規のwindowオブジェクトを作成することができる

More information

目次 1. デジタル押し花の作り方 3 2. デジタル押し花をきれいに仕上げる方法 まとめ 課題にチャレンジ 19 レッスン内容 デジタル押し花 マイクロソフト社のワープロソフト Word 2010( これ以降 Word と記述します ) の図ツールに搭載されている [ 背景

目次 1. デジタル押し花の作り方 3 2. デジタル押し花をきれいに仕上げる方法 まとめ 課題にチャレンジ 19 レッスン内容 デジタル押し花 マイクロソフト社のワープロソフト Word 2010( これ以降 Word と記述します ) の図ツールに搭載されている [ 背景 le Word で楽しむデジタル押し花 Sa mp Word の画像加工 1 本テキストの作成環境は 次のとおりです Windows 7 Home Premium Microsoft Word 2010 画面の設定 解像度 1024 768 ピクセル 本テキストは 次の環境でも利用可能です Windows 7 Home Premium 以外のオペレーティングシステムで Microsoft Word

More information

PowerPoint Template

PowerPoint Template プログラミング演習 Ⅲ Linked List P. Ravindra S. De Silva e-mail: [email protected], Room F-413 URL: www.icd.cs.tut.ac.jp/~ravi/prog3/index_j.html 連結リストとは? 一つひとつの要素がその前後の要素との参照関係をもつデータ構造 A B C D 連結リストを使用する利点 - 通常の配列はサイズが固定されている

More information

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for ARM Lite 4.2.0 で作成した STM32F4 Discovery 基板用のプロジェクトです

More information

BBB_マニュアル(聴講者用)

BBB_マニュアル(聴講者用) BigBlueButton 操作マニュアル < 聴講者用 > 目次 はじめに 01 画面構成 02 機能説明 1. ログイン 03 2. カメラとマイクの設定 04 3. 日本語切替 08 4. ユーザーの管理 09 5. ビデオの共有 11 6. ビデオの公開 17 7. プレゼンテーション 19 8. デスクトップの共有 28 9. チャット 35 10. リスナーの管理 39 11. レイアウトのリセット

More information

3. 文字の入力 文字 ボタンをクリックします 文字入力したい範囲をドラックし 文字枠を作成します 文字を入力します この作業を繰り返します マウスポインタの形 4. 文字枠のサイズ変更 拡大 ボタンをクリックします 大きさを変えたい文字枠をクリックします マウスポインタを文字枠の右下のハンドル (

3. 文字の入力 文字 ボタンをクリックします 文字入力したい範囲をドラックし 文字枠を作成します 文字を入力します この作業を繰り返します マウスポインタの形 4. 文字枠のサイズ変更 拡大 ボタンをクリックします 大きさを変えたい文字枠をクリックします マウスポインタを文字枠の右下のハンドル ( 1. あてうち名人を起動します 2. 原稿の読み込みスキャナに原稿をセットします スキャナ ボタンをクリックします スキャナ実行 ダイアログボックスが表示されます 解像度 (XDPI,YDPI) を必要にあわせ修正します 読取モードを必要にあわせ変更します 原稿サイズ 用紙サイズを確認します 開始 ボタンをクリックします 解像度についてあてうちが目的であれば 100 程度にしてください 原稿をコピーしたい場合はプリンタに合わせ300

More information

CubePDF ユーザーズマニュアル

CubePDF ユーザーズマニュアル CubePDF ユーザーズマニュアル 2018.11.22 第 13 版 1 1. PDF への変換手順 CubePDF は仮想プリンターとしてインストールされます そのため Web ブラウザや Microsoft Word, Excel, PowerPoint など印刷ボタンのあるアプリケーションであればどれでも 次の 3 ステップで PDF へ変換することができます 1. PDF 化したいものを適当なアプリケーションで表示し

More information

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ 第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイルの作成方法 コンパイル方法について説明します IDL ファイルの作成にあたっては INTERSTAGE

More information

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ InstallScript サンプル 注 ) このドキュメントは InstallShield 2015 Premier Edition を基に作成しています InstallShield 2015 以外のバージョンでは設定名などが異なる場合もあります 概要 InstallShield では InstallShield 独自のプログラム言語 InstallScript を利用して 動作をカスタマイズすることができます

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 授業ガイダンス C 言語の概要プログラム作成 実行方法 授業内容について 授業目的 C 言語によるプログラミングの基礎を学ぶこと 学習内容 C 言語の基礎的な文法 入出力, 変数, 演算, 条件分岐, 繰り返し, 配列,( 関数 ) C 言語による簡単な計算処理プログラムの開発 到達目標 C 言語の基礎的な文法を理解する 簡単な計算処理プログラムを作成できるようにする 授業ガイダンス

More information

SILAND.JP テンプレート集

SILAND.JP テンプレート集 SILAND.JP のテンプレートを使った操作マニュアルの作成方法について スタイルの設定を使った文書作成 第 1 版 作成者しら 作成日 2014 年 2 月 21 日 最終更新日 2014 年 2 月 21 日 1 / 15 ダウンロードはこちら http://siland.jp/ 目次 SILAND.JP のテンプレートを使った操作マニュアルの作成方法について... 1 目次... 2 テンプレートのダウンロードについて...

More information

目次 第 1 章はじめに 取扱いについて 記載内容について... 6 第 2 章基本操作 Excel Online を開く ファイル ( ブック ) を作成する ファイル ( ブック ) を開く..

目次 第 1 章はじめに 取扱いについて 記載内容について... 6 第 2 章基本操作 Excel Online を開く ファイル ( ブック ) を作成する ファイル ( ブック ) を開く.. Office 365 Excel Online - 利用マニュアル - 発行日 2015/11/01 1 目次 第 1 章はじめに... 5 1.1. 取扱いについて... 6 1.2. 記載内容について... 6 第 2 章基本操作... 7 2.1. Excel Online を開く... 8 2.2. ファイル ( ブック ) を作成する... 10 2.3. ファイル ( ブック ) を開く...

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None クイック検索検索 目次 Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 None 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

Microsoft Word - WebMail.docx

Microsoft Word - WebMail.docx 生涯メールの利用について 2015.4.1 1. はじめに生涯メールは 2015 年 4 月より Microsoft Office365 というクラウドサービスの運用に変更しました これは 東海大学のメールサービスの切り替えに伴う変更で 東海大学では 東海大学コミュニケーション & コラボレーションシステム ( 略して T365) と呼んでいます 従来は転送サービスのみとなっていましたが メールボックスを持ち

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

Microsoft Word - CygwinでPython.docx

Microsoft Word - CygwinでPython.docx Cygwin でプログラミング 2018/4/9 千葉 数値計算は計算プログラムを書いて行うわけですが プログラムには様々な 言語 があるので そのうちどれかを選択する必要があります プログラム言語には 人間が書いたプログラムを一度計算機用に翻訳したのち計算を実行するものと 人間が書いたプログラムを計算機が読んでそのまま実行するものとがあります ( 若干不正確な説明ですが ) 前者を システム言語

More information

Microsoft Word - ラベルマイティStep1.doc

Microsoft Word - ラベルマイティStep1.doc ラベルマイティ STEP 1 はじめに 1 レッスン 1 ラベルマイティでできること 3 1 ラベルマイティでできること 3 レッスン2 ラベルマイティの概要 4 1 ラベルマイティの起動 4 2 ガイドメニュー 7 3 画面構成 11 4 ラベルマイティの終了 14 第 1 章プリントアイテムを作ってみよう 1 レッスン1 テンプレートを選ぼう 3 1 のし紙 3 レッスン1のまとめ 4 レッスン2

More information

平成 30 年 5 月 国民健康保険中央会

平成 30 年 5 月 国民健康保険中央会 平成 30 年 5 月 国民健康保険中央会 改版履歴 版数 改訂日 該当頁 / 該当項目 改訂の要点 4.2.0 2017/11/20 3 対応 OSの変更に伴う修正 動作環境 の OS に以下を追加 Windows10 Enterprise (64Bit) LTSB( バージョン :1607) 動作環境 の OS から以下を削除 Windows Vista Business (32Bit) ServicePack2

More information

PE4 Training Text 2

PE4 Training Text 2 Corel Painter Essentials 4 基本操作をマスターしよう Corel Painter Essentials 4 を起動 Corel Painter Essentials 4 の起動デスクトップの Corel Painter Essentials 4 のアイコンをダブルクリックして起動します もし見つからなかった場合 スタート メニューの すべてのプラグラム より Corel Painter

More information

Windows10の標準機能だけでデータを完全バックアップする方法 | 【ぱそちき】パソコン初心者に教えたい仕事に役立つPC知識

Windows10の標準機能だけでデータを完全バックアップする方法 | 【ぱそちき】パソコン初心者に教えたい仕事に役立つPC知識 ぱそちき パソコン初心者に教えたい仕事に役立つ PC 知識 Windows10 の標準機能だけでデータを完全バックアッ プする方法 パソコンが急に動かなくなったり 壊れてしまうとパソコンに保存していたテキストや写真などの データも無くなってしまいます このように思いがけない事故からデータを守るには バックアップを取っておくしかありません Windows10のパソコンを使っているなら データをバックアップするのに特別なソフトは必要ありません

More information

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シートのズームを 100% に設定するとよいです 2 道路を描く 次ページから説明書きがありますのでよく読んで操作してください

More information

C#の基本

C#の基本 C# の基本 ~ 開発環境の使い方 ~ C# とは プログラミング言語のひとつであり C C++ Java 等に並ぶ代表的な言語の一つである 容易に GUI( グラフィックやボタンとの連携ができる ) プログラミングが可能である メモリ管理等の煩雑な操作が必要なく 比較的初心者向きの言語である C# の利点 C C++ に比べて メモリ管理が必要ない GUIが作りやすい Javaに比べて コードの制限が少ない

More information