Visual Studio 2012のMFCを使用している者です。
ダイアログクラスのメンバ関数内で、SetWindowTextを実行したところ、Debug
Assertion Failed! が発生しました。
このエラーのダイアログの再試行ボタンを押すと、winocc.cppというファイルの246行目
でブレークポイントが発生したというメッセージが出ます。
どうすれば、タイトルバーの文字列を変えることができますか?
解決しました。
どうやら、OnCreateが実行される前に変更をかけたのがまずかったようです。
OnCreate内を、下記のようにすることで、エラーなくタイトルを変えることが
できました。
int CXXXX::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: ここに特定な作成コードを追加してください。
SetWindowText(_T(変更後の文字列));
return 0;
}
解決しちゃってますが・・・
一般にCDialogクラスのOnCreate()はオーバーライドすべきではありません。
ダイアログの初期化は当該のDLGのOnInitDialog()内で、
かつ派生元の処理であるCDialog::OnInitDialog()を
実行した後、各コントロールの初期化、設定を行います。
MFCの場合は特にSDKのWM_INITDIALOGタイミングではなく、
フレームワークの事情により呼び出されます。
OnInitDialog()以降でないと、DoDataExchange()を
通過していない可能性があり、メンバコントロールが
初期化されていない可能性があり、危険だと考えられます。