by 高信期 » 2006年3月03日(金) 23:27
亀レスですが、
>ボタン1を押した後に文字をEditに入れボタン2を押してもSS_CENTERが反映されません。
コントロールのスタイルを動的に変更したときは、InvalidateRect関数を使ってコントロールを再描写する必要があります。
また、SS_LEFT, SS_CENTER, SS_RIGHT は互いに排他です。
以上をまとめて,MainWnd_CommandButton1_Clickイベントを以下のように変更すると意図したとおりに動きます。
コード: 全て選択
Sub MainWnd_CommandButton1_Click()
Dim Style As LONG_PTR
Style = GetWindowLong(GetDlgItem(hMainWnd,Static1), GWL_STYLE) And &HFFFFFFFC
SetWindowLong(GetDlgItem(hMainWnd,Static1), GWL_STYLE, Style Or SS_CENTER)
InvalidateRect(GetDlgItem(hMainWnd,Static1), ByVal NULL, 1)
End Sub
亀レスですが、
>ボタン1を押した後に文字をEditに入れボタン2を押してもSS_CENTERが反映されません。
コントロールのスタイルを動的に変更したときは、InvalidateRect関数を使ってコントロールを再描写する必要があります。
また、SS_LEFT, SS_CENTER, SS_RIGHT は互いに排他です。
以上をまとめて,MainWnd_CommandButton1_Clickイベントを以下のように変更すると意図したとおりに動きます。
[code]Sub MainWnd_CommandButton1_Click()
Dim Style As LONG_PTR
Style = GetWindowLong(GetDlgItem(hMainWnd,Static1), GWL_STYLE) And &HFFFFFFFC
SetWindowLong(GetDlgItem(hMainWnd,Static1), GWL_STYLE, Style Or SS_CENTER)
InvalidateRect(GetDlgItem(hMainWnd,Static1), ByVal NULL, 1)
End Sub[/code]