自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1196)
  • 资源 (81)
  • 收藏
  • 关注

原创 有声小说书屋 4.0 发布,可能是PC上最好的听书软件

将txt epub格式小说,直接托入即可也可将包含txt小说的 文件夹,直接拖入,会自动解析。

2024-07-18 15:01:35 514

原创 有声小说书屋阅读软件 功能及技术分析

左侧是树形列表, 代表着书籍、章节右侧是显示, 显示章节内容总体框架使用的VC的 SDI 单文档程序框架。

2022-09-26 11:47:25 705

原创 创建 一个 最基本的 duilib窗口过程

一、使用向导 生成windows桌面程序1、 创建win32Project2、组织结构此时,都是VS 默认代码TestPro.h#pragma once#include "resource.h"TestPro.cpp// TestPro.cpp : Defines the entry point for the application.//#include "stdafx.h"#include "TestPro.h"#de..

2022-05-24 12:20:07 765 1

原创 电脑听书上的 比较好的 语音包 介绍

然后通过打开方式、或共享 方式, 使用edge浏览器打开,即可手机上听了。安装语言包后, 重新打开有声小说,就会在 朗读者 这里看到新的朗读者了。如果要更自然的语音朗读的话,就得介绍下edge浏览器的 朗读功能了。选中新的朗读者, 听书的时候,就可以用这个新朗读者听书了。录制音频的时候, 也会以这个新的朗读者进行录制。在搜索引擎中,搜索下,然后 下载安装就可以了。生成的本地网站,默认会在edge浏览器中打开,在电脑上,听书,语音包的好坏直接影响到听感。4、生成的本地网页,可拷贝到手机、pad中。

2024-07-26 14:25:08 229

原创 网易互动SDK升级

*** 加入音视频房间。* 通过本接口可以实现加入音视频房间,加入房间后可以与房间内的其他用户进行音视频通话。* @par 调用时机* 请在初始化后调用该方法。* @note* - 加入房间后,同一个房间内的用户可以互相通话,多个用户加入同一个房间,可以群聊。使用不同 App Key 的 App 之间不能互通。* - 加入音视频房间时,如果指定房间尚未创建,云信 服务器内部会自动创建一个同名房间。

2024-07-23 15:06:30 17

原创 txt小说 ,在手机上 听书的方法

找到了一本喜欢的txt小说,纯看的话,太费眼,想听怎么弄?下面是方法:如果是在电脑上 听书,可以参考这篇文章电脑不能随便携带,想用手机听书,怎么办呢?不急,下面就是在手机上 听txt小说的方法。

2024-07-23 10:41:17 485

原创 使用std::async,解决 枚举窗口时,获取窗口名字的 堵塞 卡住问题

std::async可以用于异步执行任何可调用对象,包括函数、lambda 表达式、函数对象等。它返回一个对象,用于检索异步任务的结果std::async提供了简便的异步编程接口,结合,使得多线程编程变得更加容易和直观。异步执行任务,避免阻塞主线程。提供获取任务结果和处理异常的机制。支持超时等待和延迟执行策略。// 启动异步任务// 在需要时获取结果return 0;

2024-07-22 17:33:51 45

原创 互动直播 之 多人连麦窗口,昵称等信息获得

但是,这里有个问题,这时候,SubExe_SendUserIMAndName 主进程传来的 昵称信息,有可能慢一点,导致多麦窗口昵称为空。原因就是,多麦窗口添加连麦者时,此时改连麦者的昵称信息还未获得。多麦窗口添加连麦者时。

2024-07-18 15:11:19 474

原创 互动直播 之 连麦者位置、合成布局、显示方式等

普通合成的时候,合成哪些连麦者,可以由 m_BypassCtrlClass.liveUsesNeedShow_ 确定。之前这里是房间里的学生的数目,如果改成现在的只需显示的学生,则其它地方也会受影响,所以这里还得完善下。合成布局要解决的是:多人连麦,哪些连麦者可以被合成,以何种排列方式整合成一副画面。这里传入的是:pChatForm->m_studentInRoomSet。与连麦者相关的,不仅有连麦者位置,还有观众看到的合成画面。在这里获得需要显示的那些连麦者用户的账号集。

