Win32 改变鼠标的光标图片

MFC_改变鼠标形状 核心代码HCURSOR hCur = LoadCursor(NULL, IDC_HAND); ::SetCursor(hCur);LoadCursor函数功能该函数从一个与应用有关的可执行文件中加载一个光标资源原型HCURSOR WINAPI LoadCursor( _In_opt_ HINSTANCE hInstance, _In_ LPCTSTR lpCurs 阅读详情

通过百度尝试几种方法之后,一开始老是没显示所导入的光标图片,最后才发现原来要将图片格式转为.ico或.cur格式才能正常导入程序并显示,

将图片放在此程序的.exe目录下即可,代码如下:

//可以定义图片路径数组pics[]来更换光标图片。
winclass.hCursor = LoadCursorFromFile(pics[0]);//读入鼠标光标图文件。
//设置鼠标光标图案
::SetCursor(LoadCursorFromFile(pics[flag]));//换光标图

通过 PhotoShop 将图片格式转化为 .ico 或 .cur 格式的图片,必须要有插件 ICOFormat.8bi。
winform 以光标指向点为中心 通过鼠标滚轮对图片进行缩放 最近一个项目需要涉及到图片的全屏显示以及缩放拖动功能,其中缩放实现需要考虑的一点就是为了有更好的用户体验,需要在缩放的时候以光标所处位置为参考点,进行缩放操作,简单来说就是,缩放前后光标在图片上所处的位置保持不变。 实现原理:把图片放在picturebox中,通过一系列调整,使图片完全占满box,每次通过改变box的size来使得图片放大缩小,然后再通过改变box的locaton使得光标位置不变。具 阅读详情

相关推荐

Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图

Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图

Jackey_Song的博客 644

win32窗口:关于鼠标定位位置偏移问题的原因及解决方法

问题描述:建立了一个win32窗口,上面存在一个自绘按钮控件,现在要对鼠标对于按钮的悬停事件进行监控。 有以下步骤: 1、在winproc中对msg进行选择,获取mouse move事件。从对应的lparam中获取当前鼠标的坐标点对。 2、用获取的坐标点对与控件区域信息进行比对,判断鼠标是否悬停在控件上。 第一步可以用另外一种方法实现:GetCursorPos(),用这个函数来获得当...

weixin_30525825的博客 2176

VC++实战:从零构建Win32五子棋游戏,掌握Windows桌面开发核心

Windows桌面应用开发的核心在于理解其底层运行机制与图形界面构建。从概念上讲,Windows程序遵循事件驱动的消息循环模型,通过窗口过程函数响应系统与用户交互。其原理涉及Win32 API这一原生接口,开发者需直接操作窗口创建、消息分发及图形设备接口进行绘制。掌握这些基础技术价值巨大,不仅能构建高性能的桌面应用,更是深入理解操作系统与图形编程的基石。典型的应用场景包括开发工具软件、传统桌面游戏及需要精细控制界面的应用程序。本文以经典的五子棋游戏开发为例,具体演示如何运用**Win32 API**和**G

weixin_30386713的博客 337

Win32 替换应用程序图标

最近在写项目的时候,需要加载指定的ICON,而编译出来的程序的图标总不是我所期望的,而运行起来程序的图标也是正确(期望)的,觉得很是奇怪,在网上查了下,终于找到原因。文章摘自http://blog.sina.com.cn/s/blog_5f8817250100uizy.html。        在开发应用程序时,一般都会替换系统生成的图标,这些图标包括三个地方所显示的:任务栏,标题栏和程序图

IcebergSnowfox的专栏 3290

Visual C++游戏编程入门:从Win32窗口到2D游戏核心实现

C++作为高性能系统编程语言,其底层控制能力是游戏开发中追求极致性能的关键。通过直接调用Windows API和图形接口,开发者能够深入理解计算机图形渲染、内存管理与消息循环等核心原理,这种对系统底层的掌控为性能优化和复杂问题调试提供了坚实基础。在游戏开发领域,这种技术价值体现在对帧率、输入响应和资源管理的精细调控上,尤其适用于需要高度定制化或对性能有苛刻要求的应用场景。本文以Visual C++为工具,结合microsoft visual c++ redistributable的运行时环境,通过构建Win

weixin_30861797的博客 404

Windows GDI 屏幕绘图:实现自定义光标绘制与视觉指示

在 Windows 图形编程中,GDI(Graphics Device Interface)是基础的图形设备接口,它允许应用程序在屏幕、打印机等设备上进行绘图操作。其核心原理是通过设备上下文(DC)作为绘图画布,调用一系列 API 函数进行像素级控制。这项技术的工程价值在于能够实现跨进程的屏幕视觉覆盖,为各类工具软件提供灵活的界面增强能力。在自动化测试、远程协助、教学演示等应用场景中,常需在不干扰真实鼠标操作的前提下,提供额外的视觉指示。本文聚焦于利用 GDI 的 BitBlt、GetDC 等关键 API,

weixin_33981932的博客 352

Win32设计图标、光标样式和窗口标题(简单易懂)

一、准备知识: 一、图标:(文件格式为 .ico) 图标有两种,分别是大图标(wc.hIcon)和小图标(wc.hIconSm)。 大图标:任务栏中程序图标 小图标:窗口上的图标 图标文件格式.ioc的转换: 1.可通过格式转换软件,比如格式工厂。 2.在线网站转换,在线版PDF转换器 二、光标:(静态光标文件格式.cur)、(动态光标文件格式 .ani) 就是在运行窗口上的光标。 光标文件.cur和.ani的获得: 1.使用Axialis CursorWorkshop软件可以自己制作,也可转换

程序员战胜 4764

纯Win32 GDI实战:从零构建一个极简画图工具

图形编程是桌面应用开发的基础技能,而Windows平台下的GUI开发离不开消息循环与设备上下文等核心概念。GDI(图形设备接口)作为Windows原生绘图API,提供了一套轻量级的绘制原语,非常适合快速构建工具类应用。本文围绕内存位图和双缓冲技术,介绍如何在不依赖第三方框架的情况下,通过纯Win32 API实现一个可交互的绘图程序。从鼠标事件处理、画笔建模到BMP文件保存,完整展示了从窗口创建到像素绘制的全部流程。这种无依赖、单文件可执行的方法,不仅适合开发轻量级画图工具,也能帮助我们更清晰地理解Windo

weixin_28839439的博客 358

Win32学习笔记——鼠标操作

1.光标类型1)系统光标类型(windows.h):IDC_ARROW 箭头光标IDC_CROSS 十字光标IDC_IBEAM I字光标IDC_ICON 空图标IDC_SIZEALL 指向四个方向的带有箭头的光标IDC_SIZENESW 带有指向东北方向和西南方向的箭头的光标IDC_SIZENS 带有指向南方向和北方的箭头的光标IDC_SIZENWSE 带有指向西北方向和东南方向的箭头的光标IDC

