• ベストアンサー

基本クラスCEditViewでのテキストの最後の検索とテキスト設定

[開発環境]:Visual C++ 6.0 現在、Visual C++ 6.0を使ったMFCプログラミングの勉強をしています。 基本クラスをCEditViewとしてSDIアプリケーションを MFC AppWizard (exe)で作成しました。 このテキストエディタにタイマを発行させて、 ある一定の時間が経過した時に編集中のテキストの最後を検索して、 その場所に特定の文字列(例えば"1分経過"等)を表示させたいと考えています。 しかし、編集中テキストの最後を検索する方法と、 その場所へのテキスト設定の方法が分かりません。 ご存じの方、これらについて御教授お願いします。

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

  • ベストアンサー
  • clsdi99
  • ベストアンサー率63% (31/49)
回答No.1

「テキストの最後を検索して・・・」とありますがこれは最後の単語でしょうか?それとも最後の位置? とりあえず、CEditViewはCEditにアクセスできるので そのメソッドを駆使すればできます。 例えばReplaceSelなど。 そのほかには、GetWindowTextでCStringに文字を取得し 最後に文字列を連結させ、SetWindowTextで設定すると言うのも手かと思います。 ちょっと面倒な場合は、最後の位置で1分経過、2分経過... と変化させる場合ですね。その場合は設定した位置(先頭からの位置)を覚えておいてそこを更新するのかな。 あーでもユーザーが同じエディットで編集する場合その位置も変わりますね。 そんな場合などを考えると別ウィンドウで経過分数を表示させる方がよいかもしれませんね。

smallinoki
質問者

お礼

ご回答ありがとうございます。 > 「テキストの最後を検索して・・・」とありますがこれは最後の単語でしょうか? > それとも最後の位置? 最後の位置です。 > CEditViewはCEditにアクセスできるので > そのメソッドを駆使すればできます。 > 例えばReplaceSelなど。 ありがとうございます。 ReplaceSelで自分が組込みたいことできました。 質問前にReplaceSelを使えばいいのかなと考えて、 void CTestEditView::OnTimer(UINT nIDEvent) {  switch(nIDEvent){  case 1:   this->ReplaceSel("\x0d\x0a1分経過\x0d\x0a", FALSE);   KillTimer(1);   break;  case 2:   this->ReplaceSel("\x0d\x0a2分経過\x0d\x0a", FALSE);   KillTimer(2);   break;  }  CEditView::OnTimer(nIDEvent); } としてみたのですが、エラーになってしまうためここに質問した次第です。 回答をいただいて、自分のReplaceSelへのアクセスの方法が間違っていることに気付きました。 そこで、以下のように変更しました。 void CTestEditView::OnTimer(UINT nIDEvent) {  CEdit* myED=(CEdit*)this;  switch(nIDEvent){  case 1:   myED->ReplaceSel("\x0d\x0a1分経過\x0d\x0a", FALSE);   KillTimer(1);   break;  case 2:   myED->ReplaceSel("\x0d\x0a2分経過\x0d\x0a", FALSE);   KillTimer(2);   break;  }  CEditView::OnTimer(nIDEvent); } これで、自分が考えている動作をしてくれるようになりました。 困っていたので、たいへん助かりました。 今後もよろしくお願いします。

