コントロールの状態を知るには?

解決


gari  2004-10-27 00:50:23  No: 54891  IP: [192.*.*.*]

いつもお世話になっております。

MFCにてReadOnlyやEnableの設定は、それぞれ
m_Edit.SetReadOnly(TRUE)、
m_Button.EnableWindow()
を使えばできますが、コントロールの状態を知るにはどうしたらよいのか
分かりません。

例えば、Editコントロールが今ReadOnly = TRUEとか
ボタンがEnable = FALSEとかです。

VBで言うところの、
If TextBox.ReadOnly = True Then

    処理

End If

とか、

If Button.Enabled = True Then

    処理

End If

みたいなことがやりたいのですが。

もしかしたらとんでもなく単純なことなのかもしれませんが分かりません。
どなたかご教授いただけたら幸いです。

編集    削除
てつや  2004-10-27 01:38:53  No: 54892  IP: [192.*.*.*]

CWnd::EnableWindowの状態を知るのは、CWnd::IsWindowEnabledです。
CEdit::SetReadOnlyの状態を知るのは、

#現在の設定状態は、CWnd::GetStyle 関数の戻り値の ES_READONLY フラグで
#知ることができます。

とMSDNに書いてあります。

編集    削除
gari  2004-10-27 23:30:54  No: 54893  IP: [192.*.*.*]

Enableの件は解決できました。

ReadOnlyの方は、msdnでの文章の意味がよく分かりませんでした。

if (CEdit.GetStyle() == ES_READONLY)

ではないんですよね?

だから、意味が分からないのですが…

編集    削除
YuO  2004-10-27 23:40:17  No: 54894  IP: [192.*.*.*]

スタイルはビットフラグですから,論理積をとってしらべることになります。

編集    削除
てつや  2004-10-27 23:57:48  No: 54895  IP: [192.*.*.*]

>if (CEdit.GetStyle() == ES_READONLY)
>
>ではないんですよね?

if (CEdit.GetStyle() & ES_READONLY )

Cの入門書を入手して、ビット演算(もしくはビット処理演算)の項目を
読んでみましょう。

編集    削除
gari  2004-10-28 02:11:41  No: 54896  IP: [192.*.*.*]

ありがとうございます解決しました。

編集    削除