[MFC] Combo Box CBN_SELCHANGE响应问题

c# 调用WinAPI 设置Combobox选择项时手动触发CBN_SELCHANGE事件的方法 c# 调用WinAPI 设置Combobox选择项时手动触发CBN_SELCHANGE事件的方法选中包含指定文本的Combobox选项触发SelectChange 选中包含指定文本的Combobox选项 最近因为开发一个桌面系统插件,需要根据指定的文本内容自动选中窗口上的Combobox。逻辑上不复杂,先获取到Combobox的句柄,SendMessage发送CB_GETCOUNT获取Combobox中的选项数,再遍历发送CB_GETLBTEXTLEN获取每个选项的文本长度,发送CB_GETLBTEXT读取 阅读详情

当选择Combo Box中的某一行时,我需要获取其内容,以实现需求的相应操作。

理所当然地使用GetWindowText()函数获取该Combo Box当前的窗口内容,但每次都需要点两下才会响应。

事实是CBN_SELCHANGE事件过程中该Combo Box窗口内容还未更新,只能通过获得所选行号间接获得所选内容:

m_class_instances_.GetLBText(m_class_instances_.GetCurSel(),class_instance);

参考材料:

http://scorpiomiracle.iteye.com/blog/710511

http://blog.youkuaiyun.com/xfortius/article/details/8274603

Linux内核模块开发实战指南(2025版) 2025年Linux内核模块开发迎来革命性突破!本文将从零开始手把手教你构建可动态加载的AI加速驱动模块,揭秘最新内核特性与开发技巧,更包含独家性能调优方案与跨架构移植秘籍。文末附赠价值百万的调试脚本,助你轻松突破开发瓶颈! 阅读详情

相关推荐

【R语言】富集分析可视化代码(整理版)

分别介绍了如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析、使用R ggplot包对获得的基因GO/KEGG功能富集结果进行可视化、使用R clusterProfiler包和R AnnotationHub包对基因进行GO/KEGG功能富集分析、OrgDb包制作以及结果可视化等。故,我重新整理了一波,并补充了可对多个分组的富集结果进行可视化以及富集结果绘制圈图等的代码。关注“在打豆豆的小潘学长”公众号,发送“富集分析3”获得完整代码包和演示数据。一、单组富集结果可视化。

weixin_54004950的博客 1万+

CBN_SELCHANGE

void CDlgLayout::OnSelchangeComboPanelSlot() {  //TODO: Add your control notification handler code here  CString csPanelIndex;  int iPanelIndex = 0;  int nSel = ((CComboBox*)GetDlgItem(IDC_COMBO

mengzhuanghua的专栏 1431

第四章 自定义组件、动画

第三章 自定义组件、动画 (一)自定义View 1.1) onMeasure:对当前View的尺寸进行测量 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) widthMeasureSpec和heightMeasureSpec包含测量模式和尺寸大小 int widthMode = MeasureSpec....

Stay Hungry Stay Foolish 求知若饥 虚心若愚 8132

关于ComboBox的控件事件CBN_SELCHANGE的问题

在编一个 MFC程序时,想响应一个下拉框ComboBox控件选择改变的事件,但是,总是在下一次选择改变的时候才触发上次的响应。 参考: [url]http://topic.youkuaiyun.com/u/20090209/13/d1f74642-6098-40c2-8f4a-b053259b1ca3.html?seed=1987077585&r=66897224#r_66897224[/url] ...

scorpiomiracle的专栏 1525

INCA文件刷写全流程:从ES581驱动安装到XCP协议实战(附避坑指南)

本文详细解析INCA文件刷写的全流程操作,从ES581驱动安装到XCP协议配置,提供实战经验与避坑指南。涵盖A2L文件校验、工作区优化、XCP参数调优及自动化刷写技巧,帮助工程师高效完成ECU开发中的文件刷写任务。

egg99的博客 943

建行报专版报道建设银行金融科技发展历程

经过十多年的建设,总行前中后台部门都有了自己的业务系统,但系统“部门”特征显著,渠道、客户、产品的横向整合不足,产品系统层次化、结构化、参数化程度不高,渠道支持产品快速部署以及跨渠道服务能力不足,管理分析类系统建设相对滞后,系统较弱的可扩展能力在应对高速增长的交易量时已疲态尽显,同时安全稳定运行的压力和风险日益积聚。站在新的历史起点上,科技条线将聚焦主责主业,完善信息科技管理体系,紧紧围绕安全生产中心任务,持续推动技术能力复用共享和自主可控,为全行做好金融五篇大文章,推动业务高质量发展提供技术支撑。

银行信息系统应用架构详解 384

C++学习小记:组合框的消息响应CBN_SELCHANGE和CBN_SELENDOK的区别

