マイクロテクニカ製品サポートFAQ
[一覧] [1つ前に戻る] [マニュアル及び各種ダウンロードページへ]
VisualTFT側で発生したイベントをmikroCのmain関数内に通知する方法
VisualTFT側で発生したイベント、例えば配置したbuttonを押すなどして、clickイベントが発生した場合、それに対応するルーチンを記述する場合、次のような方法があります。

1.Visual TFT側の対応するイベントハンドラとして記述する
2.修飾子externを用いてフラグ変数を宣言しておき、変数の値をmikroC側で判定して処理をする

1の方法は簡単です。これはVisualTFT側でイベントハンドラを作ってその中にプログラムを記述するだけです。例えば、Button1をタップ(クリック)した時に何かさせたい場合には次のようになります。

void Button1OnClick() {
  DrawScreen(&Screen2);
}

上記例では、screen2を表示させるというプログラムです。
ここに記述できるプログラムはmikroCでコンパイルされますので、基本的にmikroCが認識、ビルドできる内容であれば記述できます。ただしここには原則として長いプログラムを記述することは推奨されません。
長い処理を記述する場合にはmikroC側のxxx_main.cファイル内に記述した方が分かりやすくなります。その方法が次の2です。

2の方法は、xxx_events_code.cファイル(VisualTFTでイベントについて記述されているファイル)内の先頭にextern修飾子を用いてフラグとなる変数を記述し、それをxxx_main.cファイルに渡す方法です。例を次に挙げます。

xxx_events_code.cファイルで次の2つの符号なしshort型の変数をexternとして宣言します。
extern unsigned short x,y;

たとえばボタンがクリックされたことをxxx_main.cファイルに伝えたい場合には、

void Button1OnClick() {
  x=1;
}

とします。これで変数xには1が代入されました。

続いて、xxx_main.c側でそれを認識します。xxx_main.c側でも変数を宣言しておきます。

unsigned short x=0,y=0;

main関数内で、この変数xを監視しておけば、このxが0から1になれば、button1がクリックされたことを認識できます。

その上で、

if(x==1){
*******
}

とすれば、VisualTFT上で記述したイベントに対する動きをmain関数側で把握して処理を記述できます。
オリジナル - FAQみたいです - 猫でいいです