VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/03/10(Wed) 10:53
投稿者Eclipse
Eメール
URL
タイトル【解決】リストボックスへの高速追加

> で、今回の原因は、貴方が引用しなかった部分、
> VBによる[Unicode<->Ansi文字列]にあるのではないか、と推測されます。
> VBの文字列の内部保持形式はUNICODEである、という特徴を忘れている
> と起こしがちなトラブルです。
残念ながら、今回の原因はそれではなかったようです。
(すいません。解決した後に書き込んだので、端折ってしまいました。
質問している身なので勝手に自己完結するのはよくなかったです。すいませんでした。)

解決はしていたのですが、興味を持って試してみましたが効果がありませんでした。
これまでの、DLL(BSTR)→VB(String)→そのままSendMessageというやり方が1番早いようです。
(しかし、これも何故かSendMessageではなくAddItemメソッドを使った方が早い端末も存在した)

> API関数でListBoxに追加するのであれば、まずC++で作ったDLLから
> VB側で受け取る段階で、文字列型ではなくByte型の配列を使って
> 受け取って下さい。
> 次にSendMessageで送る場合にも、このByte型の配列をそのまま利用
> して送って下さい。
DLL側でわけがわからんようになるので、会議にて却下されました。
(実際試してみたら、逆に遅くなってしまうこともあって)

> このようにすれば、ここでは余計とされる文字コード変換のプロセス
> が抜けるのではないかと思われます。
今回はそういうわけではなかったようです。
結局、原因はわからないのですが...。
私の開発マシンの構成に似ている端末で試すと、同様に遅くなることから、
スペックや環境うんぬんではなく、構成(CPU?)に左右されるようです。

今回のお客様での端末では、激速だったのでそのままで解決となりました。
(あまり釈然としないのですが...)
こんな事例もあるのだと、勉強にはなりました。

K.J.Kさん、貴重な意見ありがとうございました。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -