拡張ウインドウ・スタイルの変更関数は次の手順で行います。(戻る)
- 拡張ウインドウ・スタイルの取得(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 funcModifyStyleEx( HWND hWnd, UINT uID, LONG lReset, LONG lSet ) { LONG lExStyle; if ( uID != 0 ){ hWnd = GetDlgItem( hWnd, uID ); } lExStyle = GetWindowLong( hWnd, GWL_EXSTYLE ); lExStyle &= ~lReset; lExStyle |= lSet; lExStyle = SetWindowLong( hWnd, GWL_EXSTYLE, lExStyle ); SetWindowPos( hWnd, NULL, 0, 0, 0, 0, (SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED) ); }
使い方
// WS_EX_STATICEDGE属性→WS_EX_CLIENTEDGE属性 funcModifyStyleEx( hWnd, SID_TEXT01, WS_EX_STATICEDGE, WS_EX_CLIENTEDGE ); // WS_EX_CLIENTEDGE属性→WS_EX_STATICEDGE属性 funcModifyStyleEx( hWnd, SID_TEXT01, WS_EX_CLIENTEDGE, WS_EX_STATICEDGE );
- hWnd が対象のウインドウ・ハンドルです。
- uID がコントロールのIDですが、ウインドウを操作する時には uID=0 にして操作します。
- 上記の使い方では WS_EX_STATICEDGE 属性の代わりに WS_EX_CLIENTEDGE 属性に変更してます。
関連記事
- ウインドウの表示/非表示
- ウインドウの有効化/無効化
- ウインドウの最大化/最小化/元に戻す(1)
- ウインドウの最大化/最小化/元に戻す(2)
- ウインドウの最大化/最小化/元に戻す(3)
- ウインドウの最大化/最小化の状態
- ウインドウの最前面表示の設定/解除
- ウインドウ・スタイルの動的変更
- ウインドウ・スタイルの変更関数
- 拡張ウインドウ・スタイルの変更関数
※コメント投稿者のブログIDはブログ作成者のみに通知されます