261 lines
8.6 KiB
C++
261 lines
8.6 KiB
C++
// ConfigDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "futurechecker.h"
|
|
#include "ConfigDlg.h"
|
|
#include <afxctl.h>
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CConfigDlg dialog
|
|
|
|
|
|
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CConfigDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CConfigDlg)
|
|
m_strFutureJcode = _T(""); // 선물종목코드.
|
|
m_nFAamountLimitTime = 0;
|
|
m_nFAmountLimitLine = 0;
|
|
m_nFAmountUpCondition = 0;
|
|
m_nFAmountDownCondition = 0;
|
|
m_bFAmountApplyCheck = FALSE;
|
|
m_nFcurLimitTime = 0;
|
|
m_nFcurLevelCondition = 0;
|
|
m_bFcurApplyCheck = FALSE;
|
|
m_nFAmountRuleRadio = -1;
|
|
m_nFApplyRuleRadio = -1;
|
|
m_nFApplyRuleRadioLimitTime = 0;
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_Fut = NULL;
|
|
}
|
|
|
|
CConfigDlg::~CConfigDlg()
|
|
{
|
|
m_Fut.Release();
|
|
}
|
|
|
|
|
|
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CConfigDlg)
|
|
DDX_Control(pDX, IDC_FUTURE_JCODE_COMBO, m_hFutureCodeComboBox);
|
|
DDX_Text(pDX, IDC_FUTURE_JCODE_EDIT, m_strFutureJcode);
|
|
DDV_MaxChars(pDX, m_strFutureJcode, 20);
|
|
DDX_Control(pDX, IDC_DOWNCONDITION_HOTKEY, m_hDownCondition_HotKey);
|
|
DDX_Control(pDX, IDC_UPCONDITION_HOTKEY, m_hUpCondition_HotKey);
|
|
DDX_Control(pDX, IDC_HOOKLOCKUNLOCK_HOTKEY, m_hLockUnlock_HotKey);
|
|
DDX_Text(pDX, IDC_FAMOUNT_LIMITTIME_EDIT, m_nFAamountLimitTime);
|
|
DDV_MinMaxLong(pDX, m_nFAamountLimitTime, 1, 100000);
|
|
DDX_Text(pDX, IDC_FAMOUNT_LIMITLINE_EDIT, m_nFAmountLimitLine);
|
|
DDV_MinMaxInt(pDX, m_nFAmountLimitLine, 1, 20);
|
|
DDX_Text(pDX, IDC_FAMOUNT_UPCONDITION_EDIT, m_nFAmountUpCondition);
|
|
DDV_MinMaxLong(pDX, m_nFAmountUpCondition, 1, 10000000);
|
|
DDX_Text(pDX, IDC_FAMOUNT_DOWNCONDITION_EDIT, m_nFAmountDownCondition);
|
|
DDV_MinMaxLong(pDX, m_nFAmountDownCondition, 1, 10000000);
|
|
DDX_Check(pDX, IDC_FAMOUNT_APPLY_CHECK, m_bFAmountApplyCheck);
|
|
DDX_Text(pDX, IDC_FCUR_LIMITTIME_EDIT, m_nFcurLimitTime);
|
|
DDV_MinMaxLong(pDX, m_nFcurLimitTime, 1, 100000);
|
|
DDX_Text(pDX, IDC_FCUR_LEVELCONDITION_EDIT, m_nFcurLevelCondition);
|
|
DDV_MinMaxInt(pDX, m_nFcurLevelCondition, 1, 5);
|
|
DDX_Check(pDX, IDC_FCUR_APPLY_CHECK, m_bFcurApplyCheck);
|
|
DDX_Radio(pDX, IDC_FAMOUNT_RULE_RADIO1, m_nFAmountRuleRadio);
|
|
DDX_Radio(pDX, IDC_F_APPLY_RADIO1, m_nFApplyRuleRadio);
|
|
DDX_Text(pDX, IDC_F_APPLY_RADIO2_EDIT, m_nFApplyRuleRadioLimitTime);
|
|
DDV_MinMaxLong(pDX, m_nFApplyRuleRadioLimitTime, 1, 100000);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
|
|
//{{AFX_MSG_MAP(CConfigDlg)
|
|
ON_CBN_SELCHANGE(IDC_FUTURE_JCODE_COMBO, OnSelchangeFutureJcodeCombo)
|
|
ON_BN_CLICKED(IDC_FAMOUNT_RULE_RADIO1, OnFAmountRuleRadio)
|
|
ON_BN_CLICKED(IDC_FAMOUNT_RULE_RADIO2, OnFAmountRuleRadio)
|
|
ON_BN_CLICKED(IDC_FAMOUNT_RULE_RADIO3, OnFAmountRuleRadio)
|
|
ON_BN_CLICKED(IDC_F_APPLY_RADIO1, OnFApplyRuleRadio)
|
|
ON_BN_CLICKED(IDC_F_APPLY_RADIO2, OnFApplyRuleRadio)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CConfigDlg message handlers
|
|
|
|
BOOL CConfigDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
ModifyStyleEx(NULL, WS_EX_TOPMOST);
|
|
|
|
HRESULT hr = m_Fut.CreateInstance(__uuidof(CpFutureCode));
|
|
try
|
|
{
|
|
if( SUCCEEDED(hr) )
|
|
{
|
|
short nCount = (short)m_Fut->GetCount();
|
|
for( short i=0; i<nCount; i++ )
|
|
{
|
|
CString b1 = (LPCTSTR)(_bstr_t)m_Fut->GetData(0,i);
|
|
m_hFutureCodeComboBox.AddString( b1 );
|
|
}
|
|
}
|
|
}
|
|
catch( _com_error e )
|
|
{
|
|
MessageBox(e.ErrorMessage(), "CpFutureCode 초기화 실패", MB_OK|MB_ICONSTOP);
|
|
CDialog::OnCancel();
|
|
return FALSE;
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
Load();
|
|
OnSelchangeFutureJcodeCombo();
|
|
OnFAmountRuleRadio();
|
|
OnFApplyRuleRadio();
|
|
///////////////////////////////////////////////////////////////
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CConfigDlg::OnOK()
|
|
{
|
|
if( ! Save() ) return;
|
|
|
|
if( g_AppEnv.bFApplyRuleRadio == 0 )
|
|
{
|
|
if( !g_AppEnv.bFAmountApplyCheck && !g_AppEnv.bFcurApplyCheck )
|
|
{
|
|
int nID = MessageBox( "거래량+호가 모두 꺼져있습니다.",
|
|
"검사조건 확인", MB_OK|MB_ICONINFORMATION );
|
|
return;
|
|
}
|
|
}
|
|
else if( g_AppEnv.bFApplyRuleRadio == 1 )
|
|
{
|
|
if( !g_AppEnv.bFAmountApplyCheck || !g_AppEnv.bFcurApplyCheck )
|
|
{
|
|
int nID = MessageBox( "[합집합]조건은 거래량+호가 모두 켜져있어야합니다.",
|
|
"검사조건 확인", MB_OK|MB_ICONINFORMATION );
|
|
return;
|
|
}
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CConfigDlg::Load()
|
|
{
|
|
m_hLockUnlock_HotKey.SetHotKey( g_AppEnv.LockUnlockHotKey.wVk, g_AppEnv.LockUnlockHotKey.wModifier );
|
|
m_hUpCondition_HotKey.SetHotKey( g_AppEnv.UpConditionHotKey.wVk, g_AppEnv.UpConditionHotKey.wModifier );
|
|
m_hDownCondition_HotKey.SetHotKey( g_AppEnv.DownConditionHotKey.wVk, g_AppEnv.DownConditionHotKey.wModifier );
|
|
|
|
m_nFApplyRuleRadio = g_AppEnv.bFApplyRuleRadio;
|
|
m_nFApplyRuleRadioLimitTime = g_AppEnv.nFApplyRuleRadioLimitTime;
|
|
((CButton*)GetDlgItem( IDC_RUNSTAT_CHECK ))->SetCheck(g_AppEnv.bRunStatCheck);
|
|
((CButton*)GetDlgItem( IDC_FAMOUNT_APPLY_CHECK ))->SetCheck(g_AppEnv.bFAmountApplyCheck);
|
|
((CButton*)GetDlgItem( IDC_FCUR_APPLY_CHECK ))->SetCheck(g_AppEnv.bFcurApplyCheck);
|
|
|
|
m_nFAamountLimitTime = g_AppEnv.nFAamountLimitTime;
|
|
m_nFAmountLimitLine = g_AppEnv.nFAmountLimitLine;
|
|
m_nFAmountRuleRadio = g_AppEnv.nFAmountRuleRadio;
|
|
m_nFAmountUpCondition = g_AppEnv.nFAmountUpCondition;
|
|
m_nFAmountDownCondition = g_AppEnv.nFAmountDownCondition;
|
|
m_bFAmountApplyCheck = g_AppEnv.bFAmountApplyCheck;
|
|
|
|
int nIndex = m_hFutureCodeComboBox.SelectString(0, g_AppEnv.szFutureCode);
|
|
if( nIndex == LB_ERR )
|
|
m_hFutureCodeComboBox.SetCurSel(0);
|
|
|
|
m_nFcurLimitTime = g_AppEnv.nFcurLimitTime;
|
|
m_nFcurLevelCondition = g_AppEnv.nFcurLevelCheck;
|
|
m_bFcurApplyCheck = g_AppEnv.bFcurApplyCheck;
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
BOOL CConfigDlg::Save()
|
|
{
|
|
UpdateData();
|
|
|
|
m_hLockUnlock_HotKey.GetHotKey( g_AppEnv.LockUnlockHotKey.wVk, g_AppEnv.LockUnlockHotKey.wModifier );
|
|
m_hUpCondition_HotKey.GetHotKey( g_AppEnv.UpConditionHotKey.wVk, g_AppEnv.UpConditionHotKey.wModifier );
|
|
m_hDownCondition_HotKey.GetHotKey( g_AppEnv.DownConditionHotKey.wVk, g_AppEnv.DownConditionHotKey.wModifier );
|
|
|
|
g_AppEnv.bFApplyRuleRadio = m_nFApplyRuleRadio;
|
|
g_AppEnv.nFApplyRuleRadioLimitTime = m_nFApplyRuleRadioLimitTime;
|
|
g_AppEnv.bRunStatCheck = ((CButton*)GetDlgItem( IDC_RUNSTAT_CHECK ))->GetCheck();
|
|
g_AppEnv.bFAmountApplyCheck = ((CButton*)GetDlgItem( IDC_FAMOUNT_APPLY_CHECK ))->GetCheck();
|
|
g_AppEnv.bFcurApplyCheck = ((CButton*)GetDlgItem( IDC_FCUR_APPLY_CHECK ))->GetCheck();
|
|
|
|
g_AppEnv.nFAamountLimitTime = m_nFAamountLimitTime;
|
|
g_AppEnv.nFAmountLimitLine = m_nFAmountLimitLine;
|
|
g_AppEnv.nFAmountRuleRadio = m_nFAmountRuleRadio;
|
|
g_AppEnv.nFAmountUpCondition = m_nFAmountUpCondition;
|
|
g_AppEnv.nFAmountDownCondition = m_nFAmountDownCondition;
|
|
g_AppEnv.bFAmountApplyCheck = m_bFAmountApplyCheck;
|
|
|
|
m_hFutureCodeComboBox.GetLBText( m_hFutureCodeComboBox.GetCurSel(), g_AppEnv.szFutureCode );
|
|
g_AppEnv.nFcurLimitTime = m_nFcurLimitTime;
|
|
g_AppEnv.nFcurLevelCheck = m_nFcurLevelCondition;
|
|
g_AppEnv.bFcurApplyCheck = m_bFcurApplyCheck;
|
|
return TRUE;
|
|
}
|
|
|
|
void CConfigDlg::OnSelchangeFutureJcodeCombo()
|
|
{
|
|
CString rString;
|
|
int nSel = m_hFutureCodeComboBox.GetCurSel();
|
|
m_hFutureCodeComboBox.GetLBText(nSel, rString);
|
|
CString strName = (LPCTSTR)(_bstr_t)m_Fut->CodeToName( (LPCTSTR)rString );
|
|
SetDlgItemText( IDC_FUTURE_JCODE_EDIT, strName );
|
|
}
|
|
|
|
void CConfigDlg::OnFAmountRuleRadio()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
if( m_nFAmountRuleRadio == 0 )
|
|
{
|
|
SetDlgItemText( IDC_FAMOUNT_UPCONDITION_STATIC, "매수 - 매도 :" );
|
|
SetDlgItemText( IDC_FAMOUNT_DOWNCONDITION_STATIC, "매도 - 매수 :" );
|
|
}
|
|
else if(m_nFAmountRuleRadio == 1 )
|
|
{
|
|
SetDlgItemText( IDC_FAMOUNT_UPCONDITION_STATIC, "매수 :" );
|
|
SetDlgItemText( IDC_FAMOUNT_DOWNCONDITION_STATIC, "매도 :" );
|
|
}
|
|
else if(m_nFAmountRuleRadio == 2 )
|
|
{
|
|
SetDlgItemText( IDC_FAMOUNT_UPCONDITION_STATIC, "OR조건 :" );
|
|
SetDlgItemText( IDC_FAMOUNT_DOWNCONDITION_STATIC, "OR조건 :" );
|
|
}
|
|
}
|
|
|
|
void CConfigDlg::OnFApplyRuleRadio()
|
|
{
|
|
UpdateData(TRUE);
|
|
|
|
BOOL bEnable=FALSE;
|
|
CWnd *pWnd[3] = {NULL,};
|
|
pWnd[0] = (CWnd*)GetDlgItem( IDC_F_APPLY_RADIO2_STATIC1 );
|
|
pWnd[1] = (CWnd*)GetDlgItem( IDC_F_APPLY_RADIO2_EDIT );
|
|
pWnd[2] = (CWnd*)GetDlgItem( IDC_F_APPLY_RADIO2_STATIC2 );
|
|
|
|
if( m_nFApplyRuleRadio == 0 ) // 교집합.
|
|
bEnable = FALSE;
|
|
else // 합집합
|
|
bEnable = TRUE;
|
|
|
|
pWnd[0]->EnableWindow(bEnable);
|
|
pWnd[1]->EnableWindow(bEnable);
|
|
pWnd[2]->EnableWindow(bEnable);
|
|
}
|