VC++ RichEditViewで水平スクロースさせたい

このQ&Aのポイント
  • VC++ RichEditViewで水平スクロースさせたい。改行せずにデータを左右にスクロールさせる方法は何ですか?
  • MFC SDIの基本クラスRichEditViewを使ってエディターを作成しています。データがウィンドウのサイズを超えた場合に自動的に改行せずに左右にスクロールさせる方法を教えてください。
  • VC++ RichEditViewを使用している場合、データがウィンドウのサイズを超えた場合に自動的に改行してしまいます。改行せずにデータを左右にスクロールさせる方法を教えてください。
回答を見る
  • ベストアンサー

VC++ RichEditViewで水平スクロースさせたい

VC++ RichEditViewで水平スクロースさせたい 環境:WinXP Pro / VC++ 2005 MFC SDIの基本クラスRichEditViewを使いエディターを作っています。 この中でデータにCRLFがある場合に改行し、それ以外はスクローブバーで左右に移動しデータの入力や表示を行いたいのですが、データがWindowのサイズを超えた時点で自動的に改行してしまします。 次のオプションを変更しテストしていますが、結果は同じです。 dwEvent = ( ECO_AUTOHSCROLL | ECO_AUTOVSCROLL | ECO_NOHIDESEL | ECO_SAVESEL | ECO_SELECTIONBAR | ECO_WANTRETURN ); pWnd->SendMessage(EM_SETOPTIONS,(WPARAM)ECOOP_OR, dwEvent); 基本クラスCFormViewにRich Edit 2.0 Controlを貼り付けた場合にはデータは改行せず水平スクロールが表示されます。 ヘルプやWebを検索しましたが分かりません。 RichEditViewの場合はどの様な指定を行えばよいのでしょうか。 ご教示をお願い致します。

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

  • ベストアンサー
noname#144013
noname#144013
回答No.1