2024-06-14 14:19:55 553

原创 chatgpt 生成的 左侧导航功能的网页

这是用chatgpt生成的网页,其实,不是一下子就生成了满足需求的网页,而是要不断地和chatgpt交互,不断地调试改进,不断地让它理解你的需求,最终才能达到可用的效果。以下导航,就是通过和chatgpt沟通几个小时后,才达到了满意效果。和普通编程不同,你得让它正确理解你的意思才行,不过它做了个大概后,你如果在这个基础上,迅速改进,达到自己的需求也行。

2024-06-14 11:33:17 1083

原创 互动直播 之 从多人连麦列表中, 选择需要展示的连麦者

不同的直播方式,需要展示的人数不同,普通直播允许4个连麦者, 双视频直播 可能 3.2.1。所以根据不同的直播方式,确定需要展示的连麦者人数。根据UI上,选择的人数,更新双屏模式。下面是与之相关的几个函数。

2024-05-31 15:35:57 209

原创 std::vector 容器, vec1 按照 vec2的次序排序

需求就是,vec1中,元素按照vec2 中元素排序。

2024-05-31 15:34:02 152

原创 互动直播 之 连麦者 声音变化 管理

已有的声音,声音减弱处理。新的声音,添加到map中。

2024-04-29 16:22:13 58

原创 duilib 原理分析 之 Button的click 事件

button模版类的基类是label模版类主要设置文字操作public:/// 重写父类方法,提供个性化功能,请参考父类声明/*** @brief 设置文本样式* @param[in] uStyle 要设置的样式* @return 无*//*** @brief 获取文本样式* @return 返回文本样式*//*** @brief 获取指定状态下的文本颜色* @param[in] stateType 要获取的状态标志。

2024-04-29 16:20:48 184

原创 duilib 之 鼠标按下事件是如何处理的?

kEventMouseButtonDown,是duilib中自己定义的事件,意为 鼠标按下事件这里窗口事件被转换成了 duilib自定义事件处理。else。

2024-04-17 18:19:09 167

原创 duilib 分析 之 OnInitLayout() 运用的时机 及应用

布局初始化后,会调用这个虚函数。

2024-04-17 18:16:33 42

原创 旅游回来几天,笔记本突然出现TEST MODE ,重启黑屏

但是重启后,还是黑屏,后来发现,任务管理器中,总是有360进程, 打开控制板,将360卸载了,重启登录后,终于见到桌面了。西安旅游六天归来,发现笔记本成了TEST MODE ,我记得走之前,设置了睡眠,但是现在还在嗡嗡的响。任务管理器可以打开,运行explorer.exe,转圈,然后,就没然后了,还是黑屏。卸载这几天,自动给装的软件,edge dev 等,卸载的过程中,突然就显示桌面了。后来,从任务管理器,运行control, 打开了控制面板,重启后,登录界面可以进,输入密码后,黑屏,

2024-04-02 15:10:59 108

原创 duilib 基本控件 之 列表控件应用

因为列表单项中,有自定义的控件HBitmapControl ,所以这里创建列表项时,有个创建回调,专门处理自定义控件。

2024-03-26 17:56:24 133

原创 duilib 自定义扩展列表

// 列表项,用于在列表中展示数据的子项public:/// 重写父类方法,提供个性化功能,请参考父类声明/*** @brief 获取父容器* @return 返回父容器指针*//*** @brief 设置父容器* @param[in] pOwner 父容器指针* @return 无*//*** @brief 获取当前索引* @return 返回当前索引*//*** @brief 设置索引* @param[in] iIndex 索引值。

2024-03-26 17:54:22 163

原创 CEF C++端判断前端是否注册了某个JS函数

前端注册的方法,保存在渲染进程中render_registered_function_浏览器进程要获得渲染进程信息,就需要通过进程通信的方法。收到后,返回上层处理。

2024-03-13 15:56:06 202 1

原创 客户端 生成二维码 APP 扫码登录逻辑

