長文の表示方法 – プログラミング – Home

通知
すべてクリア

[解決済] 長文の表示方法


まる
 まる
(@まる)
ゲスト
結合: 23年前
投稿: 45
Topic starter  

いつもお世話になっております。
まると申します。
Win2000、VC++6.0、SDKで開発してます。

ダイアログボックス上に、長文を表示するコントロールと、ボタンをつけたいと思います。
そこで現在悩んでいる事は、その長文を何で表示するか?という点です。
(文は、編集不可能、プログラムで変更しない(固定文字列)にしたいと考えてます。)

リソースエディタを見ると、長い文字列を表示するのは、
①リッチエディット(エディットボックス?)
②スタティックテキスト
だと思うのですが、
スタティックテキストだと、長文の表示はできないと思いました。
そこで、リッチエディットが最適かな?と考えたのですが、
リッチエディットを使って表示しようとすると、
長文を文字列で保存しておくか、別ファイルに保存して読み込んだ後
WM_INITDIALOGでエディットボックスに表示させる方法しかないと思いました。
しかし、別ファイルのテキストを作りたくないので、文字列で保存するしかないかな?
と考えております。

そこで、みなさまにお聞きしたいのですが、
長文(固定テキスト文書)を表示させたい時に、よい方法はありますでしょうか??
良い実装方法がありましたらご教授ください。
よろしくお願い致します。


引用未解決
トピックタグ
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

カスタムリソースとして持っておくことができます。
http://www.kumei.ne.jp/c_lang/
第4章をごらんあれ。


返信引用
いもちぃ
 いもちぃ
(@いもちぃ)
ゲスト
結合: 23年前
投稿: 70
 

第4章ではなく第4部でした


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

長文の長さにもよりますが、
・ダイアログに収まる長さならスタティックテキスト
・ダイアログに収まらずスクロールが必要であり、
 長文が64kバイト以下ならエディットボックス
・長文が64kバイト以上あるか、文字に色をつけたり
 複数のフォントを使用したりしたい場合は、リッチエディット


返信引用
まる
 まる
(@まる)
ゲスト
結合: 23年前
投稿: 45
Topic starter  

いもちぃさん、dairygoodsさん、お返事いただきありがとうございます。!!

>いもちぃさん
カスタム・リソースの意味がよくわからなかったので、あとでよく調べてみます!
ただ、お教えいただいたHPの317章のサンプルを見た限り、文章の保存は
char text[][256]={・・・,・・・}
という感じで、普通の2次元配列を持っているように思うのですが、
これがカスタムリソースというものなのでしょうか?

>dairygoodsさん
スクロールが必要になるので、自分でもエディットにしようと思っておりましたが、
普通のエディットボックスとリッチエディットの違いはしりませんでした。
しかし、なぜ64kバイト(全角32768文字?)なのでしょうか?
そして、もし64kバイトの長文を保存してエディットに表示する場合、
やはり上記の2次元配列で256×256で文を保存すべきなのでしょうか?

初歩的かもしれないことを度々お聞きして申し訳ありませんが、
何卒よろしくお願い致します。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> しかし、なぜ64kバイト(全角32768文字?)なのでしょうか?
エディットボックスを作った人がそう決めたから(^^;

> そして、もし64kバイトの長文を保存してエディットに表示する場合、
> やはり上記の2次元配列で256×256で文を保存すべきなのでしょうか?
カスタムリソースとは、任意のファイルをEXEの中に組み込む方法です。
[挿入]-[リソース]-[インポート]で別ファイルとして作っておいた
テキストファイルをリソースとして取り込むことが出来ます。

「猫でも~」で紹介されてるのは、GIFファイルの場合ですね。
これをテキストファイルに読み替えればよいかと。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

横レス失礼します。

VCで言うリソースってわかります?アイコンとか、メニューとか、ビットマップとか。
あれはデザイン中は別ファイルとして存在するのに、最終的な実行ファイルでは
結合されますよね。そういうリソースを自分の好きな型で作成できるのが
カスタムリソースです。

エディットボックスについてですが、
64kまでなのはコントロール自体の歴史的な理由、16bitの壁です。
Win95のメモ帳に64K以上のファイルを読ませると落ちるアレです。

プログラム内部での文字列表現としては、別に2次元配列にする必要はないです。
文字列リテラルをえんえんと続けてもべつに間違いではありません。
そうした場合保守作業が大変になるし、美しくないので、カスタムリソース等を
使用するわけです。
具体的にはリソースファイルを修正し、
プログラム上では FindResource, LoadResource 等のAPIを使用します。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

あ、かぶっちゃいましたね、すみません。


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 81
 

ご質問の主旨にあうかわかりませんが。

以前デバック情報を表示しつづける機能をアプリにもたせた時は
リストボックスを使用してました。
ソートのチェックをはずして、表示したい情報を追加していけば
良いだけですんで。

表示できれば良いだけなら、こんな選択肢もありなんではないでしょうか。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

んさん、それよさげですね、
今度使わせてください。


返信引用
まる
 まる
(@まる)
ゲスト
結合: 23年前
投稿: 45
Topic starter  

dairygoodsさん、PAIさん、んさん、度々お返事いただきありがとうございます!

>dairygoodsさん、PAIさん
カスタムリソースの意味わかりました!!
*.RCファイルと同様に、任意のファイルをリソースとしてプロジェクトに入れ、
コンパイル時にファイル(リソース)としてEXEに組み込むって感じであってますか??
今回の場合テキストファイルをリソースとすることになると思いますが、
その時テキストのリソースをロードしたあとの
エディットボックスにセットする方法をもう少し勉強しないと私にはできなさそうです。
しかし、すごく勉強になりました。
ありがとうございます。

>んさん
リストボックスですか?
全く想像しておりませんでした!
表示だけできればよいと考えているので、その方法を試してみたいと思います!!

今からそれを実装してみたいと思います。
でき次第、再度結果をご報告させていただきます。
いろいろご意見をいただきありがとうございました。


返信引用
まる
 まる
(@まる)
ゲスト
結合: 23年前
投稿: 45
Topic starter  

折り返しなどを考える為にリストボックスをやめ、
エディットボックスでの表示ができるようになりました!!

また、カスタムリソースとしてテキストファイルをEXEに入れ、
リソースをロード・ロックした戻り値での表示も上手くいき、すごく感動しました!!

みなさまご教授いただき本当にありがとうございました。
また、今後ともよろしくお願い致します。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました