DragonNest/Client/EtWorldPainter/ImagePrevDlg.cpp
2024-12-19 09:48:26 +08:00

631 lines
18 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ImagePrevDlg.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù.
//
#include "stdafx.h"
#include "EtWorldPainter.h"
#include "ImagePrevDlg.h"
#include <process.h>
// 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();
}