获取当前模型所有参数,在List Control显示2(不调用函数)

//参数清单 
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();

	// TODO:  在此添加额外的初始化
	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;
	//proparameter* p_data;
	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);

	//获得当前模型所有参数
	//ParamsGet(&p_data);
	ProModelitem modelitem;
	status = ProMdlToModelitem(model, &modelitem);
	//数组分配内存
	status = ProArrayAlloc(0, sizeof(ProParameter), 1, (ProArray*)&p_data);
	status = ProParameterVisit(&modelitem,
		(ProParameterFilter)ParameterFilterFn,
		(ProParameterAction)ParamterActionFn, &p_data);
	//return PRO_TK_NO_ERROR;
	//获得参数总数
	
	//ProWstringToString(strtmp, p_data[i].id);

	status = ProArraySizeGet((ProArray)p_data, &count);
	//count = 20;
	//数组分配内存
	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;
		//int 转 CStringW

		//CStringW temp3;
		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];
		//CStringW str(names);
		//AfxMessageBox(L"888"+temp);
		//AfxMessageBox(count);

		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;  // return TRUE unless you set the focus to a control
				  // 异常: OCX 属性页应返回 FALSE
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值