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; }
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; }