ProParameter*p_data;
void CANCEL_Action(char*, char*, ProAppData);
void AddParam_Action(char*, char*, ProAppData);
void DelParam_Action(char*, char*, ProAppData);
void Regen_Action(char*, char*, ProAppData);
void Param_Value_Action(char*, char*, ProAppData);
void ParamsList_Action(char*, char*, ProAppData);
void Parm_Update(char*, char*);
void ListLabelSet(char*, char*);
void ParamsGet(ProParameter**);
ProError ParamterActionFn(ProParameter*, ProError, ProAppData);
ProError ParameterFilterFn(ProParameter*, ProError, ProAppData);
ProError ParamterActionFn(ProParameter* Param, ProError status,
ProAppData app_data)
{
ProArray* p_array;
p_array = (ProArray*)app_data;
status = ProArrayObjectAdd(p_array, PRO_VALUE_UNUSED, 1, Param);
return(PRO_TK_NO_ERROR);
}
ProError ParameterFilterFn(proparameter* Param, ProError status,
ProAppData app_data)
{
ProCharLine strtmp;
ProWstringToString(strtmp, Param->id);
if (strcmp(strtmp, "DESCRIPTION") == 0 || strcmp(strtmp, "MODELED_BY") == 0)
return (PRO_TK_CONTINUE);
else
return(PRO_TK_NO_ERROR);
}
加载窗体事件
BOOL CMyNewDlg3::OnInitDialog()
{
CDialogEx::OnInitDialog();
SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
ProError status;
ProError err;
ProMdl model;
ProMdlType mdl_type;
ProParamvalue value;
ProName wstrValue, wstrType;
CStringW temp;
CStringW temp2;
int count;
char** names;
wchar_t** labels;
ProCharLine strtmp;
ProCharLine strtmp2;
status = ProMdlCurrentGet(&model);
if (status != PRO_TK_NO_ERROR) {
return status;
}
ProMdlTypeGet(model, &mdl_type);
DWORD dwStyle = m_reportlist3.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;
dwStyle |= LVS_EX_GRIDLINES;
m_reportlist3.SetExtendedStyle(dwStyle);
m_reportlist3.InsertColumn(0, _T("序号"), LVCFMT_RIGHT, 25, 50);
m_reportlist3.InsertColumn(1, _T("名称"), LVCFMT_LEFT, 120, 50);
m_reportlist3.InsertColumn(2, _T("图号"), LVCFMT_RIGHT, 120, 50);
m_reportlist3.InsertColumn(3, _T("型号规格"), LVCFMT_LEFT, 120, 50);
m_reportlist3.InsertColumn(4, _T("数量"), LVCFMT_LEFT, 120, 50);
ProModelitem modelitem;
status = ProMdlToModelitem(model, &modelitem);
status = ProArrayAlloc(0, sizeof(ProParameter), 1, (ProArray*)&p_data);
status = ProParameterVisit(&modelitem,
(ProParameterFilter)ParameterFilterFn,
(ProParameterAction)ParamterActionFn, &p_data);
status = ProArraySizeGet((ProArray)p_data, &count);
ProArrayAlloc(count, sizeof(wchar_t*), 1, (ProArray*)&labels);
ProArrayAlloc(count, sizeof(char*), 1, (ProArray*)&names);
CString temp_value;
temp_value.Format(_T("%d"), count);
AfxMessageBox(temp_value);
for (int i = 0; i < count; i++)
{
int n = i + 1;
temp2.Format(_T("%d"), n);
names[i] = (char*)calloc(PRO_NAME_SIZE, sizeof(char));
labels[i] = (wchar_t*)calloc(PRO_NAME_SIZE, sizeof(wchar_t));
if (mdl_type == PRO_MDL_ASSEMBLY)
labels[i] = p_data[i].id;
if (mdl_type == PRO_MDL_PART)
labels[i] = p_data[i].id;
temp = labels[i];
m_reportlist3.InsertItem(i, temp2);
m_reportlist3.SetItemText(i, 1, temp);
}
ProArrayFree((ProArray*)&p_data);
ProArrayFree((ProArray*)&temp);
ProArrayFree((ProArray*)&temp2);
ProArrayFree((ProArray*)&labels);
ProArrayFree((ProArray*)&names);
return TRUE;
}