Member 13086649 Ответов: 1

Я хочу показать индикатор выполнения операции управления списком заполнения. Есть ли какой-нибудь способ сделать это?


Я должен заполнить элемент управления списком некоторыми данными. для этого я хочу показать индикатор выполнения. То
диалог, созданный для индикатора выполнения, не является модальным.

Что я уже пробовал:

if(!m_statusDlg)
	{
		m_statusDlg = new CStatusWindowDlg;
		m_statusDlg->Create(IDD_STATUS_WINDOW);
	}

	//m_statusDlg->Create(IDD_STATUS_WINDOW);
	m_statusDlg->ShowWindow(SW_SHOW);
	m_statusDlg->setFileName(m_LDNFileListCtrl.GetItemText(m_LDNFileListCtrl.GetSelectionMark(),0));
	m_statusDlg->setGearBoxCount(gearBoxCount);
	m_statusDlg->UpdateData(false);
	m_statusDlg->setProgressRange(numGearBoxes);
	m_statusDlg->setProgressStep(1);

	for(int i = 0; i < gearCount; ++i)
	{
		long int mapLength = 0;
		CString gear = L"";
		gear.Format(L"Gear%d",i+1);
		gearNode->selectSingleNode(gear.AllocSysString(), &GearboxNode);

		IXMLDOMNamedNodeMapPtr attributeMap = nullptr;
		GearboxNode->get_attributes(&attributeMap);
		attributeMap->get_length(&mapLength);
		BSTR name;
		BSTR text;
		BSTR gearBoxName;
		_bstr_t b(" ");
		IXMLDOMNodePtr attr = nullptr;
		attributeMap->get_item(0, &attr);
		attr->get_text(&gearBoxName);

		for(int j = 2; j < mapLength; ++j)
		{
			m_statusDlg->increaseProgressStep();
			attributeMap->get_item(j, &attr);
			_variant_t var = attr->get_baseName(&name);
			attr->get_text(&text);
			CString completeName = L"";
			completeName = (LPCTSTR)gearBoxName ;
			completeName = completeName + L" ";
			completeName = completeName + (LPCTSTR)text;
			m_selectedGearBoxList.InsertItem(index,completeName);
			index++;
		}
	}
Я пробовал резьбу, но она не давала желаемого результата. Индикатор выполнения показывает только начальное состояние, оно не увеличивается.

Michael_Davies

Покажите свой код, никто не может даже попытаться угадать, что не так, не видя кода.

Member 13086649

Спасибо за ответ. Я опубликовал свой код без использования потока.

1 Ответов

Рейтинг:
1

Member 13086649

if(!m_statusDlg)
	{
		m_statusDlg = new CStatusWindowDlg;
		m_statusDlg->Create(IDD_STATUS_WINDOW);
	}

	//m_statusDlg->Create(IDD_STATUS_WINDOW);
	m_statusDlg->ShowWindow(SW_SHOW);
	m_statusDlg->setFileName(m_LDNFileListCtrl.GetItemText(m_LDNFileListCtrl.GetSelectionMark(),0));
	m_statusDlg->setGearBoxCount(gearBoxCount);
	m_statusDlg->UpdateData(false);
	m_statusDlg->setProgressRange(numGearBoxes);
	m_statusDlg->setProgressStep(1);

	for(int i = 0; i < gearCount; ++i)
	{
		long int mapLength = 0;
		CString gear = L"";
		gear.Format(L"Gear%d",i+1);
		gearNode->selectSingleNode(gear.AllocSysString(), &GearboxNode);

		IXMLDOMNamedNodeMapPtr attributeMap = nullptr;
		GearboxNode->get_attributes(&attributeMap);
		attributeMap->get_length(&mapLength);
		BSTR name;
		BSTR text;
		BSTR gearBoxName;
		_bstr_t b(" ");
		IXMLDOMNodePtr attr = nullptr;
		attributeMap->get_item(0, &attr);
		attr->get_text(&gearBoxName);

		for(int j = 2; j < mapLength; ++j)
		{
			m_statusDlg->increaseProgressStep();
			attributeMap->get_item(j, &attr);
			_variant_t var = attr->get_baseName(&name);
			attr->get_text(&text);
			CString completeName = L"";
			completeName = (LPCTSTR)gearBoxName ;
			completeName = completeName + L" ";
			completeName = completeName + (LPCTSTR)text;
			m_selectedGearBoxList.InsertItem(index,completeName);
			index++;
		}
	}