DragonNest/Client/EtActionTool/EventEditView_CreateModifySignal.cpp

260 lines
6.9 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
// EventEditView_CreateModifySignal.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#include "stdafx.h"
#include "EtActionTool.h"
#include "EventEditView_CreateModifySignal.h"
#include "SignalManager.h"
// CEventEditView_CreateModifySignal
IMPLEMENT_DYNCREATE(CEventEditView_CreateModifySignal, CFormView)
CEventEditView_CreateModifySignal::CEventEditView_CreateModifySignal()
: CFormView(CEventEditView_CreateModifySignal::IDD)
, m_szSignalName(_T(""))
, m_bHasLength(FALSE)
{
m_pmemDC = NULL;
m_pdcBitmap = NULL;
}
CEventEditView_CreateModifySignal::~CEventEditView_CreateModifySignal()
{
DeleteMemDC();
}
void CEventEditView_CreateModifySignal::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_szSignalName);
DDX_Check(pDX, IDC_CHECK1, m_bHasLength);
DDX_Control(pDX, IDC_BUTTON1, m_InitialsColorBtn);
DDX_Control(pDX, IDC_BUTTON2, m_BackgroundColorBtn);
DDX_XTColorPicker(pDX, IDC_BUTTON1, m_InitialsColor);
DDX_XTColorPicker(pDX, IDC_BUTTON2, m_BackgroundColor);
DDV_MaxChars(pDX, m_szSignalName, 32);
}
BEGIN_MESSAGE_MAP(CEventEditView_CreateModifySignal, CFormView)
ON_WM_PAINT()
ON_CPN_XT_SELENDOK(IDC_BUTTON1, OnSelEndOkInitialsClr)
ON_CPN_XT_SELENDOK(IDC_BUTTON2, OnSelEndOkBackgroundClr)
ON_WM_SIZE()
ON_BN_CLICKED(IDC_CHECK1, &CEventEditView_CreateModifySignal::OnBnClickedCheck1)
ON_EN_CHANGE(IDC_EDIT1, &CEventEditView_CreateModifySignal::OnEnChangeEdit1)
END_MESSAGE_MAP()
// CEventEditView_CreateModifySignal <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
#ifdef _DEBUG
void CEventEditView_CreateModifySignal::AssertValid() const
{
CFormView::AssertValid();
}
#ifndef _WIN32_WCE
void CEventEditView_CreateModifySignal::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
// CEventEditView_CreateModifySignal <20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
void CEventEditView_CreateModifySignal::PreProcess()
{
m_szSignalName = s_pCurrentSignalItem->GetName();
m_InitialsColor = s_pCurrentSignalItem->GetInitialsColor();
m_BackgroundColor = s_pCurrentSignalItem->GetBackgroundColor();
m_bHasLength = s_pCurrentSignalItem->IsHasLength();
UpdateData( FALSE );
}
bool CEventEditView_CreateModifySignal::PostProcess()
{
UpdateData();
if( m_szSignalName.IsEmpty() ) {
MessageBox( "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ñ׳<C3B1> <20≯<EFBFBD><CCB8><EFBFBD> <20>Է<EFBFBD><D4B7><EFBFBD> <20>ּ<EFBFBD><D6BC><EFBFBD>.", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
return false;
}
bool bImpossibleChar = false;
for( int i=0; i<m_szSignalName.GetLength(); i++ ) {
if( m_szSignalName[i] < 'A' || m_szSignalName[i] > 'z' ) {
bImpossibleChar = true;
break;
}
}
if( bImpossibleChar ) {
MessageBox( "<EFBFBD≯<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD><D2B0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڰ<EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
return false;
}
if( CSignalManager::GetInstance().IsExistSignalItem( m_szSignalName, ( s_nStartType == 1 ) ? s_szCurrentSignalName : "" ) == true ) {
MessageBox( "<EFBFBD>ߺ<EFBFBD><EFBFBD>Ǵ<EFBFBD> <20≯<EFBFBD><CCB8><EFBFBD> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
return false;
}
s_pCurrentSignalItem->SetName( m_szSignalName );
s_pCurrentSignalItem->SetInitialsColor( m_InitialsColor );
s_pCurrentSignalItem->SetBackgroundColor( m_BackgroundColor );
s_pCurrentSignalItem->SetHasLength( ( m_bHasLength ) ? true : false );
return true;
}
void CEventEditView_CreateModifySignal::OnPaint()
{
CPaintDC dc(this); // device context for painting
CreateMemDC();
CRect rcRect = CRect( 0, 0, 170, 110 );
CBitmap *pOldBitmap;
pOldBitmap = m_pmemDC->SelectObject( m_pdcBitmap );
m_pmemDC->FillSolidRect( &rcRect, RGB(255,255,255) );
CRect rcGrid = CRect( 10, 10, 21, rcRect.bottom - 10 );
COLORREF Col = RGB( 100, 100, 100 );
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><> 3dRect <20><> <20>׸<EFBFBD><D7B8><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for( int i=0; i<14; i++ ) {
m_pmemDC->Draw3dRect( &rcGrid, Col, Col );
rcGrid.left += 10;
rcGrid.right += 10;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rcGrid = CRect( 10, 10, rcRect.right - 10, 30 );
for( int i=0; i<4; i++ ) {
m_pmemDC->Draw3dRect( &rcGrid, Col, Col );
rcGrid.top += 19;
rcGrid.bottom += 19;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>
rcGrid = CRect( 10, rcRect.bottom - 11, rcRect.right - 10, rcRect.bottom - 10 );
m_pmemDC->Draw3dRect( &rcGrid, RGB(255,255,255), RGB(255,255,255) );
rcGrid = CRect( rcRect.right - 11, 10, rcRect.right - 10, rcRect.bottom - 10 );
m_pmemDC->Draw3dRect( &rcGrid, RGB(255,255,255), RGB(255,255,255) );
// <20>׸<EFBFBD><D7B8><EFBFBD>.
rcGrid = CRect( 10 + ( 10 * 4 ), 10 + ( 19 * 2 ), 0, 0 );
if( m_bHasLength ) rcGrid.right = rcGrid.left + 90;
else rcGrid.right = rcGrid.left + 10;
rcGrid.bottom = rcGrid.top + 19;
m_pmemDC->FillSolidRect( &rcGrid, m_BackgroundColor );
m_pmemDC->SetBkMode( TRANSPARENT );
m_pmemDC->SelectStockObject( DEFAULT_GUI_FONT );
char szStr[2048] = { 0, };
if( m_bHasLength ) {
sprintf_s( szStr, m_szSignalName );
}
else {
szStr[0] = m_szSignalName[0];
_strupr_s( szStr );
}
rcGrid += CPoint( 1, 1 );
m_pmemDC->SetTextColor( RGB(0,0,0) );
m_pmemDC->DrawText( szStr, &rcGrid, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
rcGrid -= CPoint( 1, 1 );
m_pmemDC->SetTextColor( m_InitialsColor );
m_pmemDC->DrawText( szStr, &rcGrid, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
CRect rcStatic, rcWnd;
CPoint cPoint;
CWnd *pStatic = GetDlgItem( IDC_STATIC_PREVIEW );
pStatic->GetWindowRect( &rcStatic );
GetWindowRect( &rcWnd );
cPoint.x = rcStatic.left - rcWnd.left;
cPoint.y = rcStatic.top - rcWnd.top;
cPoint += CPoint( 15, 25 );
dc.BitBlt( cPoint.x, cPoint.y, rcRect.Width(), rcRect.Height(), m_pmemDC, 0, 0, SRCCOPY );
m_pmemDC->SelectObject(pOldBitmap);
}
void CEventEditView_CreateModifySignal::OnSelEndOkInitialsClr()
{
UpdateData();
Invalidate();
}
void CEventEditView_CreateModifySignal::OnSelEndOkBackgroundClr()
{
UpdateData();
Invalidate();
}
void CEventEditView_CreateModifySignal::CreateMemDC()
{
if( m_pdcBitmap || m_pmemDC ) return;
m_pmemDC = new CDC;
m_pdcBitmap = new CBitmap;
CRect rcRect = CRect( 0, 0, 170, 110 );
CDC *pDC = GetDC();
m_pmemDC->CreateCompatibleDC( pDC );
m_pdcBitmap->CreateCompatibleBitmap( pDC, rcRect.Width(), rcRect.Height() );
ReleaseDC( pDC );
}
void CEventEditView_CreateModifySignal::DeleteMemDC()
{
if( m_pdcBitmap ) {
m_pdcBitmap->DeleteObject();
SAFE_DELETE( m_pdcBitmap );
}
if( m_pmemDC ) {
m_pmemDC->DeleteDC();
SAFE_DELETE( m_pmemDC );
}
}
void CEventEditView_CreateModifySignal::OnSize(UINT nType, int cx, int cy)
{
__super::OnSize(nType, cx, cy);
// TODO: <20><><EFBFBD><20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
DeleteMemDC();
CreateMemDC();
}
void CEventEditView_CreateModifySignal::OnBnClickedCheck1()
{
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData();
Invalidate();
}
void CEventEditView_CreateModifySignal::OnEnChangeEdit1()
{
// TODO: RICHEDIT <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>
// __super::OnInitDialog() <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD>ũ<EFBFBD><C5A9> OR <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ENM_CHANGE <20>÷<EFBFBD><C3B7>׸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD> CRichEditCtrl().SetEventMask()<29><> ȣ<><C8A3><EFBFBD>ؾ߸<D8BE>
// <20>ش<EFBFBD> <20>˸<EFBFBD> <20>޽<EFBFBD><DEBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.
// TODO: <20><><EFBFBD><20><>Ʈ<EFBFBD><C6AE> <20>˸<EFBFBD> ó<><C3B3><EFBFBD><EFBFBD> <20>ڵ带 <20>߰<EFBFBD><DFB0>մϴ<D5B4>.
UpdateData();
Invalidate( FALSE );
}
BOOL CEventEditView_CreateModifySignal::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
return FALSE;
// return __super::PreTranslateMessage(pMsg);
}