[Windows11, MinGW g++ 9.2.0, Visual C++17, FLTK 1.3.8, Visual Studio 2022]
GUIのタブ内ボタンを押すとアプリが落ちてしまう不具合に対策を施しました。
原因はまたしても文字化けです。要素が日本語のvectorについて文字列比較でインデックス番号を取得しようとしても、文字化けのためできませんでした。
文字化けを解決するとなると泥沼に陥りそうなので、インデックス番号の取得方法自体を変えました。元々が外部関数に頼るという筋の良くない方法ですし、FLTKで適切な関数を見つけるいいタイミングでした。
void getColor(Fl_Widget*, long num) {
cout << "num " << num << endl;
Fl_Widget* tab = tabs->value();
int tab_num = tabs->find(tab);
cout << "tab_num " << tab_num << endl;
// 修正前
// const char* lbl = tab->label();
// cout << "lbl " << lbl << endl;
// string lbl_str = (string)lbl;
// int tab_num = fcs.getIndex(tab_names, lbl_str); // 文字列比較する外部関数
// cout << "tab_num " << tab_num << endl;
<以下略>
}