Hallo zusammen,
ich beobachte gerade ein merkwürdiges Verhalten, das aber vielleicht normal ist. Und zwar wird das WM_ARROWED-Ereignis zweimal ausgelöst, wenn ich auf einen Scrollbalken oder -pfeil klicke.
Zuerst dachte ich, ich hätte einen Fehler in meinem Programm. Aber ein kleines Testprogramm mit nur dem nötigsten zeigt dieses Verhalten ebenfalls. Getestet habe ich es mit Aranym, STeeM und auf einem Mega STE.
Irgendwie stehe ich auf dem Schlauch.
#include <gem.h>
#define loword(x) (short)((unsigned long)(x) & 0xffffUL)
#define hiword(x) (short)((unsigned long)(x) >> 16)
int main()
{
const char* title = " TEST ";
short work_in[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 };
short work_out[57];
short vdihdl, win;
short dummy;
appl_init();
vdihdl = graf_handle(&dummy, &dummy, &dummy, &dummy);
v_opnvwk(work_in, &vdihdl, work_out);
win = wind_create(CLOSER | NAME | UPARROW | DNARROW | VSLIDE, 0, 0, 300, 150);
wind_set(win, WF_NAME, hiword(title), loword(title), 0, 0);
wind_open(win, 30, 50, 150, 100);
graf_mouse(ARROW, 0L);
for (;;) {
short mx, my, mk;
short kstat, key;
short evntret;
short msg[8];
evntret = evnt_multi(MU_MESAG | MU_TIMER | MU_KEYBD | MU_BUTTON,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, msg, 100,
&mx, &my, &mk, &kstat, &key, 0L
);
if ((evntret & MU_MESAG) != 0) {
if (msg[0] == WM_CLOSED) {
break;
} else if (msg[0] == WM_ARROWED) {
form_alert(1, "[1][ WM_ARROWED ][ OK ]");
}
}
}
wind_close(win);
wind_delete(win);
v_clsvwk(vdihdl);
appl_exit();
return 0;
}