add: case WM_NCACTIVATE:
context: int wx_start_win_event(const char *who, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, int tramp, LONG *_retval){  /* See wxEventTrampoline notes above. */#if wxLOG_EVENTS  if (!log)    log = fopen("evtlog", "w");  fprintf(log, "(%lx %lx %lx[%d] %s %d"# ifdef MZ_PRECISE_GC	  " <%lx %lx %lx>"# endif	  "\n",	  scheme_current_thread, hWnd, message, wParam, who, tramp# ifdef MZ_PRECISE_GC	  , GC_variable_stack	  , ((void **)__gc_var_stack__[0])[0]	  , ((void **)((void **)__gc_var_stack__[0])[0])[0]# endif	  );  fflush(log);#endif  if (!tramp && scheme_current_thread) {    Scheme_Object *v;    HiEventTramp *het;    v = scheme_get_param(scheme_current_thread->init_config, mred_het_param);    if (SCHEME_FALSEP(v))      het = NULL;    else      het = (HiEventTramp *)SCHEME_CAR(v);    if (het) {      /* we're in restricted mode; general calls into Scheme are bad */      switch (message) {	/* These shouldn't happen; reject them if they do! */      case WM_ACTIVATE:      case WM_SETFOCUS:      case WM_KILLFOCUS:      case WM_SIZE:      case WM_MOVE:      case WM_COMMAND:      case WM_MDIACTIVATE:      case WM_CLOSE:#if wxLOG_EVENTS	fprintf(log, " RESTRICTED)\n");	fflush(log);#endif	return 0;      case WM_VSCROLL:      case WM_HSCROLL:	/* need to re-queue the scroll event (in the MrEd middle queue) */#if wxLOG_EVENTS	fprintf(log, "_scroll_ %lx\n", GetCurrentThreadId());#endif	{	  MSG *msg;	  Scheme_Object *thunk;	  msg = (MSG *)scheme_malloc_atomic(sizeof(MSG));#if wxLOG_EVENTS	  fprintf(log, "_scroll1_\n");#endif	  msg->hwnd = hWnd;	  msg->message = message;	  msg->wParam = wParam;	  msg->lParam = lParam;	  thunk = scheme_make_closed_prim(call_wnd_proc, (Scheme_Object *)msg);#if wxLOG_EVENTS	fprintf(log, "_scroll2_\n");#endif	  MrEdQueueInEventspace(MrEdGetContext(NULL), thunk);	}#if wxLOG_EVENTS	fprintf(log, "_scrolly_ %d\n", het->yielding);#endif	if (!het->yielding) {	  if (het->timer_on) {	    het->timer_on = 0;	    KillTimer(NULL, het->timer_id);	  }#if wxLOG_EVENTS	  fprintf(log, "{HET\n");#endif	  mred_het_run_some(NULL, NULL);#if wxLOG_EVENTS	  fprintf(log, "HET}\n");#endif	  if (het->in_progress && !het->timer_on) {	    /* Make a timer event so that we get more time... */	    het->timer_on = 1;	    het->timer_id = SetTimer(0, NULL, 100, HETRunSome);	  }#if wxLOG_EVENTS	  if (het->in_progress)	    fprintf(log, " HET_START)\n");	  else	    fprintf(log, " HET_DONE)\n");	  fflush(log);#endif	} else {#if wxLOG_EVENTS	  fprintf(log, " NESTED)\n");	  fflush(log);#endif	}	return 0;      default:	/* anything else is ok, because it doesn't call Scheme */	break;      }    }  }  if (!tramp) {    switch (message) {    case WM_QUERYENDSESSION:      *_retval = 1;      return 0;    case WM_NCRBUTTONDOWN:    case WM_NCRBUTTONUP:    case WM_NCRBUTTONDBLCLK:    case WM_NCMBUTTONDOWN:    case WM_NCMBUTTONUP:    case WM_NCMBUTTONDBLCLK:    case WM_NCLBUTTONDOWN:    case WM_NCLBUTTONUP:    case WM_NCLBUTTONDBLCLK:    case WM_NCMOUSEMOVE:      if ((wParam != HTVSCROLL) && (wParam != HTHSCROLL))	break;    case WM_CLOSE: /* ^^^^ fallthrough &&&& */    case WM_RBUTTONDOWN:    case WM_RBUTTONUP:    case WM_RBUTTONDBLCLK:    case WM_MBUTTONDOWN:    case WM_MBUTTONUP:    case WM_MBUTTONDBLCLK:    case WM_LBUTTONDOWN:    case WM_LBUTTONUP:    case WM_LBUTTONDBLCLK:    case WM_MOUSEMOVE:    case WM_MOUSEWHEEL:    case WM_SYSKEYUP:    case WM_SYSKEYDOWN:    case WM_KEYUP:    case WM_KEYDOWN:    case WM_SYSCHAR:    case WM_CHAR:    case WM_INITMENU:    case WM_DROPFILES:#if wxLOG_EVENTS      fprintf(log, " CAN'T HANDLE!)\n");      fflush(log);#endif      return 0;      break;    default:      /* non-tramp ok */      break;    }  }  if (!tramp)    scheme_start_atomic();#if wxLOG_EVENTS  fprintf(log, " ...\n");#endif  return 1;}