SetWindowTextが効かない – プログラミング – Home

通知
すべてクリア

[解決済] SetWindowTextが効かない


鼻息
 鼻息
(@鼻息)
ゲスト
結合: 11年前
投稿: 2
Topic starter  

Visual Studio 2012のMFCを使用している者です。

ダイアログクラスのメンバ関数内で、SetWindowTextを実行したところ、Debug
Assertion Failed! が発生しました。

このエラーのダイアログの再試行ボタンを押すと、winocc.cppというファイルの246行目
でブレークポイントが発生したというメッセージが出ます。

どうすれば、タイトルバーの文字列を変えることができますか?


引用未解決
トピックタグ
鼻息
 鼻息
(@鼻息)
ゲスト
結合: 11年前
投稿: 2
Topic starter  

解決しました。

どうやら、OnCreateが実行される前に変更をかけたのがまずかったようです。

OnCreate内を、下記のようにすることで、エラーなくタイトルを変えることが

できました。

int CXXXX::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CDialog::OnCreate(lpCreateStruct) == -1)

return -1;

// TODO: ここに特定な作成コードを追加してください。

SetWindowText(_T(変更後の文字列));

return 0;

}


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

解決しちゃってますが・・・
一般にCDialogクラスのOnCreate()はオーバーライドすべきではありません。

ダイアログの初期化は当該のDLGのOnInitDialog()内で、
かつ派生元の処理であるCDialog::OnInitDialog()を
実行した後、各コントロールの初期化、設定を行います。

MFCの場合は特にSDKのWM_INITDIALOGタイミングではなく、
フレームワークの事情により呼び出されます。
OnInitDialog()以降でないと、DoDataExchange()を
通過していない可能性があり、メンバコントロールが
初期化されていない可能性があり、危険だと考えられます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました