안녕하세요 인터럽트입니다.
벌써 자동매매 프로그램 만들기 세 번째 포스팅이네요
이번 포스팅에서는 어떻게 UI를 만들었고 로그인 기능은 어떻게 만들었는지 정리해 보겠습니다.
일단 소스를 보기에 앞서 UI를 먼저 보겠습니다.
로그인 창입니다. 저는 다른 증권 API로도 자동매매 프로그램을 구현할 것이기 때문에 각각 Connect 할 수 있는 버튼을 만들기 위해 공간을 미리 배치해 놨습니다.
저번 포스팅에서는 프로그램이 Loaded 될 때 Kiwoom 로그인 창이 뜨도록 했으나, 버튼을 눌렀을 때 뜨도록 수정했습니다.
반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
namespace MainWindows
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//Loaded 이벤트 바인딩
this.Loaded += MainWindow_Loaded;
}
//아직 안쓰지만 향후 쓸 거같아서 남겨뒀습니다.
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
}
//키움증권 로그인버튼 클릭
private void btnKiwoomConnect_Click(object sender, RoutedEventArgs e)
{
//Winform으로 만든 키움증권API컨트롤에서 Login메소드 호출
KhCtrlApi.Login();
}
}
}
|
cs |
MainWindow.cs 소스 (WPF 로그인창)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
public partial class KHCtrl : UserControl
{
#region ViewModel
/*IsConnected는 로그인 상태를 알려줄 Status값이다. GetConnectState() 값이 1 이면 로그인상태이다.
즉 IsConnected를 호출할 때마다 GetConnectState()를 호출해서 로그인 상태인지 확인한다.
*/
public bool IsConnected { get { return axKHOpenAPI.GetConnectState() != 0; } }
#endregion
//생성자
public KHCtrl()
{
InitializeComponent();
//OnEventConnect Event바인딩
axKHOpenAPI.OnEventConnect += khAPI_OnEventConnect;
}
//로그인창 종료될 때 실행되는 Event
private void khAPI_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e)
{
if(e.nErrCode == 0)
{
//로그인성공
MessageBox.Show("로그인에 성공했습니다.", "Login", MessageBoxButtons.OK);
}
else
{
//로그인실패
/*실패에 따른 error code를 ENUM으로 정리 후 사용하자*/
MessageBox.Show("로그인에 실패했습니다.", "Login", MessageBoxButtons.OK);
}
}
//Open API 로그인창 호출
public void Login()
{
if (!IsConnected)
{
axKHOpenAPI.CommConnect()
}
else
{
MessageBox.Show("이미 로그인 상태입니다.", "Login", MessageBoxButtons.OK);
}
}
}
|
cs |
KHCtrl.cs (Winform으로 만든 Open API 컨트롤)
이번 글에서는 생각보다 보여드릴게 많이 없네요
다음 포스팅에서는 계좌정보와 예치금등 사용자 정보를 불러오는 기능을 추가할 예정입니다.
아참! WPF로 페이지를 추가해서 로그인이 완료되면 해당 페이지가 popup으로 뜨도록 구현할 예정이에요
읽어주셔서 감사합니다
