チャートイベントに実行される順番を知ってるだお?
今回は、標準の順番を紹介します。
CHARTEVENT_KEYDOWN | 0 |
CHARTEVENT_OBJECT_CLICK | 1 |
CHARTEVENT_OBJECT_DRAG | 2 |
CHARTEVENT_OBJECT_ENDEDIT | 3 |
CHARTEVENT_CLICK | 4 |
CHARTEVENT_OBJECT_DELETE | 6 |
CHARTEVENT_OBJECT_CREATE | 7 |
CHARTEVENT_OBJECT_CHANGE | 8 |
CHARTEVENT_CHART_CHANGE | 9 |
CHARTEVENT_MOUSE_MOVE | 10 |
このような順番に、OnChartEvent関数が実行されます。
複数のイベントを扱う場合は、この順番を気を付けて使ってください。
例えば、下記のように書きました。
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
static int s_count = 0;
s_count++;
if(id == CHARTEVENT_CLICK)
{
Print("CLICK : ", s_count);
}
if(id == CHARTEVENT_OBJECT_CLICK)//オブジェクトをクリック
{
Print("OBJECT_CLICK : ", s_count);
}
}
さて、この状態でオブジェクトをクリックすると、s_countはどのように加算されていくでしょうか?
直感的に言えば、オブジェクトをクリックするたびに、
CLICK : 1
OBJECT_CLICK : 2
このようになると思っていませんか?
残念ながら、順番は逆で、
OBJECT_CLICK : 1
CLICK : 2
このような順番で出力されます。
他にもCHARTEVENT_MOUSE_MOVEが動いたりしてしますので、
順番通りには出力されず、もっと大きな数字になります。
少しでも意図した動きをさせるように、詳しく調べていきましょう!
明日も書いていくのお楽しみにだお!