// ImagePrevDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "EtWorldPainter.h" #include "ImagePrevDlg.h" #include // CImagePrevDlg HANDLE CImagePrevDlg::s_hThreadHandle = NULL; int CImagePrevDlg::s_nThreadStatus = 0; IMPLEMENT_DYNAMIC(CImagePrevDlg, CFileDialog) CImagePrevDlg::CImagePrevDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) { m_ofn.Flags = dwFlags | OFN_EXPLORER | OFN_ENABLETEMPLATE | OFN_ENABLEHOOK; m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_IMAGEPREVDLG); memset( m_pdcBitmap, 0, sizeof(m_pdcBitmap) ); memset( m_pmemDC, 0, sizeof(m_pmemDC) ); m_nViewIndex = 0; m_nChannelOption = 0; m_bSwapBit = false; m_nCenter = m_nMin = m_nMax = 0; s_nThreadStatus = 0; m_dwThreadIndex = 0; m_bExportMode = false; } CImagePrevDlg::~CImagePrevDlg() { for( int i=0; i<5; i++ ) { SAFE_DELETE( m_pmemDC[i] ); SAFE_DELETE( m_pdcBitmap[i] ); } } BEGIN_MESSAGE_MAP(CImagePrevDlg, CFileDialog) ON_WM_MENUSELECT() ON_WM_PAINT() ON_BN_CLICKED(IDC_BUTTON2, &CImagePrevDlg::OnBnClickedColorRGB) ON_BN_CLICKED(IDC_BUTTON3, &CImagePrevDlg::OnBnClickedColorR) ON_BN_CLICKED(IDC_BUTTON9, &CImagePrevDlg::OnBnClickedColorG) ON_BN_CLICKED(IDC_BUTTON10, &CImagePrevDlg::OnBnClickedColorB) ON_BN_CLICKED(IDC_BUTTON11, &CImagePrevDlg::OnBnClickedColorA) ON_BN_CLICKED(IDC_RADIO1, &CImagePrevDlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &CImagePrevDlg::OnBnClickedRadio2) ON_BN_CLICKED(IDC_RADIO3, &CImagePrevDlg::OnBnClickedRadio3) ON_BN_CLICKED(IDC_RADIO4, &CImagePrevDlg::OnBnClickedRadio4) ON_BN_CLICKED(IDC_RADIO5, &CImagePrevDlg::OnBnClickedRadio5) ON_BN_CLICKED(IDC_RADIO6, &CImagePrevDlg::OnBnClickedRadio6) ON_BN_CLICKED(IDC_RADIO7, &CImagePrevDlg::OnBnClickedRadio7) ON_BN_CLICKED(IDC_RADIO8, &CImagePrevDlg::OnBnClickedRadio8) ON_BN_CLICKED(IDC_RADIO9, &CImagePrevDlg::OnBnClickedRadio9) ON_BN_CLICKED(IDC_RADIO10, &CImagePrevDlg::OnBnClickedRadio10) ON_BN_CLICKED(IDC_CHECK1, &CImagePrevDlg::OnBnClickedCheck1) ON_EN_CHANGE(IDC_EDIT2, &CImagePrevDlg::OnEnChangeEdit2) ON_EN_CHANGE(IDC_EDIT3, &CImagePrevDlg::OnEnChangeEdit3) ON_EN_CHANGE(IDC_EDIT7, &CImagePrevDlg::OnEnChangeEdit7) ON_WM_VSCROLL() ON_WM_DESTROY() END_MESSAGE_MAP() // CImagePrevDlg ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. BOOL CImagePrevDlg::OnInitDialog() { CFileDialog::OnInitDialog(); // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù. CButton *pButton = (CButton *)GetDlgItem( IDC_BUTTON2 ); ((CButton *)GetDlgItem( IDC_BUTTON2 ))->SetButtonStyle( BS_RADIOBUTTON ); ((CButton *)GetDlgItem( IDC_BUTTON3 ))->SetButtonStyle( BS_RADIOBUTTON ); ((CButton *)GetDlgItem( IDC_BUTTON9 ))->SetButtonStyle( BS_RADIOBUTTON ); ((CButton *)GetDlgItem( IDC_BUTTON10 ))->SetButtonStyle( BS_RADIOBUTTON ); ((CButton *)GetDlgItem( IDC_BUTTON11 ))->SetButtonStyle( BS_RADIOBUTTON ); pButton->SetCheck( BST_CHECKED ); ((CButton *)GetDlgItem( IDC_RADIO1 ))->SetCheck(1); ((CButton *)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); ((CSliderCtrl *)GetDlgItem( IDC_SLIDER1 ))->SetRange( -32767, 32767, TRUE ); ((CSliderCtrl *)GetDlgItem( IDC_SLIDER1 ))->SetPos( 0 ); ((CSliderCtrl *)GetDlgItem( IDC_SLIDER2 ))->SetRange( 0, 32767, TRUE ); ((CSliderCtrl *)GetDlgItem( IDC_SLIDER2 ))->SetPos( 0 ); ((CSliderCtrl *)GetDlgItem( IDC_SLIDER3 ))->SetRange( -32767, 0, TRUE ); ((CSliderCtrl *)GetDlgItem( IDC_SLIDER3 ))->SetPos( 0 ); DWORD nOffsetMax = 32767; DWORD nOffsetMin = -32767; char szMaxStr[16] = { 0, }; char szMinStr[16] = { 0, }; GetRegistryNumber( HKEY_CURRENT_USER, REG_SUBKEY, "GroundOffsetMax", nOffsetMax ); GetRegistryNumber( HKEY_CURRENT_USER, REG_SUBKEY, "GroundOffsetMin", nOffsetMin ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->SetWindowText( CString("0") ); _itoa_s( (int)nOffsetMax, szMaxStr, 10 ); _itoa_s( (int)nOffsetMin, szMinStr, 10 ); ((CEdit *)GetDlgItem( IDC_EDIT3 ))->SetWindowText( szMaxStr ); ((CEdit *)GetDlgItem( IDC_EDIT7 ))->SetWindowText( szMinStr ); if( m_bExportMode ) { GetDlgItem( IDC_RADIO1 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO2 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO3 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO4 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO5 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO6 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO7 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO8 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO9 )->EnableWindow( FALSE ); GetDlgItem( IDC_RADIO10 )->EnableWindow( FALSE ); GetDlgItem( IDC_CHECK1 )->EnableWindow( FALSE ); GetDlgItem( IDC_SLIDER2 )->EnableWindow( FALSE ); GetDlgItem( IDC_SLIDER3 )->EnableWindow( FALSE ); GetDlgItem( IDC_EDIT3 )->EnableWindow( FALSE ); GetDlgItem( IDC_EDIT7 )->EnableWindow( FALSE ); GetDlgItem( IDC_BUTTON2 )->EnableWindow( FALSE ); GetDlgItem( IDC_BUTTON3 )->EnableWindow( FALSE ); GetDlgItem( IDC_BUTTON9 )->EnableWindow( FALSE ); GetDlgItem( IDC_BUTTON10 )->EnableWindow( FALSE ); GetDlgItem( IDC_BUTTON11 )->EnableWindow( FALSE ); GetDlgItem( IDC_STATIC_PREV )->EnableWindow( FALSE ); } return TRUE; // return TRUE unless you set the focus to a control // ¿¹¿Ü: OCX ¼Ó¼º ÆäÀÌÁö´Â FALSE¸¦ ¹ÝÈ¯ÇØ¾ß ÇÕ´Ï´Ù. } void CImagePrevDlg::OnMenuSelect(UINT nItemID, UINT nFlags, HMENU hSysMenu) { CFileDialog::OnMenuSelect(nItemID, nFlags, hSysMenu); // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } BOOL CImagePrevDlg::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù. /* if( nID == 0 ) { if( nCode == 5176742 ) RefreshPreview(); } */ return CFileDialog::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); } BOOL CImagePrevDlg::OnCommand(WPARAM wParam, LPARAM lParam) { // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù. return CFileDialog::OnCommand(wParam, lParam); } UINT __stdcall CImagePrevDlg::BeginThread( void *pParam ) { CImagePrevDlg *pThis = (CImagePrevDlg *)pParam; if( CImagePrevDlg::s_hThreadHandle == NULL ) { pThis->s_nThreadStatus = -1; _endthreadex( 0 ); return 0; } if( CImagePrevDlg::s_nThreadStatus == 0 ) { CImagePrevDlg::s_nThreadStatus = 1; TCHAR szPath[MAX_PATH]; _stprintf_s( szPath, "%s", pThis->GetPathName().GetString() ); for( int i=0; i<5; i++ ) { SAFE_DELETE( pThis->m_pmemDC[i] ); SAFE_DELETE( pThis->m_pdcBitmap[i] ); } LPDIRECT3DTEXTURE9 pTexture; D3DXIMAGE_INFO Info; D3DLOCKED_RECT rc; D3DSURFACE_DESC sd; HRESULT hResult; CRect rcRect = pThis->GetPrevRect(); hResult = D3DXCreateTextureFromFileEx( (LPDIRECT3DDEVICE9)GetEtDevice()->GetDevicePtr(), szPath, rcRect.Width(), rcRect.Height(), 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, D3DX_DEFAULT, D3DX_DEFAULT, 0, &Info, NULL, &pTexture ); if( FAILED( hResult ) ) { pThis->s_nThreadStatus = -1; _endthreadex( 0 ); return 0; } pTexture->GetLevelDesc( 0, &sd ); pTexture->LockRect( 0, &rc, NULL, D3DLOCK_READONLY ); CDC *pDC = pThis->GetDC(); for( int i=0; i<5; i++ ) { pThis->m_pmemDC[i] = new CDC; pThis->m_pdcBitmap[i] = new CBitmap; pThis->m_pmemDC[i]->CreateCompatibleDC( pDC ); pThis->m_pdcBitmap[i]->CreateCompatibleBitmap( pDC, rcRect.Width(), rcRect.Height() ); pThis->m_pmemDC[i]->SelectObject( pThis->m_pdcBitmap[i] ); } pThis->ReleaseDC( pDC ); DWORD *pSource; DWORD *pRowSource = (DWORD*)rc.pBits; DWORD dwColor; BYTE r,g,b,a; for( int j=0; j<(int)sd.Height; j++ ) { pSource = pRowSource; for( int k=0; k<(int)sd.Width; k++ ) { if( CImagePrevDlg::s_hThreadHandle == NULL ) { pTexture->UnlockRect(0); pTexture->Release(); pThis->s_nThreadStatus = -1; _endthreadex( 0 ); return 0; } dwColor = *pSource; r = (BYTE)( ( dwColor << 8 ) >> 24 ); g = (BYTE)( ( dwColor << 16) >> 24 ); b = (BYTE)( ( dwColor << 24 ) >> 24 ); a = (BYTE)( dwColor >> 24 ); pThis->m_pmemDC[0]->SetPixel( k, j, RGB(r,g,b) ); pThis->m_pmemDC[1]->SetPixel( k, j, RGB(r,r,r) ); pThis->m_pmemDC[2]->SetPixel( k, j, RGB(g,g,g) ); pThis->m_pmemDC[3]->SetPixel( k, j, RGB(b,b,b) ); pThis->m_pmemDC[4]->SetPixel( k, j, RGB(a,a,a) ); pSource++; } pRowSource += rc.Pitch / 4; } pTexture->UnlockRect(0); pTexture->Release(); pThis->Invalidate(); } pThis->s_nThreadStatus = -1; _endthreadex( 0 ); return 0; } void CImagePrevDlg::RefreshPreview() { if( s_hThreadHandle ) { CloseHandle( s_hThreadHandle ); s_hThreadHandle = NULL; m_dwThreadIndex = 0; while(1) { Sleep(1); if( s_nThreadStatus == -1 ) break; } } s_nThreadStatus = 0; s_hThreadHandle = (HANDLE)_beginthreadex( NULL, 65536, BeginThread, (void*)this, 0, &m_dwThreadIndex ); while(1) { if( s_nThreadStatus == 1 || s_nThreadStatus == -1 ) break; Sleep(1); } } void CImagePrevDlg::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. // ±×¸®±â ¸Þ½ÃÁö¿¡ ´ëÇØ¼­´Â CFileDialog::OnPaint()À»(¸¦) È£ÃâÇÏÁö ¸¶½Ê½Ã¿À. CRect rcRect = GetPrevRect(); if( m_pmemDC ) { dc.BitBlt( rcRect.left, rcRect.top, rcRect.Width(), rcRect.Height(), m_pmemDC[m_nViewIndex], 0, 0, SRCCOPY ); } rcRect.InflateRect( 1, 1, 1, 1 ); dc.Draw3dRect( &rcRect, RGB( 0, 0, 0 ), RGB( 255, 255, 255 ) ); } CRect CImagePrevDlg::GetPrevRect() { CWnd *pWnd = GetDlgItem( IDC_STATIC_PREV ); CRect rcRect, rcTemp[2]; CPoint pt; pWnd->GetClientRect( &rcRect ); GetClientRect( &rcTemp[0] ); ClientToScreen( &rcTemp[0] ); pWnd->GetClientRect( &rcTemp[1] ); pWnd->ClientToScreen( &rcTemp[1] ); pt.x = rcTemp[1].left - rcTemp[0].left; pt.y = rcTemp[1].top - rcTemp[0].top; rcTemp[0] = CRect( pt.x, pt.y, pt.x + rcRect.Width(), pt.y + rcRect.Height() ); rcTemp[0].DeflateRect( 5, 19, 5, 5 ); return rcTemp[0]; } void CImagePrevDlg::OnBnClickedColorRGB() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_nViewIndex = 0; ((CButton*)GetDlgItem( IDC_BUTTON2 ))->SetCheck( 1 ); ((CButton*)GetDlgItem( IDC_BUTTON3 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON9 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON10 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON11 ))->SetCheck( 0 ); Invalidate(); } void CImagePrevDlg::OnBnClickedColorR() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_nViewIndex = 1; ((CButton*)GetDlgItem( IDC_BUTTON2 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON3 ))->SetCheck( 1 ); ((CButton*)GetDlgItem( IDC_BUTTON9 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON10 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON11 ))->SetCheck( 0 ); Invalidate(); } void CImagePrevDlg::OnBnClickedColorG() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_nViewIndex = 2; ((CButton*)GetDlgItem( IDC_BUTTON2 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON3 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON9 ))->SetCheck( 1 ); ((CButton*)GetDlgItem( IDC_BUTTON10 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON11 ))->SetCheck( 0 ); Invalidate(); } void CImagePrevDlg::OnBnClickedColorB() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_nViewIndex = 3; ((CButton*)GetDlgItem( IDC_BUTTON2 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON3 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON9 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON10 ))->SetCheck( 1 ); ((CButton*)GetDlgItem( IDC_BUTTON11 ))->SetCheck( 0 ); Invalidate(); } void CImagePrevDlg::OnBnClickedColorA() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_nViewIndex = 4; ((CButton*)GetDlgItem( IDC_BUTTON2 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON3 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON9 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON10 ))->SetCheck( 0 ); ((CButton*)GetDlgItem( IDC_BUTTON11 ))->SetCheck( 1 ); Invalidate(); } void CImagePrevDlg::OnBnClickedRadio1() { m_nChannelOption = 0; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); } void CImagePrevDlg::OnBnClickedRadio2() { m_nChannelOption = 1; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); } void CImagePrevDlg::OnBnClickedRadio3() { m_nChannelOption = 2; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); } void CImagePrevDlg::OnBnClickedRadio4() { m_nChannelOption = 3; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); } void CImagePrevDlg::OnBnClickedRadio5() { m_nChannelOption = 4; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( TRUE ); } void CImagePrevDlg::OnBnClickedRadio6() { m_nChannelOption = 5; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( TRUE ); } void CImagePrevDlg::OnBnClickedRadio7() { m_nChannelOption = 6; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( TRUE ); } void CImagePrevDlg::OnBnClickedRadio8() { m_nChannelOption = 7; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); } void CImagePrevDlg::OnBnClickedRadio9() { m_nChannelOption = 8; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); } void CImagePrevDlg::OnBnClickedRadio10() { m_nChannelOption = 9; ((CButton*)GetDlgItem( IDC_CHECK1 ))->EnableWindow( FALSE ); } void CImagePrevDlg::OnBnClickedCheck1() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. if( ((CButton*)GetDlgItem( IDC_CHECK1 ))->GetCheck() == 1 ) m_bSwapBit = true; else m_bSwapBit = false; } void CImagePrevDlg::OnEnChangeEdit2() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CString szStr; int nValue; CEdit *pEdit = (CEdit *)GetDlgItem( IDC_EDIT2 ); pEdit->GetWindowText( szStr ); nValue = atoi( szStr ); if( nValue < -32767 ) { nValue = -32767; szStr.Format( "%d", nValue ); pEdit->SetWindowText( szStr ); } if( nValue > 32767 ) { nValue = 32767; szStr.Format( "%d", nValue ); pEdit->SetWindowText( szStr ); } ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetPos( -nValue ); } void CImagePrevDlg::OnEnChangeEdit3() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CString szStr; int nValue; CEdit *pEdit = (CEdit *)GetDlgItem( IDC_EDIT3 ); pEdit->GetWindowText( szStr ); nValue = atoi( szStr ); if( nValue < 0 ) { nValue = 0; szStr.Format( "%d", nValue ); pEdit->SetWindowText( szStr ); } if( nValue > 32767 ) { nValue = 32767; szStr.Format( "%d", nValue ); pEdit->SetWindowText( szStr ); } ((CSliderCtrl*)GetDlgItem( IDC_SLIDER2 ))->SetPos( 32767 - nValue ); CString szTemp; ((CEdit *)GetDlgItem( IDC_EDIT2 ))->GetWindowText( szTemp ); ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetRangeMin( -nValue, TRUE ); if( atoi( szTemp ) > nValue ) { ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetPos( -nValue ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->SetWindowText( szStr ); } } void CImagePrevDlg::OnEnChangeEdit7() { // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CString szStr; int nValue; CEdit *pEdit = (CEdit *)GetDlgItem( IDC_EDIT7 ); pEdit->GetWindowText( szStr ); nValue = atoi( szStr ); if( nValue < -32767 ) { nValue = -32767; szStr.Format( "%d", nValue ); pEdit->SetWindowText( szStr ); } if( nValue > 0 ) { nValue = 0; szStr.Format( "%d", nValue ); pEdit->SetWindowText( szStr ); } ((CSliderCtrl*)GetDlgItem( IDC_SLIDER3 ))->SetPos( -( 32767 + nValue ) ); CString szTemp; ((CEdit *)GetDlgItem( IDC_EDIT2 ))->GetWindowText( szTemp ); ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetRangeMax( -nValue, TRUE ); if( atoi( szTemp ) < nValue ) { ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetPos( -nValue ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->SetWindowText( szStr ); } } void CImagePrevDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. CString szStr; int nValue = pScrollBar->GetScrollPos(); if( pScrollBar->m_hWnd == GetDlgItem( IDC_SLIDER1 )->m_hWnd ) { szStr.Format( "%d", -((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->GetPos() ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->SetWindowText( szStr ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->UpdateData( TRUE ); } else if( pScrollBar->m_hWnd == GetDlgItem( IDC_SLIDER2 )->m_hWnd ) { szStr.Format( "%d", 32767 - ((CSliderCtrl*)GetDlgItem( IDC_SLIDER2 ))->GetPos() ); ((CEdit *)GetDlgItem( IDC_EDIT3 ))->SetWindowText( szStr ); ((CEdit *)GetDlgItem( IDC_EDIT3 ))->UpdateData( TRUE ); int nTemp = atoi(szStr); CString szTemp; ((CEdit *)GetDlgItem( IDC_EDIT2 ))->GetWindowText( szTemp ); ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetRangeMin( -nTemp, TRUE ); if( atoi( szTemp ) > nTemp ) { ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetPos( -nTemp ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->SetWindowText( szStr ); } } else if( pScrollBar->m_hWnd == GetDlgItem( IDC_SLIDER3 )->m_hWnd ) { szStr.Format( "%d", -( 32767 + ((CSliderCtrl*)GetDlgItem( IDC_SLIDER3 ))->GetPos() ) ); ((CEdit *)GetDlgItem( IDC_EDIT7 ))->SetWindowText( szStr ); ((CEdit *)GetDlgItem( IDC_EDIT7 ))->UpdateData( TRUE ); int nTemp = atoi(szStr); CString szTemp; ((CEdit *)GetDlgItem( IDC_EDIT2 ))->GetWindowText( szTemp ); ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetRangeMax( -nTemp, TRUE ); if( atoi( szTemp ) < nTemp ) { ((CSliderCtrl*)GetDlgItem( IDC_SLIDER1 ))->SetPos( -nTemp ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->SetWindowText( szStr ); } } CFileDialog::OnVScroll(nSBCode, nPos, pScrollBar); } void CImagePrevDlg::OnFileNameChange() { // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù. CFileDialog::OnFileNameChange(); RefreshPreview(); } BOOL CImagePrevDlg::OnFileNameOK() { // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù. BOOL bResult = CFileDialog::OnFileNameOK(); CString szStr; ((CEdit *)GetDlgItem( IDC_EDIT2 ))->UpdateData( FALSE ); ((CEdit *)GetDlgItem( IDC_EDIT2 ))->GetWindowText( szStr ); m_nCenter = atoi( szStr ); ((CEdit *)GetDlgItem( IDC_EDIT3 ))->UpdateData( FALSE ); ((CEdit *)GetDlgItem( IDC_EDIT3 ))->GetWindowText( szStr ); m_nMax = atoi( szStr ); ((CEdit *)GetDlgItem( IDC_EDIT7 ))->UpdateData( FALSE ); ((CEdit *)GetDlgItem( IDC_EDIT7 ))->GetWindowText( szStr ); m_nMin = atoi( szStr ); return bResult; } void CImagePrevDlg::OnOK() { CFileDialog::OnOK(); } void CImagePrevDlg::OnDestroy() { if( s_hThreadHandle ) { CloseHandle( s_hThreadHandle ); s_hThreadHandle = NULL; m_dwThreadIndex = 0; while(1) { Sleep(1); if( s_nThreadStatus == -1 ) break; } } CString szOffsetMin; CString szOffsetMax; ((CEdit *)GetDlgItem( IDC_EDIT3 ))->GetWindowText( szOffsetMin ); ((CEdit *)GetDlgItem( IDC_EDIT7 ))->GetWindowText( szOffsetMax ); SetRegistryNumber( HKEY_CURRENT_USER, REG_SUBKEY, "GroundOffsetMax", atoi(szOffsetMin) ); SetRegistryNumber( HKEY_CURRENT_USER, REG_SUBKEY, "GroundOffsetMin", atoi(szOffsetMax) ); CFileDialog::OnDestroy(); }