Jesse's Sky的专栏 2026

从零开始搭建GD32F103CBT6开发环境:VSCode配置与实战技巧

本文详细介绍了如何从零开始为国产MCU GD32F103CBT6搭建高效的VSCode开发环境。内容涵盖工具链安装、VSCode核心插件配置、工程目录结构规划、关键配置文件编写以及Makefile实战,旨在帮助开发者摆脱传统IDE束缚,利用现代化工具链提升嵌入式开发效率。

weixin_29158413的博客 448

Excel VBA+Adobe Acrobat Pro PDF发票识别全流程(附避坑指南)

本文详细介绍了如何利用Excel VBA与Adobe Acrobat Pro的API接口,构建一套企业级PDF发票智能识别与处理系统。内容涵盖从环境配置、核心文本提取原理、数据解析清洗到工程化脚本设计的全流程,并针对密码区干扰、不征税发票等常见问题提供避坑指南,旨在帮助财务人员和开发者实现高效、精准的财务数据处理自动化。

weixin_29207439的博客 348

cesium鼠标左键获取经纬度_Win32编程基础之鼠标输入

weixin_39969143的博客 343

OpenFOAM-v2006重叠网格挖洞问题实战:如何手动修复overset代码中的边缘识别缺陷

本文深入探讨了OpenFOAM-v2006中重叠网格挖洞问题的实战解决方案,重点修复overset代码中的边缘识别缺陷。通过逆向工程解析挖洞决策机制,设计最小侵入式的函数override方案,并建立多级验证体系,有效解决了网格挖洞区域覆盖不全的问题,提升了计算流体动力学模拟的准确性和可靠性。

weixin_29216049的博客 433

Windows GDI实现独立虚拟光标:原理、代码与避坑指南

在Windows图形编程中,GDI(图形设备接口)是基础的图形绘制技术,它通过设备上下文(DC)和绘图对象(如位图、画笔)实现屏幕图形的程序化输出。其核心原理是基于消息循环和窗口系统的绘图机制,通过定时刷新和位图传输实现动态效果。这一技术价值在于为屏幕标注、演示辅助、自动化测试可视化等场景提供了轻量级、高性能的图形解决方案。例如,在自动化测试中,可借助GDI绘制虚拟光标轨迹,直观展示操作路径;在虚拟机或远程桌面环境下,当系统光标不显示时,GDI绘制的独立光标可作为有效的视觉替代方案。本文聚焦于使用GDI实现

weixin_34354173的博客 1192

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2317

《数据结构》04-树4 是否同一棵二叉搜索树

