[C++] 31 FLTK:子ウィジェットの座標

[M1 Mac, Big Sur 11.6.5, FLTK 1.3.8, OpenCV 4.5.5]

自製したモーダルダイアログの位置設定に苦労しました。

親ウィンドウを指定したものの相対位置を設定する方法が分からず、仕方ないのでルートを把握しこれに加減して座標を定めました。

ただこの方法では親ウィンドウを動かしても子ウィンドウの位置は変わらずです。あくまでも応急措置になります。

とある大学の研究室がモーダルダイアログ作成のコード例を公開しており、最初はこれを参考にしましたが結局大半は自分で書く形になりました。

難解なC++を使ってコンピュータシミュレーションを研究するというのはさぞかし大変なことでしょう。

2022/4/6追記:
デモアプリの動作を確認したところ、子ウィンドウは親ウィンドウの相対位置を取れていませんでした。もしかしたら出来ない仕様なのかもしれません。
2022/7/28追記:
親ウインドウのルートから子ウィンドウの相対位置を設定できました。以下の記事に記しました。

<該当部分のみ>

dlg = new modalDialog(300, 150, "", "Attention");
        dlg->hotspot(window);
        int x = dlg->x_root();
        int y = dlg->y_root();
        cout<<"x_root "<< x <<" y_root "<< y <<endl;
        dlg->resize(x-10,y+110,300,150);
        dlg->set_modal();
        dlg->show();