返回扫码用户的 UID 和他的 userIcon,我们这里就是要下载这个头像,并显示出来。当确定需要显示二维码时,需要使用fake_uid,向服务器请求,获得passport。在全局隐藏窗口中,获得目标登录窗口类,在此类中负责下载头像、显示头像。PUSH回调信息,Post到g_ui全局隐藏窗口的窗口处理函数中。收到下载头像响应后,隐藏二维码,头像控件,设置头像路径 并显示。APP扫码后,二维码要变成用户的头像,以说明,用户已经扫码了。客户端收到 用户扫码的 PUSH。APP 扫码,点击确定后。

2024-03-13 15:55:04 949

原创 CEF c++调用JS,并获得JS返回值的 流程

所以,渲染进程进而判断,如果返回对象的话,则把对象转换成json串,再返回给调用这个JS的那个C++函数的回调中。这里的匿名函数,就是c++,调用注册的JS名时,所要执行的那段JS代码函数。这样,C++调用这个注册的JS,又得到了JS的返回json信息。参数:方法名、JSON参数串,接收JS回调的匿名函数。在前端中,使用扩展代码提供的方式,注册个JS。CEF中,c++层,可以直接调用这个JS。如果,JS中,需要返回C++ 执行结果,比如,C++浏览器进程 ,调用方式。这里,JS返回的是一个对象,

2024-03-08 17:31:05 237

原创 CEF JS与c++能够交互的原理 以及 JS 调用C++的流程分析

当js中,触发了扩展代码中的函数中,就会调到这里处理// 当Web中调用了"NimCefWebFunction"函数后,会触发到这里,然后把参数保存,转发到Broswer进程// Broswer进程的BrowserHandler类在OnProcessMessageReceived接口中处理kJsCallbackMessage消息,就可以收到这个消息// 允许没有参数列表的调用,第二个参数为回调// 如果传递了参数列表,那么回调是第三个参数else。

2024-03-08 15:21:55 430

原创 duilib 基础 之 事件响应方法集锦

注意,将transBox mousechild设置为false,才会响应, 要不然,可能会被子控件响应去。可以添加 AttachBubbledEvent事件通知,子控件将鼠标消息,和冒泡一样,通知给父控件。如果,子控件也要响应鼠标,还要时间上述效果。

2024-02-05 11:16:14 195

原创 c++ 子进程交互 逻辑

隐藏可以子进程自己完成,自己设置为隐藏即可。获得父进程句柄,写入子进程句柄。比如,点击某个按钮,隐藏子进程,显示父进程。父进程处理消息,显示自己。子进程点击后,隐藏自己。

2024-02-05 10:21:07 1353

原创 duilib msg消息框扩展,返回更多信息

使其回调为更多信息的回调函数。回调函数中,增加额外信息。消息框,结束时,返回回调信息。

2024-01-31 10:18:35 162

原创 互动直播 之 模式选择框

同时,选第一个时,隐藏这个选项,选第二个时,显示这个选项。选择后,再将信息返回给子进程。给主进程发送消息 处理。

2024-01-31 10:16:14 59

原创 互动直播项目 梳理 自定义视频帧控件 BitmapControl

位于ui_kit项目下case 3:break;

2024-01-23 10:17:16 315

原创 duilib 实战 之 悬浮时间小窗口 3 新增一个Option控件类

想新增个OptionHBox 控件类,主要是想实现 option组,动态显示哪个的子项的问题。发现,原duilib没有这个功能,就参照duilib原有功能,扩展了一下。目录一、duilib新增一个控件类1、duilib\Core\Define.h 新增一个宏定义2、Option模板类3、在WindowBuilder中创建4、扩展一个 选中某个子项的功能5、实例1)、样式2)、代码中设置组名,选则子项选中某个子项,同时将其它子项选中状态设置为FALSE注意: 只有子项 添加gro

2024-01-23 10:10:41 256

原创 双屏相框模式 1 整体布局

测试效果,在画布底端中央,显示用户名等信息。

2024-01-17 14:40:33 52

原创 duilib 理论分析 之 窗口绘制过程

