PtAddFilterCallback( window, Ph_EV_BUT_RELEASE,
event_act_cb, NULL );
我是通过代码直接给窗口添加事件响应函数
函数原型如下
int
event_act_cb(PtWidget_t *w, void *data,
PtCallbackInfo_t *cbinfo)
{
PhPointerEvent_t *event_data;
/* eliminate ‘unreferenced’ warnings */
w = w, data = data, cbinfo = cbinfo;
if (cbinfo->event->type != Ph_EV_BUT_RELEASE) {
printf (“Not a Ph_EV_BUT_RELEASE event\n”);
} else {
printf (“It’s a Ph_EV_BUT_RELEASE event\n”);
event_data = (PhPointerEvent_t *)
PhGetData (cbinfo->event);
if (event_data->key_mods & Pk_KM_Shift )
printf (" Shift\n");
if (event_data->key_mods & Pk_KM_Ctrl )
printf (" Ctrl\n");
if (event_data->key_mods & Pk_KM_Alt )
printf (" Alt\n");
}
return( Pt_CONTINUE );
}
以上的一次单击 结果打印出了
It’s a Ph_EV_BUT_RELEASE event
It’s a Ph_EV_BUT_RELEASE event
It’s a Ph_EV_BUT_RELEASE event
而如果把Ph_EV_BUT_RELEASE 改成Ph_EV_BUT_PRESS
只打印了It’s a Ph_EV_BUT_PRESS event
我在函数里明确只判断了一次 为何响应Ph_EV_BUT_RELEASE 会进入三次呢?
请各位大大 指导下!