block UI控件如果有RetainValue属性,就用这个属性。没有这个属性可以参考下面这种方法。以矢量控件为例:
1.在apply_cb回调中,将控件值保存到文本中
double TopForTextDir[3] = { 0.0,0.0,0.0 }; Vector3d vec = this->vector0->GetProperties()->GetVector("Vector"); TopForTextDir[0] = vec.X; TopForTextDir[1] = vec.Y; TopForTextDir[2] = vec.Z; string strFile = "D:\\马赛克\\temp\\k_cam_BoosCupFace_vector0.temp"; FILE *fp = NULL; errno_t err = fopen_s(&fp, strFile.c_str(), "w"); fprintf(fp, "%f,%f,%f", TopForTextDir[0], TopForTextDir[1], TopForTextDir[2]); fclose(fp);
2.在initialize_cb回调中,从文本中读取,设置控件值
string strFile = "D:\\马赛克\\temp\\k_cam_BoosCupFace_vector0.temp"; FILE *fp = NULL; errno_t err = fopen_s(&fp, strFile.c_str(), "r"); if (fp != NULL) { char szLineContentTemp[501] = ""; fgets(szLineContentTemp, 500, fp); if (strlen(szLineContentTemp) > 3) { if (szLineContentTemp[strlen(szLineContentTemp) - 1] == '\n') szLineContentTemp[strlen(szLineContentTemp) - 1] = '\0'; string strLineTemp = szLineContentTemp; if (strLineTemp.find(",") != strLineTemp.npos) { vector<string> vecTemp; splitString(strLineTemp, vecTemp, ","); if (vecTemp.size() == 3) { double douDir[3] = { 0.0,0.0,0.0 }; douDir[0] = atof(vecTemp[0].c_str()); douDir[1] = atof(vecTemp[1].c_str()); douDir[2] = atof(vecTemp[2].c_str()); Vector3d vecDir(douDir[0], douDir[1], douDir[2]); this->vector0->GetProperties()->SetVector("Vector", vecDir); } } } } fclose(fp);
其他方法,先记录一下以后再说吧:
你把值读出来,写到部件属性里,在打开工具对话框去部件属性里读出来啊
除了这个方法还有方法,自己做个UDO把那个值 自定义数据管理起来
UDO 再次弹出对话框的时候,就把那个值 显示到 对话框里了