• ベストアンサー

始めたばかりのVCで

初めて質問させていただきます。 始めたばかりのVCで VC++のMFCを使ってエディタを作ろうとしてますが、 AFXRICHのCRichEditCtrl(RichText画面)で指定の文字記号の位置に文章などを差し込みたいのですが指定位置(文字記号を判別して)にカーソルを移動させる方法が分からずにいます。 どのようにプログラムしたらよいか教えていただけないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • mcWalker
  • ベストアンサー率69% (27/39)
回答No.1

MFCではありませんが、API ベースで言えば、 rich edit control のテキストの長さは、 GetWindowTextLength() で得られ、(これでテキスト格納先を確保して) GetWidnowText() でテキストの内容を取り出せます。 で、目的の文字の場所を(テキスト内容の)オフセットで得て、 Edit_SetSel() でこのオフセットを指定すると、カーソルが そこでブリンクします。 (Edit_SetSel() は、範囲指定のマクロ関数で、始点終点を指定します。 幅があると反転表示になります。 マクロの元は、SendMessage() コマンドの "EM_..." をご覧に なると、何でも出来る程いろいろあります。) MFC では rich edit control class の定義をご覧になると、使える関数が 分かるのではないでしょうか。

nannjakore
質問者

お礼

ありがとうございます。早々試してみました。かなり期待に近づいた感じでした。まともにマニュアルも見てない状態でいきなりエディタをつくろうなんて大それたことを考えでして、それでもどうにか構造体、CLASS間のやり取りが漠然と理解できたところです。 この回答を参考にがんばってみます。ありがとうございました。

nannjakore
質問者

補足

SendMessage() コマンドの "EM_..."エディットコントロール今見てます。かなりはまってしまいましたポリポリ (・・*)ゞ 面白いですね。それに今更ながらCの奥の深さ感じました。まだまだ始めたばかりで分からないことばかりですがこれからもよろしくお願いします。本当にありがとうございました。

