MFC기반의 xingAPI 프로그램에서 로그인과 로그아웃 하는 방법을 알아보겠습니다.
이전 포스팅에서 그려둔 화면을 이용하여 로그인 코드를 작성해 보겠습니다. 화면을 만드는 방법은 아래의 이전 포스팅을 참고해 주세요.
2021.10.01 - [트레이딩/시스템트레이딩] - [xingAPI][차트 데이터 수집기 만들기](1) 프로젝트 생성 및 화면 만들기
1. MFC 컨트롤 설정하기
아래 사진에서 빨간색 박스에 해당하는 부분을 설정하는 방법입니다.
로그인에 필요한 아이디, 비밀번호, 공인인증번호, 접속서버(실서버, 모의서버) 정보를 입력받아 로그인을 하거나 로그아웃을 할 수 있는 인터페이스입니다.
컨트롤의 리소스 ID, 속성, 변수는 아래 표를 참고하여 설정합니다.
Label | Control | ID | Property | Variable |
ID | EditBox | IDC_EDIT_LOGIN_ID | password:True | CEditBox::m_ctrEditLoginId |
비밀번호 | EditBox | IDC_EDIT_LOGIN_PASSWD | password:True | CEditBox:: m_ctrEditLoginPasswd |
공인인증 | EditBox | IDC_EDIT_LOGIN_CERT | password:True | CEditBox::m_ctrEditLoginCert |
접속서버 | ComboBox | IDC_COMBO_LOGIN_SERVER | type:DropList, Sort:False | CComboBox:: m_ctrComboServer |
Login | Button | IDC_BUTTON_LOGIN | - | CButton::m_ctrBtnLogin |
Logout | Button | IDC_BUTTON_LOGOUT | - | CButton::m_ctrBtnLogout |
STAT_0 | StatusBar | IDC_STATUSBAR_0 | SBPS_NORMAL | CStatusBar::m_statusBar[0] |
STAT_1 | StatusBar | IDC_STATUSBAR_1 | SBPS_NORMAL | CStatusBar::m_statusBar[1] |
STAT_2 | StatusBar | IDC_STATUSBAR_2 | SBPS_NORMAL | CStatusBar::m_statusBar[2] |
Login, Logout 버튼에 BN_CLICKED 이벤트핸들러를 등록해 줍니다.
버튼을 클릭하면 아래의 이벤트핸들러가 호출됩니다.
Combobox는 CdatacollectorDlg::OnInitDialog()에 아래와 같이 초기화 코드를 작성합니다.
프로그램 실행 시 Combobox에서 실서버, 모의서버를 선택할 수 있습니다.
2. 로그인 처리하기
로그인 상태 관리를 위해 로그인시간, 실서버/데모서버 여부를 저장해 둘 구조체를 하나 정의합니다.
namespace DATACOLLECTOR
{
typedef struct _USER_LOGIN_INFO {
SRWLOCK srwlock;
BOOL boISLogin;
BOOL boIsDemoServer;
SYSTEMTIME stSysTimeTag;
TCHAR tchId[64];
TCHAR tchPasswd[64];
TCHAR tchCert[64];
_USER_LOGIN_INFO() {
ZeroMemory(this, sizeof(struct _USER_LOGIN_INFO));
InitializeSRWLock(&srwlock);
}
} TST_USER_LOGIN_INFO, * PTST_USER_LOGIN_INFO;
}
로그인은 아래와 같이 Connect() 함수 호출 후 Login() 함수를 호출합니다.
m_ctrEditLoginId.GetWindowTextA(cstrId);
m_ctrEditLoginPasswd.GetWindowTextA(cstrPasswd);
m_ctrEditLoginCert.GetWindowTextA(cstrCert);
cstrId.Trim();
cstrPasswd.Trim();
cstrCert.Trim();
boRet = theApp.m_xing.Login(theApp.m_pDlgXingMsg->GetSafeHwnd(), cstrId, cstrPasswd, cstrCert, 0, FALSE);
성공/실패 여부는 afx_msg LRESULT CDlgXingMsg::OnMsgIdXmLogin(WPARAM wParam, LPARAM lParam)에서 확인하여 처리합니다. wParam 값이 0이면 로그인 성공, 이외의 값이면 로그인 실패입니다.
아래와 같이 로그인이 되면 관련 컨트롤을 잠그고 상태 바에 로그인 여부와 접속시간을 표기하였습니다.
로그인이 성공하면 TR, Real API를 호출하여 사용할 수 있습니다.
'트레이딩 > 시스템트레이딩' 카테고리의 다른 글
[xingAPI][차트 데이터 수집기 만들기](5) 작업 스레드 생성 (0) | 2021.10.14 |
---|---|
[xingAPI][차트 데이터 수집기 만들기](4) 데이터 수집 설정 기능 (0) | 2021.10.12 |
[xingAPI][차트 데이터 수집기 만들기](2) 프로젝트 셋업 (2) | 2021.10.04 |
[xingAPI][차트 데이터 수집기 만들기](1) 프로젝트 생성 및 화면 만들기 (0) | 2021.10.01 |
[xingAPI][T1857] T1857 e종목검색(조건검색)(DLL버전) (5) | 2020.11.29 |