是Windows消息的一种,用于在窗口被创建之前发送给窗口过程(Window Procedure)。通过上述分析,可知道HandleMessage 先调用的是 new的 派生实际类的那个 重载函数。在这种情况下,将会根据指针所指向的对象的实际类型调用相应的函数。并通过SetWindowLongPtr,把窗口指针存放到窗口的额外空间中,以便后续使用。因为这里调用的是虚函数,所以会根据指针所指向的对象的实际类型调用响应的函数。结构体中的成员,其中包含了创建窗口时传递的参数。获得窗口指针,通常的做法是在。

2024-01-17 14:39:32 157

原创 互动直播 连麦布局之 双屏普通下 本地布局 合成布局 连麦顺序不一致解决方案

而这两个容器的添加删除成员时机都是相同的,所以理论上本地布局 和 合成布局 连麦者位置也应该相同了,测试也是这样的效果。因为,需要这个信息,设置每个连麦者位置,为了方便,所以将这个容器放在了CBypassCtrl 类中了。因为,在某种模式下,不显示用户头像,所以还需要有:用户是头像连麦还是视频连麦的标识。保存的是进入频道的全部连麦者,包含自己和其它所有在频道中的人员。以后需要做的是多麦选择,选择哪个就显示哪个,这个待以后优化。然后,在有其它连麦者进入时,将其它连麦者加入。目前,先加入离开时,重置下。

2024-01-12 09:59:40 80

原创 duilib 实战 之 悬浮时间小窗口 2 显示当前时间

实现如下图所示的 时间工具条功能。

2024-01-12 09:58:07 198

原创 互动直播 之 隐藏音频连麦者头像

另外,双视频下,学生切换音频\视频模式时,发送 SubExe_SendPush_talk_mode 消息时,也调整。下次该学生以视频方式上麦,因为onuserJoined来的最快,这时候还没有得到学生此次已经改为视频上麦的信息,对主播来讲,onUserJoined、onUserLeft 时调整下。所以此时动态隐藏调整时,就有问题了,本来应该显示,但是却隐藏了。一开始 音频模式上麦,这时候学生是音频模式,然后自己下麦。绘制连麦者数据时,不绘制头像连麦的人。获得volumeBox。如果是不显示头像模式,

2024-01-09 10:56:44 1130

原创 duilib 实战 之 悬浮时间小窗口 1 逐渐显示效果

不过最好使用这样的原则: 初始显示为true的,根据需要可设置fadewidth ,初始显示为false的,最好不要设置渐变动画。因为我这是悬浮窗口,本来就很小,设置caption后,点击按钮也失去作用了,所以选择自己控制拖动。样式中,开启fadewidth,可设置宽度隐藏显示时的渐变效果。初始是隐藏的话,开启动画效果后,会有一闪现象,使用时候需要注意。下面的方法,可以缓解,但是第一次直接显示的话,也有点突兀的感觉。层次窗口,可以实现透明效果,默认纯黑色是透明色。但是如果初始是隐藏的话,会有一闪的情况。

2024-01-09 10:52:01 498

原创 VUE 小说网站 1 搭建环境

后来,我试图换了 8643等 没用占用的端口,结果还是不行,也不是这个原因。后来看看目录结构,这个index.html 在public下。.vscode ->launch.json中。以为是目录中含有空格导致找不到的,去掉空格后。8080 被 微信 QQ 占用 了 PID。控制台 运行 npm run start。运行 npm run start。再运行,能找到文件了,但貌似还不对。没有 start 和 dev了。运行 npm run serve。打开package.json。

2023-12-27 10:20:23 3793

原创 互动直播 之 播放器管理类

单例模式是一种设计模式,确保类只有一个实例,并提供一个全局访问点。这可以用于确保一个类只有一个实例,并提供一种访问该实例的方式。public:// 获取单例实例的静态方法// 使用静态局部变量确保只创建一次// 示例成员函数// 防止拷贝构造函数和赋值操作符的实现private:// 私有构造函数,确保外部无法直接实例化// 可以进行初始化操作// 私有析构函数,确保外部无法直接删除实例// 可以进行清理操作// 获取单例实例// 使用单例实例return 0;

2023-12-27 10:14:17 845

原创 GDI+ 绘制圆形头像

需求: 用户实际头像是长方形的,现在要绘制一个圆形的头像显示解决方法:在原图像上,添加一个圆形蒙版,圆形区域是透明的,其它是背景色。

2023-12-18 10:02:22 219

原创 防火墙 设置 出站规则

搜索栏 ,输入防火墙,打开防火墙和网络保护,打开高级设置。测试需求:禁止10000端口出站,用于测试。新建规则 ,自定义、

2023-12-18 10:00:47 169

原创 CEF 窗口全屏

有时候需要全屏播放视频,这时候就需要将CEF所在的窗口全屏,这样,就可以全屏显示CEF网页了。

2023-12-12 10:22:33 408

EnumDevice.zip

使用directshow 枚举 视频设备、音频设备的代码示例 博客:https://gudianxiaoshuo.blog.csdn.net/article/details/118573432

2021-07-08

DXResource.zip

DirectShow 相关资源 包含所需的头文件、 官方的graphEdit Directshow.chm官方文档

2021-07-08

gimp-2.10.24-setup-3.exe

一款开源的 图片制作软件 制作ICON 使用博客:https://gudianxiaoshuo.blog.csdn.net/article/details/118081970

2021-06-21

signtool.exe

微软签名工具 使用博客 :https://gudianxiaoshuo.blog.csdn.net/article/details/117411743

2021-05-31

duiliib 基本控件使用示例.zip

云信duilib 基本控件使用示例 具体使用方法 参考博文 duilib 快速入门 (C++ 界面开发) https://blog.csdn.net/shuilan0066/category_8007774.html

2021-04-16

Package Control.zip

sublime package control 安装说明:https://gudianxiaoshuo.blog.csdn.net/article/details/113526297

2021-02-01

obs可能还需依赖的dll.zip

obs可能还需依赖的dll libeay32.dll libgcc_s_dw2-1.dll libwinpthread-1.dll ssleay32.dll

2021-01-28

OBS开发需要安装的软件.zip

包含cmaker vs2013 depencies obs-studio-21源码 qt-vsaddin-msvc2013插件 OBS开发 博客地址: https://gudianxiaoshuo.blog.csdn.net/article/details/103179718

2021-01-28

depens.zip

dll depends win7 DLL DEPENDS win10 depends 运行 DependenciesGui.exe

2021-01-27

duilib 之 文件选择示例.zip

提供一个完整的duilib简单示例,用以演示从布局界面 到程序控制 到编译运行的完整过程。 演示了RichEdit控件、Button控件、 Slider控件的用法,方便初学者参考。 博客:https://gudianxiaoshuo.blog.csdn.net/article/details/113181393

2021-01-26

JsonTest.zip

jsoncpp库配置、及应用示例 详情参考 博客地址: https://gudianxiaoshuo.blog.csdn.net/article/details/112804338

2021-01-21

modifyName.zip

实用小程序工具 之 批量修改文件名 csdn博客地址: https://gudianxiaoshuo.blog.csdn.net/article/details/112724711

2021-01-18

cmake-3.16.0-rc3-win64-x64

cmake-3.16.0-rc3-win64-x64

2021-01-02

快乐课堂V7.4.2.zip

快乐课堂 寓教于乐小组、个人 完善积分机制 老师评价: 很好,很有创意 这软件确实很实用 学生很感兴趣 这个软件在小组教学中,很有帮助

2020-08-16

任性动图V9.8.1.zip

简单的做动图 尤其是文字动图 可制作漂亮的闪字 照片合成动图,添加动态效果 傻瓜式创建动图方式

2020-08-16

Windows-classic-samples.zip

Windows-classic-samples 微软开源项目,github下了好几遍才下载下来的

2020-07-20

channel_v3.rar

There are no packages available for installation sublime channel_v3.json 解决sublime无法下载包问题

2020-04-14

vs2013 msvc dll.rar

msvcr120d.dll-

2019-12-27

obs-vs2013.zip

vs2013 可编译的OBS 带VS插件 DSHOW dependencies2013 obs-studio qt-vsaddin-msvc2013-2.3.0.vsix rtmpdirectshowfiltersetup.exe

2019-11-26

VS样式,换新机子时,导入老机子样式

用惯了老机子的VS界面,换新机子时,各种不适应。 现在重新打造老款样式

2019-03-13

c++ duilib 使用一个布局文件,实现不同消息框显示

