자세한 내용은 나중에 정리할 계획이지만 지금까지 내용 우선 개략적으로 정리해두려고 포스트 작성 함.
1. 지난 월요일에 하나대투 증권의 API를 제공 받아서 설치해보고 VC 샘플로 구조 파악.
2. VC 보다는 델파이나 빌더가 익숙해서 ActiveX를 컴포넌트로 등록하고 빌더 샘플 작성 시작 하지만, export된 HFCommand 함수를 호출하면 아무 에러 메시지도 없이 프로그램 종료가 되버려서 IDispatch 인터페이스 이용해서 Invoke 하는 방법으로 테스트 진행했으나 hf_INITH5MGR부터 실패.
3. 델파이로 다시 해보자 생각하고 컴포넌트 델파이에 다시 등록하고 새로 샘플 작성 시작. 델파이에서는 HFCommand 호출하여도 에러는 없는데 제대로 동작 안함.
>오류 내용
> 하나대투 증권사에 전화해봤으나 첨부된 문서 보고 다시 해보라는 답변만 해줘서 기술 문의나 지원 받는 것은 포기했다.
4. 해결책
3일 정도 이리 저리 테스트 해도 제대로 동작이 안되고 제공 받은 OCX 내부에서 어떻게 변수를 처리하는지 확인할 방법이 없어서 포기할까 했는데 시간 허비한게 아까워서 어떻게든 해보자는 생각에 제공 받은 ocx와 동일한 인터페이스를 갖는 MFC ActiveX를 만들고 내부에서 하나대투 API를 다시 호출하는 방법을 사용했다.
> 결과
VC 샘플에서 기존 ActiveX 대신에 새로 작성한 ActiveX를 호출해서 사용하도록 소스 수정하고 해봤더니 제대로 동작한다. 델파이로 만든 샘플에서도 로그인까지는 동작하는 것 확인.
> 기타
1. 기존 ActiveX를 직접 사용하는게 가장 깔끔하겠지만, 새로 ActiveX를 만들면서 전달 받은 내용을 로그 파일로 기록하게 해둠. 기존 ActiveX호출 하면서 이게 제대로 전달이 되는지 궁금하였는데 이젠 로그 파일 확인하면 됨.
2. VC로는 ActiveX를 처음 만들어 봐서 좀 헤매긴 했는데 어쨌든 되니까 다행이라는 생각이다. MFCActiveX 만드는 것에 대해서는 별도의 포스트를 올려서 정리할 예정인데 몇 가지 주의할 점 적으면..
- 대부분 위저드랑 인터넷 찾아보면 해결 할 수 있는데 View 기반이어서 생성자에서 CreateControl할떄 parent CWND를 Ctrl클래스 this 포인터를 넘기면 hwnd가 널인 경우도 있고 아닌 경우도 있어서 에러 발생했다. -> Dialog 추가해서 Dialog에서 ActiveX를 생성하는 것으로 변경해서 해결.
- OnCreate에서 Dialog를 생성하면 VC에서는 이상이 없으나 델파이에 컴포넌트로 등록하고 테스트 했더니 에러가 발생했다. 디버깅 해보니 이상하게 OnCreate가 실행이 안된다. 아마도 메시지 처리하는게 다른듯 싶어서. Ctrl의 생성자에서 Dialog 클래스 인스턴스 생성하는 것으로 바꿨다. 이것만 인터넷에 나와 있는 Dialog 기반의 ActiveX 만드는 것과 다른 부분이다.
- 참조
http://netcorea.spaces.live.com/blog/cns!12194EA1AE946527!165.entry
5. 남은 작업
새로 만든 ActiveX 안정성 확인 필요
시세 데이타 수신, 주문 하기 등 기능 구현 필요
1. 지난 월요일에 하나대투 증권의 API를 제공 받아서 설치해보고 VC 샘플로 구조 파악.
2. VC 보다는 델파이나 빌더가 익숙해서 ActiveX를 컴포넌트로 등록하고 빌더 샘플 작성 시작 하지만, export된 HFCommand 함수를 호출하면 아무 에러 메시지도 없이 프로그램 종료가 되버려서 IDispatch 인터페이스 이용해서 Invoke 하는 방법으로 테스트 진행했으나 hf_INITH5MGR부터 실패.
3. 델파이로 다시 해보자 생각하고 컴포넌트 델파이에 다시 등록하고 새로 샘플 작성 시작. 델파이에서는 HFCommand 호출하여도 에러는 없는데 제대로 동작 안함.
>오류 내용
서버아이피 얻어오는 것은 되는데 이상하게 hf_INITH5MGR 명령은 에러 발생(에러코드는 -1 또는 10 발생하고 -1인 경우에 서버 아이피 얻어올 수는 있으나 연결 실패, 10인 경우에는 서버 아이피도 얻어올 수 없다.)
> 하나대투 증권사에 전화해봤으나 첨부된 문서 보고 다시 해보라는 답변만 해줘서 기술 문의나 지원 받는 것은 포기했다.
4. 해결책
3일 정도 이리 저리 테스트 해도 제대로 동작이 안되고 제공 받은 OCX 내부에서 어떻게 변수를 처리하는지 확인할 방법이 없어서 포기할까 했는데 시간 허비한게 아까워서 어떻게든 해보자는 생각에 제공 받은 ocx와 동일한 인터페이스를 갖는 MFC ActiveX를 만들고 내부에서 하나대투 API를 다시 호출하는 방법을 사용했다.
> 결과
VC 샘플에서 기존 ActiveX 대신에 새로 작성한 ActiveX를 호출해서 사용하도록 소스 수정하고 해봤더니 제대로 동작한다. 델파이로 만든 샘플에서도 로그인까지는 동작하는 것 확인.
> 기타
1. 기존 ActiveX를 직접 사용하는게 가장 깔끔하겠지만, 새로 ActiveX를 만들면서 전달 받은 내용을 로그 파일로 기록하게 해둠. 기존 ActiveX호출 하면서 이게 제대로 전달이 되는지 궁금하였는데 이젠 로그 파일 확인하면 됨.
2. VC로는 ActiveX를 처음 만들어 봐서 좀 헤매긴 했는데 어쨌든 되니까 다행이라는 생각이다. MFCActiveX 만드는 것에 대해서는 별도의 포스트를 올려서 정리할 예정인데 몇 가지 주의할 점 적으면..
- 대부분 위저드랑 인터넷 찾아보면 해결 할 수 있는데 View 기반이어서 생성자에서 CreateControl할떄 parent CWND를 Ctrl클래스 this 포인터를 넘기면 hwnd가 널인 경우도 있고 아닌 경우도 있어서 에러 발생했다. -> Dialog 추가해서 Dialog에서 ActiveX를 생성하는 것으로 변경해서 해결.
- OnCreate에서 Dialog를 생성하면 VC에서는 이상이 없으나 델파이에 컴포넌트로 등록하고 테스트 했더니 에러가 발생했다. 디버깅 해보니 이상하게 OnCreate가 실행이 안된다. 아마도 메시지 처리하는게 다른듯 싶어서. Ctrl의 생성자에서 Dialog 클래스 인스턴스 생성하는 것으로 바꿨다. 이것만 인터넷에 나와 있는 Dialog 기반의 ActiveX 만드는 것과 다른 부분이다.
- 참조
http://netcorea.spaces.live.com/blog/cns!12194EA1AE946527!165.entry
5. 남은 작업
새로 만든 ActiveX 안정성 확인 필요
시세 데이타 수신, 주문 하기 등 기능 구현 필요
'System Trading' 카테고리의 다른 글
H5MgrEx의 명령어에 따른 처리 과정 (0) | 2009.07.07 |
---|---|
Cybos plus 설치 (2) | 2008.07.22 |
TradeStation - Global Server의 Exchange List 수정 (0) | 2008.07.21 |