牛、豚、鶏、どれか一つ食べられなくなるとしたら?

VC++2008 MFCで開発を行っています。

ダイアログに、マルチラインでなくかつ改行を受け付けないエディットを配置しています。
このエディットのエディットスタイルを条件に合わせてマルチライン、改行受付にしたいのですが、
反映されません。実現方法のご教示をお願い致します。

現状の私は以下のコードを、OnInitDialog()内に書いています。

SetWindowLong(GetDlgItem(IDC_EDIT1)->GetSafeHwnd(), GWL_STYLE, WS_CHILD | WS_VISIBLE | ES_WANTRETURN | ES_MULTILINE);

ちなみにWS_VISIBLEやWS_CHILD の有り無しは反映されます。
反映されないというのは、入力中にエンターキーを押した直後にダイアログが閉じられることから判断しています。

A 回答 (2件)

> プログラム中でダイアログ上のコントロールを削除して同じIDで作り直すなん


> てことはできませんよね?

できると思いますが。

この回答への補足

できるのですか!
ありがとうございます。諦めずに済みそうです。
では削除して作り直す形にすれば実現できますね。
今からやり方を調べてきます。

補足日時:2011/07/25 22:52
    • good
    • 0
この回答へのお礼

DestroyWindow関数の後にCreateWindow関数を書けば単純にできましたね。
CDialog::OnInitDialog()より前に書かないとエラーになるようですが。
ともかく目的は達成できました。ありがとうございます。

お礼日時:2011/07/27 11:37

確か、エディットコントロールの「単一行/複数行」や「左揃え/中央揃え/右揃え」といった設定は、コントロール作成時のみ有効で、後から変更しても反映されないはずです。

    • good
    • 0
この回答へのお礼

そ、そんな…!

そうだったんですか。
では複数行に至っては、私の目的が叶わないということですね。
プログラム中でダイアログ上のコントロールを削除して同じIDで作り直すなんてことはできませんよね?

代替策を探してみます。
ありがとうございました。

お礼日時:2011/07/25 21:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています