# 如何处理将文件拖入到窗口的事件。

在 PC 上,如果将系统文件浏览器中的文件拖入到 AWTK 的窗口上,会触发 EVT_DROP_FILE 事件。该事件会分发到窗口管理器对象和当前窗口对象上,可以根据需要选择注册事件的目标。

# 使用方法

  • 注册事件。
widget_on(win, EVT_DROP_FILE, window_on_drop_file, win);
  • 实现事件处理函数。
static ret_t window_on_drop_file(void* ctx, event_t* e) {
  widget_t* win = WIDGET(ctx);
  widget_t* label = widget_lookup(win, "filename", TRUE);
  drop_file_event_t* drop = drop_file_event_cast(e);

  widget_set_text_utf8(label, drop->filename);

  return RET_OK;
}

可以从 drop_file_event_t 事件的 filename 中获取文件名,如果拖入的是多个文件,该事件会触发多次。

完整使用方法请参考: demos/demo_ui_old_app.c