ウインドウ・スタイルを動的に変更するには次の手順で行います。(戻る)
- ウインドウ・スタイルの取得(GetWindowLong)
- スタイル・データのビットを動的に変更(AND,OR)
- ウインドウ・スタイルの設定(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 // ウインドウ位置のオプション );
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) );
- hWnd が対象のウインドウ・ハンドルです。
- 上記のサンプルでは WS_THICKFRAME 属性を設定したり、解除したりしてます。
- 拡張ウインドウ・スタイルでは GWL_STYLE の代わりに GWL_EXSTYLE を指定します。
関連記事
- ウインドウの表示/非表示
- ウインドウの有効化/無効化
- ウインドウの最大化/最小化/元に戻す(1)
- ウインドウの最大化/最小化/元に戻す(2)
- ウインドウの最大化/最小化/元に戻す(3)
- ウインドウの最大化/最小化の状態
- ウインドウの最前面表示の設定/解除
- ウインドウ・スタイルの動的変更
- ウインドウ・スタイルの変更関数
- 拡張ウインドウ・スタイルの変更関数
※コメント投稿者のブログIDはブログ作成者のみに通知されます