사전 정의된 함수 OnChartEvent()를 사용하여 처리할 수 있는 이벤트 유형은 13가지 입니다. 커스텀 이벤트의 경우 65535 식별자가 CHARTEVENT_CUSTOM 에서 CHARTEVENT_CUSTOM_LAST 사이의 범위에서 제공됩니다. 커스텀 이벤트를 생성하려면 EventChartCustom() 함수를 사용해야 합니다.
ENUM_CHART_EVENT
ID |
설명 |
|---|---|
CHARTEVENT_KEYUP |
키 놓기 |
CHARTEVENT_KEYDOWN |
키 입력 |
CHARTEVENT_MOUSE_MOVE |
마우스 이동, 마우스 클릭 (CHART_EVENT_MOUSE_MOVE=true 로 차트에 설정된 경우) |
CHARTEVENT_MOUSE_WHEEL |
마우스 휠을 누르거나 스크롤 (차트에 대해 CHART_EVENT_MOUSE_WHEEL=True 인 경우) |
CHARTEVENT_OBJECT_CREATE |
그래픽 객체 생성됨 (차트에 대해 CHART_EVENT_OBJECT_CREATE=true 가 설정된 경우) |
CHARTEVENT_OBJECT_CHANGE |
그래픽 객체 속성이 특성 대화상자를 통해 변경되었습니다 |
CHARTEVENT_OBJECT_DELETE |
그래픽 객체 삭제됨 (CHART_EVENT_OBJECT_DELETE=true 가 차트에 대해 설정된 경우) |
CHARTEVENT_CLICK |
차트에 클릭 |
CHARTEVENT_OBJECT_CLICK |
다음에 대해 클릭: 그래픽 객체 |
CHARTEVENT_OBJECT_DRAG |
드래그 및 드롭: 그래픽 객체 |
CHARTEVENT_OBJECT_ENDEDIT |
그래픽 객체 편집의 텍스트 편집 끝 |
CHARTEVENT_CHART_CHANGE |
특성 대화상자를 통한 차트 크기 변경 또는 차트 속성 수정 |
CHARTEVENT_CUSTOM |
커스텀 이벤트 범위의 초기 이벤트 수 |
CHARTEVENT_CUSTOM_LAST |
커스텀 이벤트 범위에서 이벤트의 최종 번호 |
CHARTEVENT_KEYUP 이벤트는 차트 창에 입력 포커스가 있는 동안 사용자가 키를 놓으면 발생합니다. 이 이벤트는 키를 누르면 생성되는 현재 CHARTEVENT_KEYDOW을 보완합니다. 두 이벤트를 모두 사용하면 키가 눌리고 놓이는 시점을 정확하게 판단할 수 있습니다. 이는 대화형 컨트롤이 있는 사용자 인터페이스와 도구를 만들 때 유용합니다.
void OnChartEvent(const int id,
|
lparam (KeyCode)와 유사한 내용이 포함되어 있는데 이는 CHARTEVENT_KEYDOW 이벤트와 유사합니다. 이 TranslateKey() 함수를 사용하여 키의 텍스트 표현을 얻습니다.
소위 "데드 키"를 처리하는 것이 지원됩니다. 데드 키는 문자를 즉시 입력하지 않지만 다음에 입력되는 문자의 모양을 바꾸는 키입니다. 예를 들어 그리스어 레이아웃에서는 키 ;는 모음(ά, έ, ύ 등)에 강세를 두는 데 사용됩니다.
이제 이러한 키는 다음을 사용하여 추적할 수 있습니다. 추적은TranslateKey() 함수 를 사용해 기능하며 이 함수는 CHARTEVENT_KEYDOWN 그리고>CHARTEVENT_KEYUP 핸들러에 있습니다. 이를 통해 다국어 레이아웃에서 복잡한 키 조합을 눌렀다 놓는 것을 정확하게 감지할 수 있습니다.
void OnChartEvent(const int id,
|
사용자 정의 텍스트 필드, 단축키 시스템 및 국제 키보드 레이아웃을 구현하는 인터페이스를 구현할 때 데드 키를 처리하는 것이 유용합니다.
각 이벤트 유형에 대해 OnChartEvent() 함수의 입력 매개 변수에는 이 이벤트 처리에 필요한 한정된 값이 있습니다. 이 매개 변수를 통과하는 이벤트 및 값은 아래 표에 나열되어 있습니다.
Event |
id 매개 변수 값 |
lparam 매개변수 값 |
dparam 매개변수 값 |
sparam 매개변수 값 |
|---|---|---|---|---|
키 릴리스 이벤트 |
CHARTEVENT_KEYUP |
릴리즈된 키 코드 |
이벤트 반복 횟수는 항상 1입니다. |
제어자 키의 상태를 설명하는 비트 마스크 문자열 값. WM_KEYUP message를 확인하세요 |
Keypress 이벤트 |
CHARTEVENT_KEYDOWN |
누른 키 코드 |
키가 눌려 있는 동안 이벤트 반복 횟수 |
제어자 키의 상태를 설명하는 비트 마스크 문자열 값. WM_KEYDOWN message를 확인하세요 |
마우스 이벤트 (차트에 대해 CHART_EVENT_MOUSE_MOVE=true 가 설정된 경우) |
CHARTEVENT_MOUSE_MOVE |
X 좌표 |
Y 좌표 |
마우스 버튼의 상태를 설명하는 비트 마스크의 문자열 값 |
마우스 휠 이벤트 (차트에 대해 CHART_EVENT_MOUSE_WHEEL=true 인 경우) |
CHARTEVENT_MOUSE_WHEEL |
마우스 포인터의 X 및 Y 좌표와 키 및 마우스 버튼의 상태 플래그. 다음을 참조하십시오: 아래 예제 |
마우스 휠 스크롤의 델타 값 |
— |
그래픽 객체 생성 이벤트 (차트에 대해 CHART_EVENT_OBJECT_CREATE=true 로 설정된 경우) |
CHARTEVENT_OBJECT_CREATE |
— |
— |
생성된 그래픽 개체의 이름 |
속성 대화상자를 통한 객체 속성 변경 이벤트 |
CHARTEVENT_OBJECT_CHANGE |
— |
— |
수정된 그래픽 개체의 이름 |
그래픽 객체 삭제 이벤트 (CHART_EVENT_OBJECT_DELETE=true 가 차트에 대해 설정된 경우) |
CHARTEVENT_OBJECT_DELETE |
— |
— |
삭제된 그래픽 개체의 이름 |
차트를 마우스로 클릭하는 이벤트 |
CHARTEVENT_CLICK |
X 좌표 |
Y 좌표 |
— |
차트에 속한 그래픽 개체를 마우스로 클릭하는 이벤트 |
CHARTEVENT_OBJECT_CLICK |
X 좌표 |
Y 좌표 |
이벤트가 발생한 그래픽 개체의 이름 |
마우스를 사용하여 그래픽 개체를 드래그하는 이벤트 |
CHARTEVENT_OBJECT_DRAG |
— |
— |
이동된 그래픽 개체의 이름 |
레이블 편집 그래픽 객체의 입력 상자에서 완료된 텍스트 편집 이벤트 |
CHARTEVENT_OBJECT_ENDEDIT |
— |
— |
다음의 이름: 텍스트 편집이 완료된 LabelEdit 그래픽 객체 |
변경 이벤트 - 특성 대화상자를 통한 차트 크기 또는 차트 속성 수정에 대한 |
CHARTEVENT_CHART_CHANGE |
— |
— |
— |
N 넘버 이하의 유저 이벤트 ID |
CHARTEVENT_CUSTOM+N |
EventChartCustom() 함수에 의해 설정된 값 |
EventChartCustom() 함수에 의해 설정된 값 |
EventChartCustom() 함수에 의해 설정된 값 |
예제:
#define KEY_NUMPAD_5 12
|
CHARTEVENT_MOUSE_MOVE 이벤트의 경우 sparam 문자열 매개변수는 키보드 및 마우스 버튼의 상태에 대한 정보를 포함합니다:
Bit |
설명 |
|---|---|
1 |
마우스 좌측 버튼 상태 |
2 |
마우스 우측 버튼 상태 |
3 |
SHIFT 버튼 상태 |
4 |
CTRL 버튼 상태 |
5 |
마우스 중간 버튼 상태 |
6 |
마우스 첫 여분 버튼 상태 |
7 |
마우스 둘째 여분 버튼 상태 |
예제:
//+------------------------------------------------------------------+
|
CHARTEVENT_MOUSE_WHEEL 이벤트의 경우 파라미터 lparam 및 dparam 에는 마우스 버튼, 커서 좌표 및 마우스 휠 스크롤 값의 Ctrl 및 Shift 키 상태에 대한 정보가 포함됩니다.더 알아보고 싶으시다면 차트에서 이 Expert Advisor를 실행하고 마우스 휠을 스크롤한 상태에서 다른 버튼을 누르고 코드에 설명된 키를 누르십시오.
예제 - CHARTEVENT_MOUSE_WHEEL 이벤트 처리:
//+------------------------------------------------------------------+
|
더 보기