void MFVec2f::setValue(CVRMLFieldData *data) { if (!data) return; if (data->getFieldType() != FLOAT_ARRAY_DATA) return; CVRMLFloatArrayData *a = (CVRMLFloatArrayData *)data; float x, y; x = 0.0f; y = 0.0f; m_values.clear(); for (int i=0; i<a->count(); i++) { int j = (i % 2); switch (j) { case 0: x = a->getValue(i); break; case 1: y = a->getValue(i); SFVec2f vec; vec.setValue(x, y); m_values.push_back(vec); x = 0.0f; y = 0.0f; break; } } }
void DialogSFVec2fConfig::OnOK() { // TODO: この位置にその他の検証用のコードを追加してください SFVec2f *field = (SFVec2f *)getField(); char string[256]; float x, y; GetDlgItemText(IDC_XVALUE, string, 255); if (sscanf(string, "%f", &x) == 1) { GetDlgItemText(IDC_YVALUE, string, 255); if (sscanf(string, "%f", &y) == 1) field->setValue(x, y); } CDialog::OnOK(); }
BOOL DialogSFVec2fConfig::OnInitDialog() { CDialog::OnInitDialog(); // TODO: この位置に初期化の補足処理を追加してください setTitle(this); char value[256]; SFVec2f *field = (SFVec2f *)getField(); sprintf(value, "%g", field->getX()); SetDlgItemText(IDC_XVALUE, value); sprintf(value, "%g", field->getY()); SetDlgItemText(IDC_YVALUE, value); return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります // 例外: OCX プロパティ ページの戻り値は FALSE となります }