ウインドウ・スタイルの変更関数は次の手順で行います。(戻る)
- ウインドウ・スタイルの取得(GetWindowLong)
- ウインドウ・スタイルのリセット(lReset)
- ウインドウ・スタイルのセット(lSet)
- ウインドウ・スタイルの設定(SetWindowLong)
- ウインドウ・スタイルの反映(SetWindowPos)
SetWindowLong 関数でウインドウ・スタイルを設定しただけでは反映しません。
反映させるには必ず SetWindowPos 関数を実行して下さい。
プロトタイプ宣言
LONG GetWindowLong( HWND hWnd, // ウインドウのハンドル int nIndex // 取得するデータ値のインデックス ); LONG SetWindowLong( HWND hWnd, // ウインドウのハンドル int nIndex, // 設定するデータ値のインデックス LONG dwNewLong // 新しい値 ); BOOL SetWindowPos( HWND hWnd, // ウインドウのハンドル HWND hWndInsertAfter, // 配置順序のハンドル int X, // 横方向の位置 int Y, // 縦方向の位置 int cx, // 幅 int cy, // 高さ UINT uFlags // ウインドウ位置のオプション );
サンプル
// ウインドウ・スタイルの変更 VOID funcModifyStyle( HWND hWnd, UINT uID, LONG lReset, LONG lSet ) { LONG lStyle; if ( uID != 0 ){ hWnd = GetDlgItem( hWnd, uID ); } lStyle = GetWindowLong( hWnd, GWL_STYLE ); lStyle &= ~lReset; lStyle |= lSet; lStyle = SetWindowLong( hWnd, GWL_STYLE, lStyle ); SetWindowPos( hWnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); }
使い方
// WS_THICKFRAME属性の設定 funcModifyStyle( hWnd, 0, 0, WS_THICKFRAME ); // WS_THICKFRAME属性の解除 funcModifyStyle( hWnd, 0, WS_THICKFRAME, 0 );
- hWnd が対象のウインドウ・ハンドルです。
- uID がコントロールのIDですが、ウインドウを操作する時には uID=0 にして操作します。
- 上記の使い方では WS_THICKFRAME 属性を設定したり、解除したりしてます。
関連記事
- ウインドウの表示/非表示
- ウインドウの有効化/無効化
- ウインドウの最大化/最小化/元に戻す(1)
- ウインドウの最大化/最小化/元に戻す(2)
- ウインドウの最大化/最小化/元に戻す(3)
- ウインドウの最大化/最小化の状態
- ウインドウの最前面表示の設定/解除
- ウインドウ・スタイルの動的変更
- ウインドウ・スタイルの変更関数
- 拡張ウインドウ・スタイルの変更関数
※コメント投稿者のブログIDはブログ作成者のみに通知されます