C++ 组合框的消息响应CBN_SELCHANGE和CBN_SELENDOK的区别

ttt19880110的专栏 6105

TDS水质检测传感器原理图设计,已量产(液体传感器)

最近调试了一款针对生活用水、水培系统的 TDS 水质检测模块 —— 毕竟 TDS(总溶解固体)值直接关联水的洁净程度,是这类场景里既实用又易获取的水质指标。下面拆解下这个电路的设计逻辑,说说每个部分是怎么配合实现精准检测的。

不脱发的程序猿 1538

CComboBox控件风格与 消息CBN_SELCHANGE响应函数的一些问题

背景: 要实现的功能是:消息CBN_SELCHANGE响应函数中获取下拉列表框中被选中的项的内容(CString类型)。 问题: combobox控件默认的风格是Dropdown,在风格下CBN_SELCHANGE响应函数获取到的内容是上一次选中的内容,而不是当前选中的内容。 解决方法: 把combobox控件的风格改为Drop List,即可在CBN_SELCH

xiemanR的专栏 6333

Ubuntu零基础入门到精通【1.1讲】:什么是 Ubuntu?一文带你彻底搞懂!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 5749

【BlueZ】编译产物详解:可执行文件/库文件/工具的生成路径与用途

BlueZ二次开发编译产物机制解析 摘要:在BlueZ蓝牙协议栈二次开发中,90%的报错源于对编译产物类型和路径的混淆。本文系统剖析BlueZ的三阶段编译机制:1)配置阶段生成Makefile;2)编译阶段在.libs目录下产生临时库和可执行文件(不可直接运行);3)安装阶段将产物部署到系统标准路径。重点解析守护进程、命令行工具、动态库的核心路径差异,并针对五大高频问题(如临时库运行崩溃、动态库不匹配、系统覆盖等)给出解决方案。

byte轻骑兵的技术小窝 1万+

【MFC】学习笔记:常用控件之组合框(Combo Box)

