0

ユーザーの画面上の特定の位置に gnuplot グラフを移動する必要がある C# アプリケーションを作成しています。これを行うために、DllImport を使用していくつかの関数をプログラムに取り込みます。具体的には、FindWindowByCaption と MoveWindow およびその他のいくつかです。これまでのところうまくいきましたが、突然グラフが動かなくなりました。

グラフの生成に時間がかかっていることがわかり、ウィンドウが作成される前に MoveWindow 関数を実行しようとするため、ウィンドウは実際には移動されません。以前のバージョンのコードでは問題がなかったので、なぜこれが問題になるのかはわかりません。

何らかの理由で、FindWindowByCaption 関数は、ウィンドウが実際に存在する前にウィンドウ ハンドルを見つけます。

適切なハンドルが見つかるまで実行を試みるループ内にウィンドウ検索関数があります。グラフごとに名前が変わります。

IntPtr windowId = IntPtr.Zero;
        while (windowId == IntPtr.Zero)//keeps trying to get the id until it has it
            windowId = FindWindowByCaption(IntPtr.Zero, "p " + polyValue + " s " + (dataLocation + 1));

なんらかの理由で、gnuplot グラフが実際に作成される前にハンドルを見つけてしまい、MoveWindow 関数をすぐに実行しようとするため、グラフが実際に作成されたときに正しい場所に移動しません。

どんな提案も役に立ちます

ありがとう、

-ジェイク

4

0 に答える 0