使用参考 博客地址: https://gudianxiaoshuo.blog.csdn.net/article/details/133385195

2023-09-28

64位 openssl lib库

64位 openssl lib库

2023-07-28

根据学生成绩分不同段位分别显示 类似英雄榜

根据学生成绩 分不同段位 分别显示 类似英雄榜 比如: 至尊 黄金 白银 青铜 每个段位多少人 各自分数等 使用VUE +elementUI打造 博客:https://gudianxiaoshuo.blog.csdn.net/article/details/128675595

2023-01-13

QT窗口,自定义标题栏 并实现拉伸 移动功能示例

QT窗口,自定义标题栏 并实现拉伸 移动功能示例 OBS 自定义标题栏示例 相应博文: OBS自定义标题栏 https://gudianxiaoshuo.blog.csdn.net/article/details/104606115

2023-01-11

VC++ SDI 单文档框架 菜单应用实例

VC++ SDI 单文档框架 菜单应用实例

2022-12-26

vc++ 课程 学生成绩登录系统源码

vc++ 课程 学生成绩登录系统源码 添加记录、删除记录等操作

2022-12-26

ThinkPHP网站登录注册模块开发 毕业设计论文

ThinkPHP网站登录注册模块开发 毕业设计论文

2022-12-26

DShow头文件及LIB库

DShow头文件及LIB库

2022-12-26

VC++ 资源管理器 毕业设计论文

VC++ 资源管理器 毕业设计论文 只是毕业设计论文

2022-12-26

VC++ 小软件 毕业设计论文

VC++ 小软件 毕业设计论文

2022-12-26

将某网页设置为homepage的 MFC 小例子

将某网页设置为homepage的 MFC 小例子

2022-12-23

MFCDuilibTest

MFC中 使用duilib的一个小例子

2022-12-23

glink屏幕写字源码

glink屏幕写字源码 根据自己需求,做了部分改变,C#源码,提供方便的屏幕写字功能

2022-12-23

DXGI 桌面采集流程 简单示例

DXGI 桌面采集流程 简单示例

2022-07-25

微软github提供的DXGI 示例代码

微软github提供的DXGI 示例代码

2022-07-25

obs-studio_27.2 开源软件OBS 源码及子模块源码 打包

开源软件OBS 源码及子模块源码 打包 子模块 比较难下载,这次都打包在里面了 编译方法参考博客:https://gudianxiaoshuo.blog.csdn.net/article/details/125683811

2022-07-11

第一个duilib工程示例 博客地址:https://gudianxiaoshuo.blog.csdn.net/article

博客地址: https://gudianxiaoshuo.blog.csdn.net/article/details/124878982 一、clone 整个项目 1、clone 2、框架结构 3、官方例子 二、使用向导 生成windows桌面程序 1、 创建win32Project 2、组织结构 三、改造成DUILIB 1、清理代码 2、加入DUILIB 各种工程 3、修改输出目录 4、添加包含目录、lib目录 5、运行库 6、添加引用 四、代码改造 1、在 stdafx.h 中引入所需的头文件 2、引入线程类 1)在创建的项目中 wWinMain 所属的头文件中,增加自定义的主线程对象。 2)在 wWinMain 的文件中,增加主线程对象的方法实现,在这里初始化 duilib 3、创建一个窗口类 1) 头文件 2)CPP 3) 加入几个必须的接口 4、XML文件 1)在运行目录中,添加资源文件 2)XML样式文件 5、显示窗口

2022-05-30

VUE--组件示例 博客 https://gudianxiaoshuo.blog.csdn.net/article/detail

博客 https://gudianxiaoshuo.blog.csdn.net/article/detail VUE 组件示例

2022-05-28

elementUI 本地化 所需资源

elementUI 本地化 所需资源 博客:https://gudianxiaoshuo.blog.csdn.net/article/details/12271

2022-01-27

罗技摄像头公共属性集 文档 及头文件.zip

找了好久才找到的,官网已经没有了,再对罗技相机控制上 有用 logitech_uvc_driver_public_property_sets LVUVCPublic.h 可以参考博客: https://blog.csdn.net/shuilan0066/category_9571671.html

2021-09-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除