• ベストアンサー

テキストの画像描画について

初投稿失礼致します。 現在、VC++2003にてダイアログベースのアプリケーションを作成中です。 内容は、テキストファイルに記載されている文字をダイアログに画像として表示する、というものです。1行ずつTEXTOUTで描画していくやり方でやってみています。 現在画像表示はされるものの、テキストファイルの容量が大きくなると、ダイアログのサイズを描画サイズが上回り、表示がおかしくなる、という状態です。 これを解消するためスクロールバーを導入し、ダイアログ内に収まるようにしようと考えたのですが、関数の使い方が分からず作業が頓挫してしまいました。この内容について、どなたか解決策、代替案を思いつける方がいらっしゃいましたら、ご助力をお願い致します。 以下は画像描画に関する所について私がコーディングしたものです。 ScrollWindowEx関数について、理解ができないため、NULLが許される箇所にはNULLと代入してしまっています。 _____________________________________________________________ void COCRDiffToolDlg::OnPaint() { dc.SetBkColor(RGB(255,255,255)); int nXStart = 450; int nYStart=5; for(int i =0; i < 200;i++){   dc.TextOut(nXStart,nYStart,imgText1[i]/*テキストファイルを1行ずつ分割したもの*/);   nYStart = nYStart + 10;   ScrollWindowEx(100,600,NULL,NULL,NULL,NULL,SW_INVALIDATE); } } _____________________________________________________________

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

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

 こんにちは。  う~む。ダイアログ上にエディットコントロールを設置して、其れに対してテキスト文字を表示すれば、もっとイージーな感覚で達成出来るような気がします。  「CEdit MFC」  http://msdn.microsoft.com/ja-jp/library/f7yhsd2b(VS.80).aspx  如何しても描写に拘るなら、縦スクロール付きの子ウィンドウを搭載した方が楽なのでは。  その場合、確かにScrollWindowEx()が必要になると思います。

yukke33
質問者

お礼

ご助力ありがとうございました。 子ウインドウの利用と、リッチエディットを利用することで、目的としていたことを達成できました。 とても助かりました。ありがとうございました。

yukke33
質問者

補足

解答ありがとうございます。 う~ん。。。 何故描画にこだわるか、ということなのですが、 ある一部分については背景色を変えたいから、という理由があります。 また、この描画を始める前には別の画像が描画されているため、 エディットコントロールではその画像がの表示ができなくなってしまいます。 子ウインドウの搭載については、これから試してみたいと思います。 進展がありましたら、お伝えしたいと思います。

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

その他の回答 (1)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

ScrollWindowExはとりあえず使わなくてもいいですし、OnPaintの中で使ってもいけません。 根本的な考え方としては、 >for(int i =0; i < 200;i++){ この部分、iを0から200まで全部回すのではなく、スクロールバーから値を読み取って、現在画面に表示したい分だけ回すのです。 例えば、スクロールさせた結果、10行目から20行目までを表示する場合は、 for(int i =10; i < 20;i++){ と、なります。 スクロールバーの値は、OnHScrollとかで取得して、適当なメンバ変数にでも保存しておくといいでしょう。

yukke33
質問者

お礼

ありがとうございます。 ScrollWindowExの特性を初めて知りました。 今後の参考にさせていただきます。

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

関連するQ&A