• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:リッチテキストを利用した文字列の画面表示、コントロール変数のアドレス割り当てについて)

リッチテキストを利用した文字列の画面表示、コントロール変数のアドレス割り当てについて

このQ&Aのポイント
  • 現在、リッチテキストを利用し、文字列を画面に行ごとに挿入、任意の行に対し背景色をつける処理を構築しようとしていますが、うまくいきません。
  • CHARFORMAT2構造体を利用し、コントロール変数に対して背景色を変更しようとするとエラーが起こります。
  • コントロール変数に対してアドレスが割り当てられておらず、参照元がないという状態です。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

その子ダイアログにOnInitDialogメンバー関数は実装されていますか? ここで CDialog::OnInitDialog() を呼び出してダイアログの初期化を行うはずです その際に DoDataExcahngeが呼ばれてメンバー変数とコントロールを結びつけるはずです void OCRGetPr::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_RICHEDIT22, richEdit1); の CDialog::DoDataExchange(pDX); にブレークポイントを置いて実行し このダイアログを表示した際に F10キーで DDX_Control(pDX, IDC_RICHEDIT22, richEditCtrl); になるまで送り F11でDDX_Controlの中をチャックして見ましょう

yukke33
質問者

お礼

重ね重ねありがとうございました。 ご指摘頂いた箇所にて、間違いを発見することができました。 エラーが起きた原因は、OnInitDialog()が呼び出され、ダイアログが作成される前にコントロール変数に値を代入していたために、参照する実体がない、というものでした。 ひとりで考えていたらもう1,2日は悩むところでした。 ありがとうございました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

同じようなコードで実験してみましたがご質問のような現象は起きません エラー表示って Debug Assaertion ですか? 表示されるメッセージがあるならそれを省略せずに投稿してみましょう MFCのウィザードでDialogベースでアプリを構築 DLGにRichEdit2.0を2個挿入 コントロール変数、CString変数を追加 InitInstanceの冒頭で AfxInitRitchEdit() を実行 コマンドボタンを追加 これのClickイベントで ご質問のようなコードを実行 といった手順です

yukke33
質問者

補足

ご回答ありがとうございます。 大変失礼致しました。 お察しのとおり、エラーは Debug Assaertion でした。 また、エラーが起きる箇所は前述の通りでしたが、 エラーのさらに具体的な位置は、wincore.cpp内の、hWnd?のようです。 また、説明不足で大変申し訳ありません。 今回作成しているものは、親ダイアログからボタンを押すと、子ダイアログに遷移する仕様となっていて、今回お見せしたコードは子ダイアログのコードになります。 作成方法は、リソースタグでDialog→リソースの追加にてダイアログを選択しております。