LRESULT Git05_CBCGPPropBar::OnPropertySelected(WPARAM /*wp*/, LPARAM lp)
{
		CBCGPProp* pProp = (CBCGPProp*)lp;
		ASSERT_VALID(pProp);
		auto parent = pProp->GetParent();
		if (parent)
		{
			CBCGPProp* group = parent->GetParent();

			if (group)
			{
				CString group_name = group->GetName();

				if (group_name == L"Statistics")
				{
					
					CBCGPProp* shaGroup = m_wndPropList.GetProperty(2);
					CBCGPProp* shaProp = shaGroup->GetSubItem(1);
					CString sha = shaProp->GetValue();
					CMainFrame *pMainWnd = static_cast<CMainFrame*>(AfxGetMainWnd());
					CString file = pProp->GetName();
					pMainWnd->display_info_for_diffed_file(sha, file);
				}
			}
		}
		return 0;
}
示例#2
0
BOOL CRasterPropPage::OnApply()
{
	if(!m_wndPropList)
		return FALSE;

	CBCGPProp* pProp = m_wndPropList.GetProperty(0);
	int nCount = pProp->GetSubItemsCount();
	std::string str = _T("波段组合");
	CBCGPProp* pSubProp = NULL;
	for (int i=0; i<nCount; i++)
	{
		pSubProp = pProp->GetSubItem(i);
		if (0 == strcmp(str.c_str(),pSubProp->GetName()))
		{
			break;
		}
	}
	//
	Carto::CRasterLayer* pRasLayer = dynamic_cast<Carto::CRasterLayer*>(m_player);

	Carto::IRasterRenderPtr pRender =pRasLayer->GetRender();
	Carto::RASTER_RENDER_TYPE rendertype =pRender->GetRenderType();

	if(rendertype != Carto::RASTER_RGBRENDER)
		return FALSE;

	Carto::CRasterRGBRender* pRGBRender = dynamic_cast<Carto::CRasterRGBRender*>(pRasLayer->GetRender().get());
	if (pRGBRender->GetRGBMode())
	{
		pRGBRender->SetRedBandIndex(long(pSubProp->GetSubItem(0)->GetValue()));
		pRGBRender->SetGreenBandIndex(long(pSubProp->GetSubItem(1)->GetValue()));
		pRGBRender->SetBlueBandIndex(long(pSubProp->GetSubItem(2)->GetValue()));
	}

	std::string strColormap = _T("调色板");
	pSubProp = NULL;
	bool bfind=false;
	for (int i=0; i<nCount; i++)
	{
		pSubProp = pProp->GetSubItem(i);
		if (0 == strcmp(strColormap.c_str(),pSubProp->GetName()))
		{
			bfind=true;
			break;
		}
	}

	if (!bfind)
		return TRUE;
	Geodatabase::IRasterDatasetPtr pRaster = m_player->GetDataObject();

	BYTE byRed[256];
	BYTE byGreen[256];
	BYTE byBlue[256];
	for (int i=0; i<256; i++)
	{
		long lValue = pSubProp->GetSubItem(i)->GetValue();
		byRed[i] = GetRValue(lValue);
		byGreen[i] = GetGValue(lValue);
		byBlue[i] = GetBValue(lValue);
	}
	pRaster->SetChannelPalette(1,byRed,byGreen,byBlue);
	

	return TRUE;
}