関連するQ&A

  • MFCアプリケーションでアイコンが正しく表示されない

    Viisual C++ 6.0 を使ってMFCのSDIアプリケーションを作っているのですが アプリケーションを起動したときにメインウィンドウの左上に表示される はずの小さいアイコンが正しく表示されなくて困っています。 (添付画像に示したように白い四角形が表示されます) なお、アイコンはVisual C++のリソースエディタで作っており、 エクスプローラから実行ファイルを閲覧するとアイコンは正しく表示されます。 (添付画像を参照)なぜメインウィンドウだけ正しく表示されないのでしょう? どうすればメインウィンドウの左上に正しいアイコンが表示されるでしょうか? AppWizardで新しくSDIアプリケーションのプロジェクトを作り直せば、 正しく表示されるようなのですが、これまで作ったソースを丸ごと移動させる のは手間がかかりそうなのでできればそれはしたくないのです。

  • テキストエディタ設定 -サクラエディタ-

    初めてプログラミングを始めます。 「作りながら学ぶRuby入門 著 久保秋 真」という本を参考にしてます。 この本で「演習場所を準備する」という項目で以下のように書いていました。 『テキストエディタで「C:\ruby_ex」ディレクトリに新しいファイルを「test01.rb」を作成して・・・』 上記のディレクトリに新しいファイルの作成の仕方を教えていただきたいです。 テキストエディタはサクラエディタです。 PC環境 OS:VISTA HOME PREMIUM SP2 Ruby:Ruby-1.9.1-p243 テキストエディタ:サクラエディタ Ver1.6.6.0(V 1310)

    • ベストアンサー
    • Ruby
  • VisualStudio2005のテキストエディタの設定について

    Visual Studio 2005 Academic を現在使用しているのですが 不意に何かボタンを押してしまったのか 半角スペースのところが「・」に、インデントが「 → 」と 表示されるようになってしまいました。 ひとまず「Visual studio テキストエディタ 表示」などの語句で 検索してみたもののわかりませんでした。 これの表示を消すにはどうしたらよいのでしょうか? 分かる方がいらっしゃいましたら教えていただきたいです。 よろしくお願いします

  • テキストエディタの作成法を教えてください。VC++

    テキストエディタの作成法を教えてください。 Visual C++ (2005,Express)で作れるものをお願いします。MFCで作るサイトは多いのですが、それ以外のサイトがほとんど見当たりません。もし詳しいサイトがあれば教えていただきたいのですが。 Pltform SDK 2003が入っているのでWin32アプリは作れるようになってます。あとWindows Vistaです。

  • テキストボックスをアクティブにするには?

    環境 WIN98 VC++6.0 MFC SDIにて よろしくお願いいたします。 ダイアログにテキストボックスが貼りつけており、ダイアログが表示されるときには、文字が表示されるようにしています。 この時、ダイアログをアクティブにし、 1.文字全体のバックを青色にアクティブにする 2.あるいは、文字の最後にカーソルを持っていく この2つの方法が知りたいのですが、ご存知の方お教えください。

  • タブ型テキストエディタを推薦してください

    以下の条件に該当するソフトのお勧めを教えてください エディタ フリーウェア 編集文書をタブで切り替えられる 最初がシンプル,後から拡張 一応テキストエディタをVectorで見てみましたが、 タブ型エディタ自体が少ない。 MKEditorは使ってみたけどタブの見え方、 行番号エリアの見え方が自分にとっていまいち。 なお現在ある程度手になじんでいるSDIのエディタはTeraPadです

  • テキストエディタについて教えて下さい。Googleの検索履歴を編集しよ

    テキストエディタについて教えて下さい。Googleの検索履歴を編集しようとLocal Search History というフォルダのファイル(Unicode)をWordpadやNotepadで開いたのですが日本語の検索文字は文字化けしています。また,テキストエディタ内で検索文字の一つを削除すると,Windows Internet Explorer でのGoogle検索窓で表示できる検索履歴に残った文字が文字化けしています。使っているテキストエディタを変えれば解決するなら,良いフリーのテキストエディタを教えて頂きたいのです。(上述で私のしたい作業はOkwaveの御回答を見てなぞっていて,実は内容を良く分からず行っています)宜しくお願い申し上げます。

  • テキストエディタでの検索について

    こんにちは。 現在K2Editorというフリーのテキストエティタを使っています。 テキストエディタを使っているとはいえ、プログラミングをしているわけではなく、単にログ(テキスト)がしっかりと取れているか検索機能をつかって調べているだけです。 私の作業は、検索したい文字列をドラッグして、次へ次へ検索をかけていく作業です。しかし、この検索機能、2行以上の複数行にわたる文字列は検索できません。私の都合上、これができないことで、作業時間が倍以上かかってしまします。私のしたいことを具体的にしめすと、 1 abc efg hij 2 klm nop qrs … ______|←---→| この矢印の間を2行以上まとめて選択し、検索をかけていきたいのです。 (2行目以降が行の頭にくるのではなく、1行目と頭を揃えたところから選択) 選択は「短形選択」というもの(ブロック選択やエリア選択とも言う)をつかい選択できるのですが、そのまま検索をかけれません。 今つかっているK2Editor以外のソフトも使ってみたのですが、そのような機能のものがなかなかありません。どれも選択までです・・・ なかなか言葉での説明が伝わりにくいかもしれませんが、どなたかフリーソフトで良いものご存知の方、いらっしゃいましたら是非よろしくお願いします。

  • chromeでのテキストエディタ

    ブラウザでchromeを使っています。ページのソースを表示でソースは出てくるのですが編集できません。テキストエディタで編集したいのですが、テキストエディタを指定する方法はあるのでしょうか。

  • リッチテキストボックスの操作について

    リッチテキストボックスの操作について Microsoft Visual C++ 2008 Express Editionで、簡単なテキストエディターを作ってみたいと思っています。 初心者なので勉強がてらです。 リッチテキストエディターをフォームに張り付けて、ファイルの入出力や、簡単な編集機能を実装するまでは、うまくいきました。 さて、リッチテキストエディター上で右クリックをするとコンテキストメニューが表示されます。 ここで、文字がハイライトの状態にあるときは、その文字に対してのメニューがひょうじされます。 ここからです。 では、何も文字が選択されていないときに、右クリックしたとき、別のコンテキストメニューを表示したいのです。 コンテキストメニューを二つ作り、場合によって使い分けるといっても、右クリックのイベントハンドラーを作る事もできないし、お手上げです。 詳しい方、よろしくお願いします。

専門家に質問してみよう