- ベストアンサー
テキストの折り返し処理について
- Visual Studio 2005のMFCを使用してアプリケーションを作成しようとしているのですが、テキストの折り返し処理がうまくいかないので、質問させてください。
- 新規作成⇒プロジェクト⇒MFCアプリケーション⇒シングルドキュメント⇒NEXT×6⇒基本クラスを【CEditView】に変更すると、スケルトンとしてメモ帳が出来上がりますよね?このメモ帳に対して文字を入力していくと、端でちゃんと折り返し、最大化すると文字を最大化用に敷き詰めてくれます。これはメモ帳ですが、自分がやりたい事はあるPCからのデータをレシーブしてそこの画面に表示!!という事なので、CEditViewではなくCListViewとかを使おうとしてます。
- そのスケルトンに対して、実際に文字を表示させようとして、C○○View::OnDraw(CDC* pDC) { 例えば *変数 ="AAABBBCCCDDDEEE"; C○○Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); pDC->TextOut(0,0,name); } 窓 そうすると、 ------------- AAABBBCCCDDDE ------------- このように表示されてしまい右にスクロールすると、残った文字が出てきます。このプログラムを 窓 ------------- AAABBBCCCDDDE EE ------------- と折り返し処理をしてくれて、最大化した時は //右端まで行ったら折り返す ----------------- AAABBBCCCDDDEEE ----------------- まずはこのようなプログラムにしたいのですが、アドバイス等、ご教示いただきたいです。宜しくお願いいたします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス ・MFCについて色々調べるよりも『オーナードロー』として検索すると良い。 あと MFC を使いこなすにあたって必要な事は C++ の知識と API 関数の知識のほかに MFC 全体の仕組みの大まかでよいので知る必要があります。その他、ネットでの検索術 などもあります。特にネットで検索をすると MFC 以外に C/C++とAPI関数でのサンプルや VB、C#、Delphi など他の言語の資料が見つかります。多少でもそれらのサンプルを理解する 知識があればかなり参考になります。私は HSP 用の API 資料が見やすいのでお気に入りに 入れています。→http://yokohama.cool.ne.jp/chokuto/urawaza/api/index.html ・私は、MFCクラス群をすべて暗記していません。無理!でも良く使うものや一連の処理は サンプルソースを自分で作成してフォルダで管理しています。そして、そのフォルダから サンプルソースを見つけて『コピー&ペースト』して使っています。このサンプルは自分で 試行錯誤して作ったソース以外にネット検索で集めた MFC 小技集を自分なりにまとめたもの です。私の財産です。→ソフト財産と呼ぶ。 ・下の『参考URL』をどうぞ。 本: ・http://www.amazon.co.jp/dp/4881358219/→『Visual C++〈1〉はじめてのWindowsプログラミング』 ・http://www.amazon.co.jp/dp/4881358227/→『Visual C++〈2〉はじめてのオブジェクト指向プログラミング』 ・http://www.amazon.co.jp/dp/4881358235/→『Visual C++〈3〉はじめてのMFCプログラミング』 ・お金に余裕があるのなら用意してみるのも良いでしょう。 ただし、本屋などでリサーチしてから買うこと。自分に合うかどうかね。 参考文献: ・http://msdn2.microsoft.com/ja-jp/library/d06h2x6e(VS.80).aspx→『MFC リファレンス』MSDNマニュアル ・http://akky.cjb.net/mfc/index.html→『MFCプログラミング』 ・http://www.g-ishihara.com/mfc_ge_02.htm→『MFC編 - 開発環境をそろえよう』
その他の回答 (2)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス ・MFC を使うには、クラスと派生と仮想関数以外にクラスの継承(親子関係?)をそれなりに 把握しておく必要があります。また、メンバ関数が Win32 API 関数とデータメンバなどが どのようにカプセル化しているのかを大よそ見当を付けれないと混乱します。 ・また、C++ 言語を完璧にマスターしても MFC の仕組みを理解しないかぎりは使いこなせない。 期限内に作らなければいけないので、重要な部分だけをつまみ食いしても良いでしょう。 時間があるときに過去のソースや経験したことをメモ程度にまとめて置けばその後に利用できます。 私はホームページ形式にまとめて閲覧、参照しています。一部は公開しています。 まぁ、1つ1つ経験的に積み重ねて行くしかないですね。 最後に: ・今回の質問は指定された長方形内に文字列を折り返しで描画すれば上手く行きそうな気はしますが、 試したことが無いので何ともいえません。エクスプローラの縮小版表示はオーナードローなどで 描画しているようです。文字列も同様に自分でオーナードローすれば出来るとは思います。 ・以上。参考になりましたか。
お礼
度々にわたる丁寧な回答ありがとうございました。 今回はC++は掻い摘んで、時間がある時にしっかり把握したいと 思います。 参考URLなどを元にMFCの勉強などをしていきます。 オーナードローに関してもっと調べて見ます。 ありがとうございました。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★なぜ?CListView なのですか? ・ここに興味を持ちました。 オーナードローを使い、自分で文字列の長さを計算して折り返すしかないと思う。 CListView で折り返す考えを今まで考えたことが無いのでアイディアとして下さい。 ・以上。
お礼
返答が遅くなりましてすみません。 オーナードローですか??調べてみてもピンと来ないのは完全に勉強不足です ね・・。 MFCについて色々調べてみたいのですが、勉強になるいいサイトなどございますか?? またMFCを使うにあたって必要な知識があると思うのですが、 C++の知識とAPI関数と思っているのですが、それで宜しいでしょうか? あと皆様はMFCを使うにあたってMFCクラス群を暗記しているのでしょうか?もし暗記しているのなら、自分には真似出来ないっておもいます。 それともこういう仕様にしたいな~って思って調べて使用するのでしょうか? ご教示よろしくお願いいたします。
お礼
丁寧なアドバイスありがとうございます。 とても参考になりました。やっぱりMFCすべてを暗記するのではなく、 その時の仕様などに応じての関数やWebなどで拾ってきたソースなどを 参考に調べて構築していくのが、普通なんですね!! でも、MFC位は普通に暗記してるよ!!って言われなくて良かったです。 何度も質問してしまって悪いのですが、C++の知識においてはどのレベル までの知識を必要としますか??(自分ではクラスと派生と仮想関数)あたり がMFCにあたって重要かなって思っています。 本当は完璧にC++をマスターした方がいいと思うのですが、あるアプリケーションを期限内に作らなければいけなくてC++を完璧にするのは無理っぽいので、部分的にかいつまんでやっていますが、そこらへんのアドバイスを いただけないでしょうか?? 宜しくお願いいたします。