一、添加输入反馈回调函数

在win32drv.c 中的 lv_win32_init()函数中注册输入反馈回调函数:

    static lv_indev_drv_t pointer_driver;
    lv_indev_drv_init(&pointer_driver);
    pointer_driver.type = LV_INDEV_TYPE_POINTER;
    pointer_driver.read_cb = lv_win32_pointer_driver_read_callback;
    pointer_driver.feedback_cb = lv_win32_pointer_driver_feedback_callback;	//注册
    lv_win32_pointer_device_object = lv_indev_drv_register(&pointer_driver);

二、实现反馈回调函数

例如播放一段声音。

#include <windows.h>
#pragma comment(lib, "Winmm.lib")
#include <mmsystem.h>
static void lv_win32_pointer_driver_feedback_callback(lv_indev_drv_t * indev_drv, uint8_t event)
{
	if(event == LV_EVENT_CLICKED)	//LV_EVENT_CLICKED事件被触发时相应
    {
        PlaySound(TEXT("./key_sound.wav"), NULL, SND_FILENAME | SND_ASYNC);
        Sleep(1);
    }
}

三、Code:Blocks修改链接器选项

Setting => Compiler => Global compiler settings => Linker settings添加-lwinmm.
如下图:
在这里插入图片描述

四、注意事项

4.1 有些对象默认使能了LV_EVENT_CLICKED事件,点击空白地方也有响应。

清除LV_EVENT_CLICKED事件

lv_obj_clear_flag(object, LV_OBJ_FLAG_CLICKABLE);
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