投稿日 | : 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さん、貴重な意見ありがとうございました。