insubaruのブログ

ソフトウェアに関する質問は最新記事にコメントする形で尋ねてください.

ESPLIBのライブラリモードについてコメントを頂きました

ある方からESPLIBのライブラリモードについて以下のコメントを頂きました.原因はまだ分かりませんが,同じ問題でお困りの方があれば参考になるかもしれませんので,とりあえず掲載させて頂きます.

不具合と解消法の報告ありがとうございます.

ESPLIB、EVFLIB、EWCLIBを使用してプログラムを書いています。 ESPLIBのアプリケーションモードで動作するプログラムをMFCで使える環境で動作させたいと思い、MFCのダイアログボックスアプリをAPPWizardで作成して、ESPLIBをライブラリモードで動かして概ねアプレケーションモードと同等の動きをするプログラムが出来ました。移植に要した時間も半日ほどで改めて使いやすいライブラリを提供していただきありがたく思います。 この移植作業の中で気になる点があったのでご報告させていただきます。 プログラムの中でテキストウインドウを何度か生成消滅させるのですが、同じ関数の中で生成と消滅を行えば問題ありません。しかし、生成と消滅を別の関数で行うとウインドウの消滅時に失敗します。具体的にはメインの処理の中でウインドウの位置を計算させてESP_OpenTextWindowでウインドウを開くところまでを関数化してメインの処理から呼び出します。消滅はメイン処理の中でESP_CloseTextWindowを呼び出してウインドウを消滅させています。 アプリケーションモードでは問題なく動いていましたが、MFCアプリでライブラリモードを使うとエラーになります。一応、関数をinline関数にすることでエラー回避が出来ていますので、私的には解決していますが、イメージウインドウなど他のウインドウでも同様なのか、MFCが悪さしているのか、ライブラリモードでの仕様なのかバグなのか不明なため報告させていただきました。

 独り言: MFCでのアプリの動作が関係してそう.テキストウィンドウの動作には自分でも怪しいと思われるところが実はまだ残ってる(複数ウィンドウ生成時に画面にゴミが残ったりする).別スレッドから関数が呼ばれたときの処理に原因があるような気がする.