• ベストアンサー

RichEdit

メーラーを作っています。 今までは、 CEdit を使って文字を表示していたのですが、 いろいろあって、 リッチエディットコントロールに変えようと思っていますが、特に注意する点などがあれば 教えてください。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

RichEdit は、3種類ほどのバージョンがあり、マイナーバージョンによっても、挙動が異なります。 大雑把な部分では互換性がありますが、行間のコントロールなど細かなことを行う場合、思い通りに動作さしない場合があります。

uyama33
質問者

お礼

CEdit を、 CRichEditCtrl に変えてコンパイルしたら とりあえず動いています。 少しずつ修正します。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メーラー作成

     この、教えてグーで、 いろいろ教えていただきながら、 メーラーを作っています。  いまは、テキストだけを受け取って 表示するつもりで、受信したメールを 表示するのに、CEdit を使っています。  リッチエディットコントロールを 使ったらもっと便利かとも思うのですが、 はっきりしません。  また、URLの記入された部分の扱い方が 分かりません。  次の2点に関して、 アドバイスをお願いいたします。 1.リッチエディットコントロールを使うと効果があるの   か? 2.URL が記入された部分の扱い方について、   参考になる本や、ホームページ 以上、よろしくお願いいたします。  開発は、マイクロソフトのVC++ 6.0 を使っています。

  • visualC++での文法

    VisualC++を勉強しているのですがどうしても分からないので教えてください。例えばダイアログベースでのMFCプロジェクト test を作り、コントロールにプッシュボタンとエディットボックスを配置し、プッシュボタンのイベントハンドラに void CtestDlg::OnBnClickedButton1() { CEdit* Settext =(CEdit*)GetDlgItem(IDC_EDIT1); Settext -> SetWindowText("OKWEB"); } とすれば、プッシュボタンを押したときにエディットボックスにOKWEBと表示されますよね。 この場合のCEdit* Settext =(CEdit*)GetDlgItem(IDC_EDIT1); の(CEdit*)は何なのでしょうか?最初のCEdit* はSettextがCEdit*クラスを示すポインタになるのは理解できるのですが、(CEdit*)はオブジェクトでそれがGetDlgItemを使っているのでしょうか。それならば、(CEdit*).GetDlgItem(IDC_EDIT1) じゃないのでしょうか?それとも(CEdit*)はキャストか何かなのでしょうか? C++の勉強が足りないのは分かってるのですが、VisualC++の勉強と同時進行なのでどうも混乱しています。詳しい方どうかお願いします。

  • エディットボックスをEnableWindowを使って無効にしたい

    エディットボックスをEnableWindowを使って無効にしたいときにボックスのメンバ変数のカテゴリを値にしてタイプをdouble のままで、使う方法はないのでしょうか?コントロール、Ceditなら使えるのですが・・・ 教えてください。よろしくお願いします。

  • エディットコントロールへの文字の出力について

    エディットコントロールへの文字の出力について ボタンコントロールを押すとそのイベントをつかんでエディットコントロールに、ある計算処理の結果を表示するプログラムをWINDOWSプログラミングで書いているのですが、ボタンを押すたびにエディットコントロールに書かれている内容が書き換わってしまいます。ボタンを押すたびにエディットコントロールに文字が追記されていくようにしたいのですが、分かる方どうか教えてください。 ちなみに現在はSetWindowText関数を使い出力している状態です。

  • MFCのエディットボックス上書きモードの解除

    MFCのエディットボックスにスピンを連動させ、 数値を表示すると添付のように上書きモードになってしまいます(青) 解除するにはCEdit のメンバのどれを設定すればいいでしょうか

  • GetWindowTextの使い方

    PocketPC2003を使ってアプリを使っているのですが エディットボックスに入力された文字列を 取得する方法が分からず困っております。 エディットボックスに対して、classwizardで CEdit型のm_zip変数を作成しました。 そこで、 CString buf; m_zip.GetWindowText(cs_buf); という所までは分かったのですが、これを char型の文字列にコピーしたいのですがどうすれば よいのでしょうか?。 開発環境は、 eMbedded Visual C++ 4.0です。

  • Formにエディットボックスを貼りたい

    環境はWIN98 VC++6.0 MFC SDIです。 クラスウィザードのデフォルトでSDIを作ります。 但し、6/6ページの基本クラスはCFormViewにします。 このForm上にプログラム上からエディットボックスを貼りつけるために、以下のようにしましたが、エディットボックスらしき白い四角は出来ましたが文字の入力が出来ません。 どうすればよいのでしょうか? static contID = 4000; ///////////////////////////////////////////////// int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { 略   CRect rect;   // CTestWndの上にCEditを貼り付ける   rect.top = 30;   rect.left = 30;   rect.bottom = 100;   rect.right = 100;   CEdit* edit = new CEdit();      if( edit->Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP,   rect,   this,   contID++ ) != TRUE ){     throw new CException();   }   return 0; }

  • エディットボックスのテキストが表示されないのはなぜですか

    VC++初心者です。 以下のソースでエディットボックスのテキストが表示されません。というか、最後のループの時のみ表示されますが、一回一回表示するにはどうしたらいいでしょうか? void CCRPTC_accessDlg::OnBnClickedOk() {  int i;  CEdit* myEdit1 = (CEdit*)GetDlgItem(IDC_EDIT1);    ・    ・    ・  for (i=1;i<10;i++){   if (Ret != SUCCESS)   {    myEdit1->SetWindowText("NG!");   }   else   {    myEdit1->SetWindowText("OK!");   }  } }

  • MFC:リッチエディットからUnicode文字列を受け取りたい

    MFCのダイアログベースでプロジェクトを作成 ↓ プロジェクトのプロパティで「マルチバイト文字セットを使用する」を「Unicode文字セットを使用する」に変更 ↓ エディットボックスとリッチエディット2.0を適当に配置 ↓ エディットボックスとリッチエディット2.0それぞれにコントロール変数を追加 ↓ InitInstance()内に AfxInitRichEdit2(); を追加 ↓ あとは適当なところでエディットボックスとリッチエディット2.0それぞれにGetWindowText関数を使って、記入内容を取得します。     すると、エディットボックスではUnicodeの文字を入れても文字化けしないのに対し、リッチエディット2.0では文字化けしてしまいます。 例えば“Å”の半角文字を(Unicode紹介サイトからコピペする等して)入力すると、エディットボックスではそのまま“Å”なのに、リッチエディット2.0では“A”になります。   ※入力している段階では“Å”と表示されています。GetWindowText関数で取得すると“A”になってしまいます。     リッチエディット2.0からUnicode文字を正常に受け取れる方法はありませんでしょうか。

  • ちょっと質問を変えてみました。

    以前にテキストエディタを作成して、問題が発生したと質問をしたものですが、内容を少し変えて質問をさせていただきます。 現在MDIでのテキストエディタを作成中なのですが、このソフトに文字列検索機能をつけたいと考えています。 そして自分で一応はプログラムが組めていますが、一箇所だけ理解不能な部分が現れました。 例えば、エディットコントロールに、「goo  goo  goo」とこのように記述されているとします。 そのときに文字列検索で「goo」と検索した場合、自分のプログラムでは3回「次を検索」のボタンを押すと「最後まで検索しました」とメッセージボックスで表示されました。 またどんな文字列がエディットコントロールに記述されたとしても、検索文字を発見された個数分検索を行い最後にメッセージボックスが表示されます。 よって動作としては完璧なのですが、表示に問題が発生しました。 「次を検索」のボタンを押しても、検索対象文字列(エディットコントロールに記述されている文字列)が選択状態にならないのです。 以下に選択状態にするためのプログラムを記述します。 (1)クライアントウィンドウ内でZオーダーがトップ(一番手前に表示されている)のドキュメントウィンドウハンドルを取得。 (2)そのドキュメントウィンドウの子ウィンドウにあたるエディットコントロールハンドルを取得。 (3)そのエディットコントロールハンドルに向けてSendMessage(エディットコントロールハンドル, EM_SETSEL, 検索された文字列の先頭位置, 検索された文字列の最後の位置); を行う。 この手順により検索された文字列を選択状態にしているのですが、表示としては選択状態になりません。何が間違えているのでしょう? ちなみに表示はされないだけで、何かしら選択状態にはなっているのか?と疑問を持ったため、上の手順の後に下のプログラムを記述してみました。 SendMesssage(エディットコントロールハンドル, EM_GETSEL, (WPARAM)&Start, (LPARAM)&End); このプログラムを実行した場合、上で一応選択状態にした文字列(ディスプレイ上では選択状態には見えない)の開始位置と終了位置が正確にStartとEndに格納されました。 EM_GETSELは現在選択されている文字列の開始位置と終了位置を取得するメッセージであるためエディットコントロール内の検索された文字列は選択状態になっているといえます。 しかしディスプレイ上では選択状態として表示がされません。なぜ表示されないのでしょう? ちょっと大雑把に説明してしまいましたが、質問があれば返信を行いますので、よろしくお願いします。