// LayerHeightView.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "EtWorldPainter.h" #include "LayerHeightView.h" #include "TEtWorld.h" #include "TEtWorldSector.h" #include "UserMessage.h" #include "FileServer.h" #include "ImagePrevDlg.h" // CLayerHeightView IMPLEMENT_DYNCREATE(CLayerHeightView, CFormView) CLayerHeightView::CLayerHeightView() : CFormView(CLayerHeightView::IDD) { m_pdcBitmap = NULL; m_pmemDC = NULL; m_bLButtonDown = false; m_bDrawPoint = false; m_pCurAction = NULL; m_pContextMenu = new CMenu; m_pContextMenu->LoadMenu( IDR_CONTEXTMENU ); } CLayerHeightView::~CLayerHeightView() { SAFE_DELETE( m_pContextMenu ); SAFE_DELETE( m_pCurAction ); DeleteMemDC(); } void CLayerHeightView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); DDX_Control(pDX, IDC_STATIC_PREV, m_PrevStatic); } BEGIN_MESSAGE_MAP(CLayerHeightView, CFormView) ON_WM_PAINT() ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_MOUSEMOVE() ON_WM_ERASEBKGND() ON_WM_CONTEXTMENU() ON_COMMAND(ID_LAYERHEIGHT_IMPORTTEXTURE, &CLayerHeightView::OnLayerheightImporttexture) ON_COMMAND(ID_LAYERHEIGHT_EXPORTTEXTURE, &CLayerHeightView::OnLayerheightExporttexture) ON_WM_CREATE() ON_COMMAND(ID_RELOAD, &CLayerHeightView::OnReload) ON_WM_SIZE() END_MESSAGE_MAP() // CLayerHeightView Áø´ÜÀÔ´Ï´Ù. #ifdef _DEBUG void CLayerHeightView::AssertValid() const { CFormView::AssertValid(); } #ifndef _WIN32_WCE void CLayerHeightView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } #endif #endif //_DEBUG // CLayerHeightView ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. void CLayerHeightView::UpdateHeightPreview() { Invalidate(); } void CLayerHeightView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. // ±×¸®±â ¸Þ½ÃÁö¿¡ ´ëÇØ¼­´Â CFormView::OnPaint()À»(¸¦) È£ÃâÇÏÁö ¸¶½Ê½Ã¿À. SectorIndex Index = CGlobalValue::GetInstance().m_SelectGrid; if( Index == -1 ) return; CTEtWorldSector *pSector = CTEtWorld::GetInstance().GetSector( Index ); if( pSector == NULL ) return; CreateMemDC(); CBitmap *pOldBitmap; CRect rcRect; m_PrevStatic.GetClientRect( &rcRect ); pOldBitmap = m_pmemDC->SelectObject( m_pdcBitmap ); // Draw memDC m_pmemDC->Draw3dRect( &rcRect, RGB( 100, 100, 100 ), RGB( 255, 255, 255 ) ); rcRect.DeflateRect( 1, 1, 1, 1 ); short *pHeight = pSector->GetHeightPtr(); float fUnit = 128 / 32767.f; for( int i=0; iGetTileWidthCount() / (float)rcRect.Width() * j ); int nY = (int)( pSector->GetTileHeightCount() / (float)rcRect.Height() * i ); short nHeight = pHeight[ nY * pSector->GetTileWidthCount() + nX ]; int nValue = 128 + (int)( pHeight[ ( nY * pSector->GetTileWidthCount() ) + nX ] * fUnit ); if( nValue > 255 ) nValue = 255; else if( nValue < 0 ) nValue = 0; m_pmemDC->SetPixel( 1+j, 1+(rcRect.Height()-i), RGB( (BYTE)nValue, (BYTE)nValue, (BYTE)nValue ) ); } } rcRect.InflateRect( 1, 1, 1, 1 ); if( m_bDrawPoint == true && CGlobalValue::GetInstance().IsCheckOutMe() ) { CRect rcCircle; float fSize = (float)( CGlobalValue::GetInstance().m_nBrushDiameter * pSector->GetTileSize() ) / 100.f; float fWidth = rcRect.Width() / (float)CTEtWorld::GetInstance().GetGridWidth() * fSize; float fHeight = rcRect.Height() / (float)CTEtWorld::GetInstance().GetGridHeight() * fSize; rcCircle.left = m_MousePos.x - (int)( fWidth / 2.f ); rcCircle.top = m_MousePos.y - (int)( fWidth / 2.f ); rcCircle.right = m_MousePos.x + (int)( fHeight / 2.f ); rcCircle.bottom = m_MousePos.y + (int)( fHeight / 2.f ); m_pmemDC->Ellipse( &rcCircle ); } // Blt CRect rcClientRect, rcStaticRect; GetClientRect( &rcClientRect ); ClientToScreen( &rcClientRect ); m_PrevStatic.GetClientRect( &rcStaticRect ); m_PrevStatic.ClientToScreen( &rcStaticRect ); dc.BitBlt( rcStaticRect.left - rcClientRect.left, rcStaticRect.top - rcClientRect.top, rcRect.Width(), rcRect.Height() , m_pmemDC, rcRect.left, rcRect.top, SRCCOPY ); m_pmemDC->SelectObject( pOldBitmap ); } void CLayerHeightView::CreateMemDC() { if( m_pdcBitmap || m_pmemDC ) return; m_pmemDC = new CDC; m_pdcBitmap = new CBitmap; CRect rcRect; m_PrevStatic.GetClientRect( &rcRect ); CDC *pDC = GetDC(); m_pmemDC->CreateCompatibleDC( pDC ); m_pdcBitmap->CreateCompatibleBitmap( pDC, rcRect.Width(), rcRect.Height() ); ReleaseDC( pDC ); } void CLayerHeightView::DeleteMemDC() { if( m_pdcBitmap ) { m_pdcBitmap->DeleteObject(); SAFE_DELETE( m_pdcBitmap ); } if( m_pmemDC ) { m_pmemDC->DeleteDC(); SAFE_DELETE( m_pmemDC ); } } void CLayerHeightView::OnInitialUpdate() { CFormView::OnInitialUpdate(); // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù. m_PrevStatic.ShowWindow( SW_HIDE ); Invalidate(); } void CLayerHeightView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. CFormView::OnLButtonDown(nFlags, point); m_bLButtonDown = true; ProcessMouseRect( point ); if( m_bDrawPoint == true ) { ApplyHeight(); } else FinishApplyHeight(); Invalidate(); } void CLayerHeightView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. m_bLButtonDown = false; m_bDrawPoint = false; FinishApplyHeight(); Invalidate(); CFormView::OnLButtonUp(nFlags, point); } void CLayerHeightView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. CFormView::OnMouseMove(nFlags, point); if( m_bLButtonDown == true ) { ProcessMouseRect( point ); if( m_bDrawPoint == true ) { ApplyHeight(); } Invalidate(); } } void CLayerHeightView::ApplyHeight() { if( CGlobalValue::GetInstance().IsCheckOutMe() == false ) return; SectorIndex Index = CGlobalValue::GetInstance().m_SelectGrid; if( Index == -1 ) return; CTEtWorldSector *pSector = CTEtWorld::GetInstance().GetSector( Index ); if( pSector == NULL ) return; CRect rcClientRect, rcStaticRect, rcRect; GetClientRect( &rcClientRect ); ClientToScreen( &rcClientRect ); m_PrevStatic.GetClientRect( &rcStaticRect ); m_PrevStatic.ClientToScreen( &rcStaticRect ); rcRect.left = rcStaticRect.left - rcClientRect.left; rcRect.top = rcStaticRect.top - rcClientRect.top; rcRect.right = rcRect.left + rcStaticRect.Width(); rcRect.bottom = rcRect.top + rcStaticRect.Height(); rcRect.DeflateRect( 1, 1, 1, 1 ); int nX = (int)( ( pSector->GetTileWidthCount() / (float)rcRect.Width() ) * m_MousePos.x ); int nY = (int)( (float)pSector->GetTileHeightCount() - ( ( pSector->GetTileHeightCount() / (float)rcRect.Height() ) * m_MousePos.y ) ); int nModifyType = CGlobalValue::GetInstance().m_nBrushType; if( nModifyType == 0 && GetAKState( VK_LCONTROL ) < 0 ) nModifyType = -1; else if( nModifyType == 2 && GetAKState( VK_LCONTROL ) < 0 ) nModifyType = -2; if( m_pCurAction == NULL ) { m_pCurAction = new CActionElementBrushHeight( pSector ); m_pCurAction->SetDesc( "Edit Height - Preview" ); ((CActionElementBrushHeight*)m_pCurAction)->BeginModify(); } pSector->ApplyHeight( nX, nY, CGlobalValue::GetInstance().m_nBrushDiameter * pSector->GetTileSize(), CGlobalValue::GetInstance().m_fBrushHardness, CGlobalValue::GetInstance().m_fBrushStrong * 2500.f, CGlobalValue::GetInstance().m_rHeight, CGlobalValue::GetInstance().m_rRadian, nModifyType, false ); CGlobalValue::GetInstance().RefreshRender(); CGlobalValue::GetInstance().SetModify(); } void CLayerHeightView::FinishApplyHeight() { if( CGlobalValue::GetInstance().IsCheckOutMe() == false ) return; SectorIndex Index = CGlobalValue::GetInstance().m_SelectGrid; if( Index == -1 ) return; CTEtWorldSector *pSector = CTEtWorld::GetInstance().GetSector( Index ); if( pSector == NULL ) return; if( m_pCurAction ) { if( ((CActionElementBrushHeight*)m_pCurAction)->FinishModify() == true ) { ((CActionElementBrushHeight*)m_pCurAction)->AddAction(); m_pCurAction = NULL; } else SAFE_DELETE( m_pCurAction ); } pSector->ResetUpdateInfo(); CGlobalValue::GetInstance().RefreshRender(); } void CLayerHeightView::ProcessMouseRect( CPoint point ) { CRect rcClientRect, rcStaticRect, rcRect; GetClientRect( &rcClientRect ); ClientToScreen( &rcClientRect ); m_PrevStatic.GetClientRect( &rcStaticRect ); m_PrevStatic.ClientToScreen( &rcStaticRect ); rcRect.left = rcStaticRect.left - rcClientRect.left; rcRect.top = rcStaticRect.top - rcClientRect.top; rcRect.right = rcRect.left + rcStaticRect.Width(); rcRect.bottom = rcRect.top + rcStaticRect.Height(); rcRect.DeflateRect( 1, 1, 1, 1 ); if( point.x < rcRect.left || point.x > rcRect.right || point.y < rcRect.top || point.y > rcRect.bottom ) { m_bDrawPoint = false; } else { m_bDrawPoint = true; } point.x -= rcRect.left; point.y -= rcRect.top; m_MousePos = point; } BOOL CLayerHeightView::OnEraseBkgnd(CDC* pDC) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. CRect rcRectStatic, rcRect, rcClientRect, rcStaticRect; GetClientRect( &rcClientRect ); ClientToScreen( &rcClientRect ); m_PrevStatic.GetClientRect( &rcStaticRect ); m_PrevStatic.ClientToScreen( &rcStaticRect ); rcRectStatic.left = rcStaticRect.left - rcClientRect.left; rcRectStatic.top = rcStaticRect.top - rcClientRect.top; rcRectStatic.right = rcRectStatic.left + rcStaticRect.Width(); rcRectStatic.bottom = rcRectStatic.top + rcStaticRect.Height(); GetClientRect( &rcRect ); rcRect.right = rcRectStatic.left; pDC->FillSolidRect( &rcRect, GetSysColor(COLOR_ACTIVEBORDER) ); GetClientRect( &rcRect ); rcRect.left = rcRectStatic.right; pDC->FillSolidRect( &rcRect, GetSysColor(COLOR_ACTIVEBORDER) ); GetClientRect( &rcRect ); rcRect.bottom = rcRectStatic.top; pDC->FillSolidRect( &rcRect, GetSysColor(COLOR_ACTIVEBORDER) ); GetClientRect( &rcRect ); rcRect.top = rcRectStatic.bottom; pDC->FillSolidRect( &rcRect, GetSysColor(COLOR_ACTIVEBORDER) ); return TRUE; // return CFormView::OnEraseBkgnd(pDC); } void CLayerHeightView::OnContextMenu(CWnd* /*pWnd*/, CPoint point) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. if( CFileServer::GetInstance().IsConnect() == false ) return; if( CGlobalValue::GetInstance().IsCheckOutMe() == false ) return; CMenu *pSubMenu = m_pContextMenu->GetSubMenu(2); pSubMenu->EnableMenuItem( ID_LAYERHEIGHT_IMPORTTEXTURE, MF_BYCOMMAND | MF_ENABLED ); pSubMenu->EnableMenuItem( ID_LAYERHEIGHT_EXPORTTEXTURE, MF_BYCOMMAND | MF_ENABLED ); pSubMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this ); } void CLayerHeightView::OnLayerheightImporttexture() { SectorIndex Index = CGlobalValue::GetInstance().m_SelectGrid; if( Index == -1 ) return; CTEtWorldSector *pSector = CTEtWorld::GetInstance().GetSector( Index ); if( pSector == NULL ) return; // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CString szFileList; TCHAR szFilter[] = _T( "All Support File(*.dds;*.tga;*.jpg;*.bmp)|*.dds;*.tga;*.jpg;*.bmp|DirectX Texture File (*.dds)|*.dds|Bitmap File (*.bmp)|*.bmp|Tga File (*.tga)|*.tga|Jpeg Texture File (*.jpg)|*.jpg|Png Texture File (*.png)|*.png|All Files (*.*)|*.*||" ); CImagePrevDlg dlg(TRUE, _T("dds;tga;jpg;bmp;png"), _T("*.dds;*.tga;*.jpg;*.bmp;*.png"), OFN_FILEMUSTEXIST| OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_ENABLESIZING, szFilter ); if( dlg.DoModal() != IDOK ) return; ImportHeight( dlg.GetChannelOption(), dlg.GetPathName(), dlg.IsSwapBit(), dlg.GetCenter(), dlg.GetMin(), dlg.GetMax(), pSector ); Invalidate(); pSector->ResetUpdateInfo(); CGlobalValue::GetInstance().RefreshRender(); CGlobalValue::GetInstance().SetModify(); } void CLayerHeightView::ImportHeight( int nChannelOption, LPCSTR szPathName, bool bSwapBit, int nCenter, int nMin, int nMax, CTEtWorldSector *pSector ) { LPDIRECT3DTEXTURE9 pTexture; D3DXIMAGE_INFO Info; D3DLOCKED_RECT rc; D3DSURFACE_DESC sd; HRESULT hResult; D3DXGetImageInfoFromFile( szPathName, &Info ); if( nChannelOption < 7 ) hResult = D3DXCreateTextureFromFileEx( (LPDIRECT3DDEVICE9)GetEtDevice()->GetDevicePtr(), szPathName, Info.Width, Info.Height, 1, 0, D3DFMT_R8G8B8, D3DPOOL_SYSTEMMEM, D3DX_FILTER_TRIANGLE, D3DX_DEFAULT, 0, NULL, NULL, &pTexture ); else hResult = D3DXCreateTextureFromFileEx( (LPDIRECT3DDEVICE9)GetEtDevice()->GetDevicePtr(), szPathName, Info.Width, Info.Height, 1, 0, D3DFMT_A16B16G16R16, D3DPOOL_SYSTEMMEM, D3DX_FILTER_TRIANGLE, D3DX_DEFAULT, 0, NULL, NULL, &pTexture ); if( FAILED( hResult ) ) { MessageBox( "¿¡·¯", "¸øÀоî¿Ô»ï", MB_OK ); return; } float fMinRatio = 1 / 32767.f * (float)-nMin; float fMaxRatio = 1 / 32767.f * (float)nMax; pTexture->GetLevelDesc( 0, &sd ); pTexture->LockRect( 0, &rc, NULL, D3DLOCK_READONLY ); DWORD *pSource; DWORD *pRowSource = (DWORD*)rc.pBits; DWORD dwColor; short *pHeight = new short[ Info.Width * Info.Height ]; BYTE r,g,b,a; BYTE Sample[2]; int nTemp; for( int j=0; j<(int)sd.Height; j++ ) { pSource = pRowSource; for( int k=0; k<(int)sd.Width; k++ ) { dwColor = *pSource; if( nChannelOption < 7 ) { r = (BYTE)( ( dwColor << 8 ) >> 24 ); g = (BYTE)( ( dwColor << 16) >> 24 ); b = (BYTE)( ( dwColor << 24 ) >> 24 ); a = (BYTE)( dwColor >> 24 ); switch( nChannelOption ) { case 0: Sample[0] = r; break; case 1: Sample[0] = g; break; case 2: Sample[0] = b; break; case 3: Sample[0] = a; break; case 4: Sample[0] = r, Sample[1] = g; break; case 5: Sample[0] = g, Sample[1] = b; break; case 6: Sample[0] = r, Sample[1] = b; break; } if( nChannelOption < 4 ) nTemp = -32767 + ( Sample[0] * 256 ); else { if( bSwapBit ) _Swap( Sample[0], Sample[1] ); nTemp = -32767 + ( ( (int)Sample[0] << 8 ) + Sample[1] ); } if( nTemp > 0 ) nTemp = (int)( nTemp * fMaxRatio ); else if( nTemp < 0 ) nTemp = (int)( nTemp * fMinRatio ); pHeight[ (sd.Height-j-1) * (int)sd.Width + k ] = (short)nTemp; } else { pSource++; DWORD dwColor2 = *pSource; switch( nChannelOption ) { case 7: nTemp = ( (int)( dwColor << 16 ) >> 16 ); break; case 8: nTemp = (int)( (dwColor >> 16) ); break; case 9: nTemp = ( (int)( dwColor2 << 16 ) >> 16 ); break; } pHeight[ (sd.Height-j-1) * (int)sd.Width + k ] = -32768 + nTemp; } pSource++; } pRowSource += rc.Pitch / 4; } pTexture->UnlockRect(0); SAFE_RELEASE( pTexture ); pSector->ApplyHeight( CRect( 0, 0, pSector->GetTileWidthCount() , pSector->GetTileHeightCount() ), Info.Width, Info.Height, pHeight, 1.f ); SAFE_DELETEA( pHeight ); #ifdef _TOOLCOMPILE m_nChannelOption = nChannelOption; m_szPathName = szPathName; m_bSwapBit = bSwapBit; m_nCenter = nCenter; m_nMin = nMin; m_nMax = nMax; #endif } void CLayerHeightView::OnLayerheightExporttexture() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. SectorIndex Index = CGlobalValue::GetInstance().m_SelectGrid; if( Index == -1 ) return; CTEtWorldSector *pSector = CTEtWorld::GetInstance().GetSector( Index ); if( pSector == NULL ) return; // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CString szFileList; TCHAR szFilter[] = _T( "All Support File(*.dds;*.tga;*.jpg;*.bmp)|*.dds;*.tga;*.jpg;*.bmp|DirectX Texture File (*.dds)|*.dds|Bitmap File (*.bmp)|*.bmp|Tga File (*.tga)|*.tga|Jpeg Texture File (*.jpg)|*.jpg|Png Texture File (*.png)|*.png|All Files (*.*)|*.*||" ); CImagePrevDlg dlg(FALSE, _T("dds;tga;jpg;bmp;png"), _T("*.dds;*.tga;*.jpg;*.bmp;*.png"), OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_ENABLESIZING, szFilter ); dlg.SetExportMode(); if( dlg.DoModal() != IDOK ) return; short *pHeight = pSector->GetHeightPtr(); int nWidth = pSector->GetTileWidthCount(); int nHeight = pSector->GetTileHeightCount(); LPDIRECT3DTEXTURE9 pTexture; HRESULT hr = D3DXCreateTexture( (LPDIRECT3DDEVICE9)GetEtDevice()->GetDevicePtr(), nWidth, nHeight, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &pTexture ); if( FAILED(hr) ) { MessageBox( "ÅØ½ºÃÄ ¹öÆÛ¸¦ »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù.", "¿¡·¯", MB_OK ); return; } D3DSURFACE_DESC sd; D3DLOCKED_RECT rc; pTexture->GetLevelDesc( 0, &sd ); pTexture->LockRect( 0, &rc, NULL, D3DLOCK_READONLY ); DWORD *pSource; DWORD *pRowSource = (DWORD*)rc.pBits + ( ( rc.Pitch / 4 ) * ( sd.Height - 1 ) ); short nValue; BYTE Color; for( int j=0; jUnlockRect( 0 ); D3DXIMAGE_FILEFORMAT fmt; if( _stricmp( dlg.GetFileExt(), "bmp" ) == NULL ) fmt = D3DXIFF_BMP; else if( _stricmp( dlg.GetFileExt(), "tga" ) == NULL ) fmt = D3DXIFF_TGA; else if( _stricmp( dlg.GetFileExt(), "jpg" ) == NULL ) fmt = D3DXIFF_JPG; else if( _stricmp( dlg.GetFileExt(), "png" ) == NULL ) fmt = D3DXIFF_PNG; else if( _stricmp( dlg.GetFileExt(), "dds" ) == NULL ) fmt = D3DXIFF_DDS; hr = D3DXSaveTextureToFile( dlg.GetPathName(), fmt, pTexture, NULL ); if( FAILED(hr) ) { MessageBox( "ÀúÀå ½ÇÆÐÇÏ¿´½À´Ï´Ù!!", "¿¡·¯", MB_OK ); } SAFE_RELEASE( pTexture ); } int CLayerHeightView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFormView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ ÀÛ¼º Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_wndToolBar.CreateToolBar(WS_VISIBLE|WS_CHILD|CBRS_TOOLTIPS, this); m_wndToolBar.LoadToolBar(IDR_RELOAD); m_wndToolBar.GetControls()->SetControlType( 0, xtpControlButton ); return 0; } void CLayerHeightView::OnReload() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. SectorIndex Index = CGlobalValue::GetInstance().m_SelectGrid; if( Index == -1 ) return; CTEtWorldSector *pSector = CTEtWorld::GetInstance().GetSector( Index ); if( pSector == NULL ) return; bool bReload = false; #ifdef _TOOLCOMPILE if( !m_szPathName.empty() ) bReload = true; #endif if( !bReload ) return; #ifdef _TOOLCOMPILE ImportHeight( m_nChannelOption, m_szPathName.c_str(), m_bSwapBit, m_nCenter, m_nMin, m_nMax, pSector ); #endif Invalidate(); pSector->ResetUpdateInfo(); CGlobalValue::GetInstance().RefreshRender(); } void CLayerHeightView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. if( m_wndToolBar.GetSafeHwnd() ) { CSize sz = m_wndToolBar.CalcDockingLayout(cx, LM_HORZDOCK | LM_HORZ | LM_COMMIT); m_wndToolBar.MoveWindow(0, 0, cx, sz.cy); m_wndToolBar.Invalidate(FALSE); } }