01.目录 目录01.目录02.控件介绍03.控件的消息通知函数04.创建组合框控件及成员函数介绍4.1 组合框的创建4.2 CComboBox类的主要成员函数05.应用实例06.总结 02.控件介绍 组合框控件是我们工作中用得很频繁的一个控件,其实就是把一个编辑框和列表框组合在一起。 适用范围:当你有多个同级选项时,你又不想创建很多个单选框按钮,这时,组合框就能帮你完成这个复杂的创建过程。 组合框一共分为三种类型: 简易(Simple)组合框 下拉式(Dropdown)组合框 下拉列表式(Dro

Cain Xcy的博客 6417

贝叶斯时空模型-INLA-4

该文章中,会简化数学计算的过程,主要是针对,在有数据的基础上,如何应用贝叶斯时空模型,找出影响因素,绘制时间变化的空间分布预测图。上述中关键一步与前几期介绍的不一样的地方是,我们加入了n.group参数,用来指定年份,先看一下Year有多少年的,然后封装在s.index里面。在前述的内容中,我们介绍了,如何处理空间的数据,利用海拔高度预测降雨量的例子。建立好数据及mesh以后,我们现在写INLA公式,如果不考虑残差项,那就是固定效应,现在我们增加残差项,及空间与时间效应。这里的Mesh设定值为10,20。

学习中 2948

常用控件之组合框(Combo Box)

组合框控件是我们工作中用得很频繁的一个控件,其实就是把一个编辑框和列表框组合在一起。适用范围:当你有多个同级选项时,你又不想创建很多个单选框按钮,这时,组合框就能帮你完成这个复杂的创建过程。1.获取组合框控件的列表框中列表项的数量。2.获取组合框控件的列表框中选中项的索引,如果没有选中任何项,该函数返回CB_ERR。3.在组合框控件的列表框中选择某项。nSelect参数指定了要选择的列表项的索引,如果为-1则列表框中当前选择项被取消选中,编辑框也被清空。

2302_80364740的博客 2502

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习工具包 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")

[MFC] Combo Box 控件向 Edit Contrl控件传输Combo Box下拉选项的字符串 [大三TJB_708]

平台:VS2010   1 Combo Box 与 Edit Control 静态Combo Box与Edit Control都是对话框编辑器里面常用的控件。   1.1 Combo Box Combo Box 分为以下三类: Simple:总是把下拉列表的内容显示出来供选择。Dropdown:当下拉列表图标被点击时才显示列表类容,可以在列表中选择内容,并且可以对列表条进行编辑。

记一忘三二 8756

IDEA的使用指南

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

【MFC基础】05组合框Combo Box

Combo Box (组合框)控件很简单,可以节省空间。从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的。 用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本。 下面的例子简要说明如何利用 MFC CComboBox Class来操作字符串列表。 1、定义控件对应变量 假定已经创建了一个Dialog,并且从控件工具箱将 Combo Box 控件拖放到上面。打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble; 在后面的代

weixin_43573071的博客 805

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

vc++MFC设置Combo box下拉选择改变事件,解决想响应一个下拉框ComboBox控件选择改变的事件时,但总在下一次选择改变时才触发上次的响应问题。

3、在事件函数中添加:int index =((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();//获取所选项的索引。//设置改变事件为所选项索引。2、选择组合框右击,选择事件,添加事件函数CBN_SELCHANGE。//更新,获得所选项索引。1、打开MFC添加组合框。

weixin_45948117的博客 3072

mfc combo box 控件使用方法总结

转自:http://blog.sina.com.cn/s/blog_534408920100al29.html 由于接触VC时间不长,对VC中控件的用法也不是很了解,用到时在网上查了很多,现总结如下: 1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小 2、如果 ComboBox 的 Sorted 属性设置为 true,    则新添加项将按字母顺序插入到列表中。    否

hnuzxc的专栏 1545

基于VS2015的MFC学习笔记(组合框控件Combo Box)

组合框控件简介    组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框、下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框。下面讲讲它们的区别。 ① 简易组合框中的列表框是一直显示的;② 下拉式组合框默认不显示列表框,只有在点击了编辑框右侧的下拉箭头才会弹出列表框;③下拉列表式组合框的编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本。    经过上面的介绍,大家应该知道,最常用的当属下拉式组合框和下拉列表式组合框了,

贾贾的博客 1722

MFC对于Combo box控件GetWindowText获取控件值不正确

http://zaneluo.blog.51cto.com/7823750/1422764 Combo Box响应CBN_SELCHANGE消息使用GetWindowText()控件每次获取的值为上次的选择值,但是在CBN_SELCHANGE消息的处理函数OnCbnSelchangeComboDrive()中,使用GetWindowText()函数获取的并不是当前选中项目的内容,而是之前选中

iwilldoitx的博客 1762

MFC Extend CcomboBox

Extended Combo Box的功能比Combo Box更多一点.其中有个功能就是可以在选项前加个图标.         先添加一个Extended Combo Box控件.并给它添加一个变量cbBoxE.                 CImageList* pImageList;      //相当于一个特殊数组,但是它保存的是图片                 p

Alexander_Frank的博客 1398

VC++学习-控件篇(Combo Box)

编程环境:VS2013,MFC 转自:https://www.cnblogs.com/crearo-ssy/archive/2012/11/05/2754641.html combo box控件由两部分组成:编辑框和选择框(列表框)组成,对应的类是CComboBox 1、改变下拉框大小: 先点向下的箭头,就可以调整下拉框大小 2、如果 ComboBox 的 Sorted 属性设置为 tr...

深蓝 737

MFC控件之Combo Box

下拉链表Combo-box Control 常用属性: Sort:对添加到列表框的字符串进行自动排序。(对指定位置的元素项无效) Type:有三个类型 Simple:没有下拉按钮,可以输入字符串,可以通过上下左右切换显示的item。 Dropdown:有下拉按钮,可以输入,可以下拉选择item。 下拉列表:有下拉按钮,不可以输入,可以下拉选择i...

weixin_30501857的博客 352

记使用mfc ComboBox遇到的坑

记使用mfc ComboBox遇到的坑 计划是写过一个根据下拉框内容,显示不同内容的简单功能,但是遇到了获取下拉框内容的响应函数"先于"更新下拉框内容响应函数的坑爹现象! 具体测不清楚 但是找到了解决的方法 首先看一下原来的逻辑: CString csUnit; //out //((CComboBox*) GetDlgItem(IDC_COMBO_TYPE)) ->GetWindowText(csUnit) CComboBox* pTemp = (CComboBox*) GetDlgItem(ID

weixin_42033026的博客 667

MFC下拉框combo box控件实践笔记

1、定义控件对应变量 假定已经创建了一个Dialog,并且给该Dialog建立了类,并且从控件工具箱将 Combo Box 控件拖放到上面。打开 Class Wizard,添加控件对应变量,如:CComboBox m_cbExamble;在后面的代码中会不断使用这个变量。 为该下拉框建立相应的响应函数,该响应函数应该是在Dialog建立的类下 2、向控件添加 Items

1920

Combo Box控件使用

MFC Combo Box控件 CBN_SELCHANGE消息

LightBoat09的专栏 2252
上一篇: [MFC] 鼠标移动到控件上显示提示信息
下一篇: [MFC] 为什么选用多字节字符集后界面变丑了?
_逸之
博客等级 码龄15年 79粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值