题目 给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。 输入格式: 输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要...

叫我皮卡丘 2012

win32 用户界面设计基础之cursor篇

一、   标准鼠标替换   Windows提供了一系列标准鼠标,其标示前缀均为IDC_,用SetSystemCursor()函数可以替换系统的标准鼠标。SetSystemCusor()有两个参数,第一个为一个通过LoadCursor()(LoadCursor()函数以被LoadImage()函数取代)、CreateCursor()或CopyCursor()获得的Cursor指针。例如: HCURSOR   hnewCur; hnewCur=LoadCursor(hInst,MAKEINTRESOURCE(N

蓝色天堂的专栏 1475

【tips】在PyCharm中安装opencv图文版详细教程

pip如下图所示,左边的蓝色图标就是终端。点开终端后,键入命令,按下回车后就开始下载了。如果你更喜欢图形化操作,可以在 PyCharm 中直接安装:。点击右上角的 +按钮(添加包)。搜索或,点击。

zhousanguhe的博客 6744

WIN32用户界面设计基础之Cursor篇 (转)

WIN32用户界面设计基础之Cursor篇 (转)[@more@]win32用户界面设计基础之Cursor篇 时间:2002-10-31 21:28:40阅读 313 次一、 标准鼠标替换  windows提供了一系列标准...

ciya3282的博客 183

嵌入式u-boot最全面试题及参考答案(5万字长文持续更新)

例如,在一个便携式设备中,U-Boot 在启动时初始化电源控制器,将输出电压设置为合适的值。命令是u-boot构建过程中用于配置u-boot选项的命令。在嵌入式系统中,启动画面(也称为启动Logo或Splash Screen)是展示给用户的第一印象,它可以包含公司的标志、产品的名称或其他相关信息。u-boot允许通过环境变量来进行配置,这使得开发者可以根据不同的硬件平台和项目需求灵活地调整u-boot的行为。写入操作可以是字节级别的,也可以是块级别的,具体取决于设备的性能和操作系统的需求。

大模型大数据攻城狮的专栏 997

SAR合成孔径雷达成像及处理(附带Matlab源代码)

总结:本文介绍了SAR合成孔径雷达的基本原理,并提供了使用Matlab实现SAR成像和处理的源代码示例。然后,在慢时间域进行方位压缩处理,通过计算每个接收通道的延迟和频移,将多次接收的信号叠加得到最终的成像结果。SAR成像的基本原理是通过接收雷达发射的脉冲信号的回波,并利用多次接收的信号进行叠加处理。以多普勒频移校正为例,根据雷达飞行速度和方位角,计算实际的多普勒频率,并对每个接收通道的数据进行频移校正,以消除因目标运动引起的频率偏移。通过调整参数和算法,可以实现不同的SAR成像和处理效果。

ByteJolt的博客 689

Win32程序资源的使用

作为一个可执行的应用程序文件,应该包含2部分,一部分是数据区,另一部分是程序代码区。数据区一般可分为2类:读写数据和只读数据。对于windows程序,有大量的只读数据。所谓资源就是应用程序运行期间通常不能更改或不需要更改的数据。\quadwindows程序资源有以下几种: 加速键 Accelerator 位图 Bitmap 光标 Cursor 对话框 Dialog HTML 图标 Icon 菜单

q__y__L的博客 3047

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Win32页上的所有控件属性与方法

Win32页上的所有控件。该页控件是在32位Win系统中的一些基本控件,如果你选择开发CLX程序,则在控件面板上不会显示该页TTabControl属性 DisplayRect:只定该控件客户区的一个矩形  HotTrack:设置当鼠标经过页标签时,它的字是否有变化。如果为True,是字会变成蓝色Images:为每个页标签添加一个图片MultiLine:如果总页标签的长度大于该控件的宽度时,是否

.NET快速开发框架 3826

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Visual C++游戏编程核心:从Win32消息循环到双缓冲渲染实战

在Windows平台进行C++游戏开发,理解底层运行机制是关键。从计算机图形学基础概念出发,图形渲染的核心原理在于将数据通过特定接口转化为屏幕像素,其中双缓冲技术是解决画面撕裂与闪烁的经典方案,通过前台与后台缓冲区的交换实现平滑视觉输出。在工程实践中,Visual C++与Win32 API的结合提供了最直接的路径,其消息驱动模型是理解实时交互程序的基础。通过改造消息循环,引入高精度计时器与增量时间(deltaTime)计算,开发者可以构建稳定的游戏循环,这是实现实时模拟与流畅体验的技术核心。这些底层知识对

weixin_33811539的博客 371

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: 理解CSS3 transform中的Matrix(矩阵)
下一篇: php面向对象视频笔记之第一章(面向对象基础)
yibin94
博客等级 码龄11年 78粉丝 158原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值