こんにちは。 表示するテキストをウィンドウの幅で自動折り返ししないようにするには、 ワードラップ(折り返し)の設定を、「自動ワードラップしない」に設定すれば 良いと思います。 ワードラップの設定は、CRichEditViewクラスのメンバ変数 m_nWordWrap に、 以下のような値を設定すれば良いようです。  ・WrapNone         自動ワード ラップしない  ・WrapToWindow      ウィンドウの幅をもとに、ワード ラップを行う。  ・WrapToTargetDevice  ターゲットのデバイス特性をもとに、ワード ラップを行う。 また、m_nWordWrap の設定を変更した場合は、その設定を有効とするために WrapChanged関数を呼ぶ必要があるようです。 ■使用例  void CMyRichEditView::OnInitialUpdate()  {    CRichEditView::OnInitialUpdate();    //自動折り返しなしに設定    m_nWordWrap = WrapNone;    WrapChanged();  } ■参考サイト(MSDN) CRichEditView::m_nWordWrap (MFC) http://msdn.microsoft.com/ja-jp/library/kd5xysyf(VS.80).aspx CRichEditView::WrapChanged (MFC) http://msdn.microsoft.com/ja-jp/library/0949s8x2(VS.80).aspx

SmallMan
質問者

お礼

FarEyesさま 早々のご教示ありがとうございます。 うまく設定できました。 「ワードのラップ」がキーだったのですね。 頭が「水平スクロース」から離れず2日掛かった末の質問で、こんなに早くご回答が得られるとは感謝しています。  未熟者ですが今後とも宜しくお願い致します。

関連するQ&A

  • VC++で作成したアプリ起動時のウィンドウサイズについて

    VC++初心者の者です。初投稿です。宜しくお願いします。 ※何を言っているのか解らない、情報が足りないって場合は聞いてください。超初心者ですので宜しくお願いします。。。 VC++で作成したMDIアプリを起動させた時、 又は新しくウィンドウを開いた時の デフォルトウィンドウサイズを指定する方法を どなたか教えていただけませんでしょうか? また、開いたウィンドウをリサイズできないように するにはどうしたら良いでしょうか? (ViewクラスはCFormViewを基底としています。) 宜しくお願い致します。

  • 配列のデータ削除方法

    宜しくお願いいたします。 <環境> WIN98 VC++6.0 MFC  以下コードにて、ダイアログのボタン押し下げで、ウィンドウを作成し、付箋としてデスクトップに 貼っています。 CPtrArray m_pAryDlg; void CInput::OnButton1() //ダイアログのボタン押し下げ { UpdateData (TRUE); pWnd = new CMyWnd( this); pWnd->m_iti=100; //貼り付け位置の初期値 m_pAryDlg.Add ( pWnd );  pWnd->m_moji=m_InputData; //ダイアログのテキストデータを取得 pWnd->Kado_Create(this); //ウィンドウの作成 ShowWindow(SW_HIDE); //ダイアログの非表示 } また、ウィンドウ破棄時には、こんな感じでウィンドウ(付箋)の位置データと文字データを ファイルに保存しています。 for ( iCnt = 0; iCnt < m_pAryDlg.GetSize( ); iCnt ++ ) { pDlg = (CMyWnd*)m_pAryDlg[ iCnt ]; sprintf(aa,"%d",pDlg->m_rect.left); //位置データ sprintf(aaa,"%s",pDlg->m_moji);  //文字データ aaaa=aaaa+aa+crlf+aaa+crlf; pDlg->DestroyWindow( ); delete pDlg; } fputs(aaaa,fout); //ファイルへの書き込み fclose(fout); このような場合において、5個貼られた付箋を1個はがした場合に、そのはがした付箋のデータは 保存したくないのですが、どのようにすれば実現できるのでしょうか? 宜しくお願いいたします。

  • 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++2010を覚えたい(極めたいではない)

     ExcelVBAで実験データを整理していますが、Excelのみでしか使えない等の問題からVC++2010をそこそこ使えるようになりたいのです(極めようとまでは思っていません)。先日もここで質問させていただいたのですが、メッセージボックスを出したりファイル操作をしようとすると、知識不足のためコードが正しく書けずエラーばかり出て格闘しています(VBAだと、msgbox"こう書けば表示される" の一行で済むことをやるのに、かなり格闘します)。  そこで、これら基本動作を完全に使いこなせるようにするために勉強をしたいのですが、何について勉強すればいいのかよくわかりません。どんな本を買って何を勉強すべきでしょうか?いい本があったら教えてください。特にできるようになりたいことを下に書きます。 1 #include <stdio.h>とかのインクルードファイルを宣言する位置。 2 intやdouble等の変数宣言も、たまにエラーでできないことがある。   関数内では変数宣言の方法が違うのかな?   String^ でどうして^がついたりつかなかったりするかわからない。   これでエラーとかよく出ます。^は大嫌い>< 3 メッセージボックスとかの表示。messageboxの前や後ろにshowとか::とかどうして必要か   わからない。メッセージボックスに確認する変数の数値を出すのも難しい。 4 データファイルをいろいろ操作したい。データファイルはテキストデータのみ 5 グラフもVC++で書けるとうれしい。必要があるときだけでいい。 forやif等の制御構造、配列、ポインタ等はもう知っています。 これらができるようなるには、「クラス」とかを勉強するとわかるのでしょうか? クラスが何のことだかもわかりませんが。

  • ウィンドウの作成

    VC++のMDIで基本クラスをCFormViewにしてアプリケーションを作成しています。  フォームにボタンをおいて、それを押すと別のフォーム(ウィンドウ)が表示されそこにカメラの動画像がでるようにさせたいのですがどのようにしたらよいでしょうか??今、別のフォーム(ウィンドウ)を表示させるところで悩んでいます…

  • CFormViewでの印刷について

    環境はWIN98 VC++6.0 MFCです。 基本クラスをCViewにした場合は下記コードにて、印刷プレビューで画像が見れたのですが、基本クラスをCFormViewにしたら見れません。 どうすれば良いのでしょうか? void CxxxView::OnDraw(CDC* pDC) { if (pDC->IsPrinting()) { 下記URLのコード } else{ } 画像表示用コード http://www.codeguru.com/forum/showthread.php?threadid=234177

  • 起動時のウィンドウサイズについて

    環境 WIN98 VC++6.0 MFC にて プロジェクトをウィザードに従い作成しました。 ステップ6/6にて基本クラスを CViewを選んだ場合 cs.cxでウィンドウサイズを画面いっぱいに広げることが出来ます。 CFormViewを選んだ場合 cs.cxの値が小さいうちは変化がありますが、あるサイズからはウィンドウが大きくなりません。 コードはウィザードが作ったオリジナルのままで、何も触っていません。 お分かりの方お願いします

  • テキストエディタならばCreateWindow

    を使って hEdit = CreateWindow("EDIT",NULL,WS_CHILD| WS_VISIBLE|ES_WANTRETURN|ES_MULTILINE| ES_AUTOVSCROLL|WS_VSCROLL|ES_AUTOHSCROLL| WS_HSCROLL, 0,0,rc.right,rc.bottom,hWnd,(HMENU)ID_EDIT, hInst,NULL); として char Str[1048576]にテキストをおさめ SetWindowText(hEdit,Str); とすればスクロール関数も使う必要なくカレットもでて文字を簡単に編集できるのですが テキストビューワならば文字を変更する必要が無くカレットもでると困るのでこれが使えません また↓や↑で1行スクロールしないといけません (エディタの場合はカレットが上下端にきたときにスクロールだからちょっと違う) DrawTextだとスクロール関数を使わないといけないような気がするし・・・ 見るだけのテキストビューワを作るのに適した方法やC言語SDK関数を教えてください

  • XMLデータの中の改行コードについて

    Windows2K VC++6.0 msxml3.dll 環境でXMLデータ処理をしています。 XMLデータ <aa> <Data>内容</Data> </aa> pXMLDom->getElementsByTagName(L"Data", &NodeList); pIDOMNodeList->get_item(0, &Node); Node->get_text(&bstrText); XMLDOMを用いて<Data>内容</Data>のデータを取ると『内容』が取れますが、内容の中で【改行コード(CRLF(10進数13,10))】が『LF(10)』になってしまいますが、 どうしてでしょうか。

  • 【MFC】キャンセルボタン処理が実装できない

    VC++2005(MFC)にて下記サイトを参考にMDIアプリケーションを作成しています。 http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_MDI1.html 手順として、プロジェクトを新規作成し、MFC AppWizard(exe)で 新規プロジェクト名をMDITest1に設定し、アプリケーションの種類はMDI、 ビュークラスCMDITest1Viewの基本クラスはCFormViewとします。 リソースビューより、自動生成されたフォームの上に、 Buttonを配置し、イベントハンドラOnBnClickedButton1()内にて、 IDCANCEL()処理にて、ボタン押下時のウィンドウを閉じる処理を 実装したいのですが、コンパイルエラーが発生します。 基本クラスがCDialogクラスの場合は実装できるような気がするのですが。。 フォームビューだと、キャンセル処理は実装不可能なのでしょうか? また、不可能だとしたらウィンドウを閉じる処理はどのように実装すればよいのでしょうか? 解決策をご存知の方おられましたら、お手数ですがご教授宜しくお願い致します。

専門家に質問してみよう