関連するQ&A

  • VC++にてボタン等のサイズ取得

    現在VC++のMFCにて画面を作成していますが、 画面に配置した、ボタン等のサイズと位置の取得方法がわからず困っています。 VCはほとんど素人なので簡単なことなのかも知れませんが、まったく分かりません。 ご存知の方、ご教授願います。

  • VC++ VS2005 タブコントロールに貼り付けたリストコントロールが消える

    こんばんは。 早速ですが質問です。 VC++ .NET MFCプロジェクトで リソースエディタでダイアログにタブコントロールを貼り付け(1)、 そこに同じようにリソースエディタでリストコントロールとボタンを 貼り付けたダイアログを作りました(2)。 1のタブコントロール上に2をソースで貼り付け 表示させ、2のInitDialogとボタンクリックのイベントを作成して Listコントロールに値を入れるということをしたのですが リストコントロールの表示が消えてしまいます。 マウスでリストコントロールが貼りついている位置にカーソルを当てるとその部分がでてきます。 原因のお分かりになるかたご回答よろしくお願いします。

  • VC++でキー操作がおかしくなった

    今日DevStudio97を立ち上げ、VC++を使っていたところ、キーボード 操作のショートカット等がおかしくなっているのに気づきました 例えば ・ビルドは普通F7で行えるが、shift+F8に変っていた ・エディタの行頭でシフトキーを押しながらエンドキーを押しても範囲選択に  ならず、カーソルが行末に移動してしまう ・単語を選択して文字を打ってもその単語が消えず、単語の後ろに文字が追加される などなど・・・ユーザーインターフェースが完全に変ってしまっています VCはかれこれ4,5年使ってると思いますがこんなことははじめてです 念のため再インストールしてみたのですがまだ直りません・・どうなっている んでしょうか? 今日Visio2000をインストールした後からではないかという気がしています 原因と対策をご存知の方いらっしゃいますか?

  • 画面上にカーソルを二つ作成し、その各々を同時に動かすようなシステムをVC++を用いて作成したい

    画面上にカーソルを二つ作成し、その各々を同時に動かすようなシステムをVC++を用いて作成したいのです。 具体的には ・カーソルを二つ作成 ・カーソル1を(100,200)、カーソル2を(200,300)といった指定した場所に移動できる ・カーソル1、カーソル2は同時に動かせる ・対象OSはWinXP どこか参考になるサイトを教えていただけると幸いです。

  • VC++を始めるにあたって

    始めまして。今回会社でVC++でMFCアプリケーションのプログラミングの仕事をすることになりました。  現在の私のスペックです。  [0] 今年入社、毎日プログラムの学習をしてます。  [1] 経験したプログラム   [1-1] C 学生時代、授業で基礎のみ   [1-2] JAVA 同じく授業で基礎のみ   [1-3] VC# 10日で覚えるVC#.netと言う本で学習中    VC++自体始めてなので、関数や書き方も理解してなくて、何から勉強したらいいのか分かりません。 いい勉強方法があれば教えてください。 また参考になるHPや参考書もあれば教えてください。 以上です。お願いします。

  • 編集機能を持つテキストエディタの作成を!!!

    この四つの作成プログラムをを教えて下さい。'i'が入力されるとカーソルの位置に指定した文字列を挿入する。'd'が入力されるとカーソルの位置から指定された文字数だけ削除する。'c'が入力されるとカーソルの位置から指定された文字数だけカーソルを移動する。'q'が入力されると内容をファイルにセーブして編集を終了する。ただし、編集対象は一行文の文字列とし、カーソルは'*'で表示する。誰か私を助けて下さいサッパリわかりません。

  • VC++からブラウザを起動して・・・

    VC++&MFCで画面を作成しています。 作成した画面のあるボタンをクリックすると、規定のブラウザが起動され、 指定したURLを表示にいくという処理を行いたいので、 ShellExecute( NULL, "open", "http://xxx.xxx.co.jp/", NULL, NULL, SW_SHOWNORMAL ); という様な感じでブラウザを起動しているのですが、このブラウザの起動時に、 アドレスバー・ツールバー等を非表示にしたいのです。 ShellExecute()じゃなくても良いので、VC++(SDK、MFC何でも可)で 実現する方法はあるのでしょうか?。 よろしくお願いします。

  • ワードで、カーソル位置(入力箇所)を画面上下中央に保持する設定は?

    ワードの機能についてお伺いします。 文章作成の時に文字を打ち込んでいくと、文章が打ち込まれていくままにカーソル位置(入力箇所)が下の行に移動し、カーソル位置が画面最下行まで書いていくと、画面は書き上がった文章で埋められ、わざわざスクロールしないとその下が見えない状態になってしまいます。書いている文章の前後を確認しながら言葉を選びたい場合などに、毎回不便を感じています。 そこで質問。カーソル位置を常に画面上下中央に固定し、入力してもカーソル位置(入力している行)は移動させずに、文章画面の方を自動でスクロールさせる(書きあがった部分が順次上に送られていく)というような設定はないのでしょうか? 或いは、ショートカットキーで、今入力している箇所を画面上下中央に一発で移動させる(そうすれば入力箇所の前後が見渡せる)ような機能はありませんか? 以前似たような質問をされた方がいらっしゃたようですが、問題解決には至らなかった模様で、ここにもう一度質問させていただきます。 よろしくお願いいたします!!

  • VC++2008にて、画面の動的変更処理について

    現在VC++2008のMFCにて開発を行っております。 ダイアログのテキストボックスAの値を変更し、 カーソルが移動した際に 他のテキストボックスBの値を、Aの値により処理がかかる のような処理は無理なのでしょうか? やはり、ボタン押下でしか画面の更新は無理なのでしょうか? ご教授頂ければ幸いです。

  • VC++でプログラミングしていますが

    VC++である文章を入力すると、Aか、Bという文章が表示されるプログラムを書きたいと思っています。 ある文章を入力するとAという文章が表示されるプログラムはできたのですが、AまたはBを表示させることができません。 どのように書けば良いのでしょうか。 初歩的な質問かもしれませんがよろしくお願いします。

専門家に質問してみよう