mcrblog

vcpp-ml

1999年04月

30

[vcpp 00028394] ダイアログ内にHTMLを表示

こんにちは。北川です。
最近調子いいと思ったらまた質問です。(__)


今回の質問はタイトルにあるとおり、MFCアプリケーションのダイアログ上で、HTML
ファイルをInternetExplorerと同じように表示したいのです。

MFC6.0からCHTMLViewクラスが追加されて、ドキュメント/ビューアーキテクチャのソ
フトでInternetExplorerのHTMLレンダリングエンジンが簡単に使えるようになったよ
うですが、ダイアログベースのアプリケーションに関しては何の記述もなく、ついで
に僕の技術もなく(泣)、とても困っています。

前から「ヘルプの使い方が浅い」とご指摘頂いていたので、前回よりもしぶとく検索
してみたのですが、それらしいのはあっても使い方が全く分かりませんでした(やっ
ぱりルーキー・・・)。
一応「Microsoft WebBrowserコントロール」というのを見つけたのですが、ラップク
ラス云々と言われ、言われるとおりにしてみても何も起こりません(何もしていない
から当たり前かも・・・)。


HTMLが表示できたらIEでなくとも構いません。
どなたか、解決方法を知ってらっしゃる方、ぜひご教授ください。
どうかお願いします。


By 北川達也
        T...@mx5.nisiq.net
30

[vcpp 00028391] Re: CString操作って遅いのでしょうか?

三沢です。

>  どうも松本靖夫です。
>  多分、バッファサイズが想定していたものより多く必要になったために毎回
> 領域確保と解放を繰り返しているのでしょう(この例ですと最後の読み込みは
> 500K領域取得の500Kコピーの500K領域解放という約1.5M近いメモリ
> アクセスが行われます)
>  予めReleaseBufferでCStringで使用する領域を予め取得すれば、若干高速
> 化出来ると思います。

なるほど。データのサイズが小さいときは気づきませんでした。
必要なバッファを計算するようにして、大きく読めるときはどかっと読むようにしま
した。

速度は雲泥の差でした。(^_^;)

みなさん、勉強になりました、ありがとうございました。

--
_._._._._._._._._._....

   _/_/   Noriaki Misawa  m...@dti.ad.jp
  _/_/   DREAM TRAIN INTERNET INC. Planning Dept.
 _/_/   6-6-20 Akasaka, Minato-ku, Tokyo 107 Japan
_/_/   TEL +81-3-3505-8305
             ...._._ I'm @ DTI. ._._....
30

[vcpp 00028390] [お礼]書式付きテキストの表示

道化師さん,山本さん,それからDMでメールをくださった
木下さんありがとうございました。

道化師さんは書かれました。 
> ・・・それとも単に一からコーディングするとき参考になる情報
> を求められているのでしょうか?

できればそのようなことをと考えていたのですが…

ではまたよきアドバイスなどありましたらその時はよろしく
お願いします。
今回は本当にありがとうございました。
30

[vcpp 00028389] Re: CString操作って遅いのでしょうか?

 こちらは、かわむら@DSTです。

Noriaki Misawaさんの
[vcpp 00028383] CString操作って遅いのでしょうか? に関してです。

>Noriaki Misawaさんが おっしゃいました・・・・
>------引用ここから、(適宜省略・改行位置の変更をしてます)-----
>
>
>具体的にはこんな感じです。
>CString theBuf;
>
>theBuf += theReadData; // theReadDataは読み込んだデータ
>
>------ 引用ここまで。(適宜省略・改行位置の変更をしてます)-----

500KB ほどのテキストファイルにこれを行ったとすると、
あるサイズからはCStringがあらかじめ持っている領域を超えるコピーになります。
すると、
1.CStringは新しく領域を取得して、
2.そこに今のデータをコピーして、
3.新しいデータを付け加え
4.以前の領域を開放し
ということを、延々行うことになります。
メモリをOSから取得するという行為には少なからず負荷がかかりますので、
この処理が時間のロスになっていると考えられます。
# もちろん、すでにほかの方が指摘されているように、
#  ファイルアクセスにも一考の余地があります。

で、もしもこれが犯人だとしての話ですが、
対策としては、最初に予測されるバッファを取得しておくのはいかがでしょう?

uda tetuyaさんの
[vcpp 00018553] サイズの大きな文字列処理について
のスレッドがお役に立つんではないでしょうか?

こちらは、かわむら@DST( MailTo:a...@pc-daiwabo.co.jp )でした。
30

[vcpp 00028388] RE: CString操作って遅いのでしょうか?

>三沢です。
>
>ファイルの操作にCStringのReadStringを使用し、1行1行読んでいます。
>このデータによって、処理を行っているのですが、500K位のファイルでテストすると
>かなり時間がかかっているようです。
>
>といってもほとんどの処理は読み込んだデータを、CStringのバッファにアペンドし
>ているだけなのですが・・・。もしかして、毎回オブジェクトを作っているのでしょ
>うか・・・。
>
>具体的にはこんな感じです。
>CString theBuf;
>
>theBuf += theReadData; // theReadDataは読み込んだデータ
>


 どうも松本靖夫です。
 多分、バッファサイズが想定していたものより多く必要になったために毎回
領域確保と解放を繰り返しているのでしょう(この例ですと最後の読み込みは
500K領域取得の500Kコピーの500K領域解放という約1.5M近いメモリ
アクセスが行われます)
 予めReleaseBufferでCStringで使用する領域を予め取得すれば、若干高速
化出来ると思います。
記事検索
Amazon.co.jp
  • ライブドアブログ