MFC入门学习之控件(5)标签控件List Control的添加和使用(中)

【MFC开发(17)】高级列表控件List Control 1.介绍 ListCtrl 高级列表控件也是我们平时编程过程中很常用的一个控件,一般涉及到报表展示、记录展示之类的,都需要ListCtrl 高级列表控件。例如:任务管理器啊,文件列表啊,等等都是ListCtrl 高级列表控件来实现的。 常用属性介绍: Edit Lables 是否可编辑节点 View 用来设置高级列表控件的风格,有以下四种风格 Icon:为每个item显示大图标 Small Icon:为每个item显示小图标 List:显示一列带有小图标的item .. 阅读详情

按照上面的方法进行创建之后,发现存在两个问题:

1 button的getstate()得到的值是520,而不是理论值0x0008

2 当list文件位置超过一屏时,出现iIndex出错的情况

现在将解决思路呈上。

解决问题1的方法是读取这个值,

主要介绍问题2的解决,主要通过两部分,一步是解决了按键读取失败的问题,另一部是进行了一些美化处理工作。

第一步:

//aboveall call Default function to Process message WM_PAINT

Default();

 

//getdevice dc

 

CDC*pDC = GetDC();

CRectrect;

 

CStringstrTemp;

UINTnFormat;

CFont*pFont = GetFont();

intnSel = -1;

 

POSITIONpos = GetFirstSelectedItemPosition();

if(pos == NULL)

{

nSel = -1;

}

else

{

while (pos)

{

nSel = GetNextSelectedItem(pos);

break;

}

}

 

intnOldDCMode = pDC->SaveDC();

//reDrawvisible Item

INTnTopIndex = GetTopIndex();

intnCountItem = GetItemCount();

 

for(int i = nTopIndex; i < nCountItem; i++)

{

if (nSel >= 0 && i == nSel && GetFocus()== this)

{

continue;

}

else

{

//get file name

strTemp = GetItemText(i, m_nButtonMapColumn);

GetSubItemRect(i, m_nButtonMapColumn, LVIR_BOUNDS, rect);

 

pDC->SelectObject(pFont);

//set background white and Brush the text

CBrush brush(RGB(255,255,255));

CBrush *pOldBrush = pDC->SelectObject(&brush);

 

pDC->PatBlt(rect.left+1, rect.top+1,rect.Width()-2,rect.Height()-2,PATCOPY);

pDC->SelectObject(pOldBrush);

 

nFormat = DT_RIGHT;

rect.left += 4;

rect.top += 1;

 

pDC->DrawText(strTemp, &rect, nFormat);

}

}

pDC->RestoreDC(nOldDCMode);

 

UpdateButtonPos();

解决了按键判断和index值读取失败的问题。

第二步主要是因为如果设置list control左右位置可变的情况下,当我们左右拖动list control的列时,会出现窗口有图像滞留的问题,解决方法是添加如下函数:

BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)

{

if (1)

{

switch(((NMHDR*)lParam)->code)

{

case HDN_BEGINTRACKW:

case HDN_BEGINTRACKA:

case HDN_DIVIDERDBLCLICKA:

case HDN_DIVIDERDBLCLICKW:

*pResult = TRUE;

return TRUE;

}

}

return CListCtrl::OnNotify(wParam, lParam, pResult);

}

MFC---List Control的用法总结   List Control是MFC中经常用到的控件,但是可惜该控件并不支持键盘输入、添加各种控件(Button、ComboBox...)等功能,说白了基本功能就是一个用于显示数据的表格性质控件。那么,对于键盘输入的支持以及控件的添加等功能具体如何实现,在下文中一一详述。一、基本的使用1.初始化风格对于style的(报表风格、单选模式等)设置;对于ExtendedStyle(网格添加、item前添... 阅读详情

相关推荐

VC++对话框控件开发实战:从DDX机制到性能优化

在桌面应用开发领域,消息循环与控件交互是GUI编程的核心基础。其原理基于Windows消息驱动架构,通过消息映射机制将用户操作转化为程序事件。这一技术价值在于提供了对系统资源的直接控制能力,尤其适用于对性能、稳定性和硬件交互有严苛要求的工业控制、金融交易等专业场景。通过数据交换(DDX/DDV)机制,开发者能高效实现界面与数据的同步,而列表控件、树控件等复杂组件的优化使用则能有效管理结构化数据。本文以VC++对话框开发为例,深入剖析了DDX数据交换机制与列表控件性能优化等关键实践,为构建高响应、低延迟的桌面

weixin_30621959的博客 350

【MFC】列表视图控件——List Control

01、文章目录 文章目录01、文章目录02、List Control介绍03、List Control的通知消息04、List Control的相关结构体05、List Control的创建06、CListCtrl类的主要成员函数07、代码实例08、总结 02、List Control介绍 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁、直观,在实际应用中能为用户带来方便。 列表视图控件是对列表框控件List Box的改进和延伸。列表视

Cain Xcy的博客 8964

VC++ 6.0与Access数据库图书管理系统实战开发指南

数据库编程是软件开发的核心基础,它涉及数据的存储、组织、访问和管理。其基本原理是通过结构化查询语言(SQL)对数据库进行增删改查(CRUD)操作,实现数据的持久化。在桌面应用开发中,数据库技术是实现业务逻辑和数据管理的基石,其价值在于将用户界面操作与后端数据存储无缝衔接,构建出功能完整的应用程序。典型的应用场景包括各类信息管理系统,如图书管理、库存管理等。本文以经典的图书管理系统为例,深入剖析如何使用VC++ 6.0的MFC框架与Access数据库进行实战开发。文章将详细拆解从环境搭建、数据库设计、ADO连

weixin_30527323的博客 391

MFC List Control 控件

原文链接::https://blog.youkuaiyun.com/sunjikui1255326447/article/details/88916090 1、打开工具箱(可以从视图中找),添加一个List Control控件,ID设置为IDC_PROGRAM_LANG_LIST,View属性设为Report,即为报表风格,Single Selection属性设为True。再添加一个静态文本控件和一个编辑框,静态文本控件的Caption属性设为“选择的语言:”,编辑框的ID设为IDC_LANG_SEL_EDIT,Re

qq_34694118的博客 4609

MFC控件使用-ListControl列表控件

MFC控件使用-ListControl列表控件

weixin_50920631的博客 974

MFC可编辑的ListControl

MFC扩展的ListControl,可以方便的对表格数据进行增删改查!功能强大,每一个函数接口都有详细注释!

C++ MFC combo box和list control控件的使用

Combo Box用法:   combo box控件由两部分组成:编辑框和选择框(列表框)组成,对应的类是CComboBox 1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小 2、如果 ComboBox 的 Sorted 属性设置为 true,    则新添加项将按字母顺序插入到列表中。    否则,在列表的结尾处插入项。 3、要立即响应选择框的改变(即选择框一改

心中有道的专栏 1398

WSL中使用VMD图形化界面

【代码】WSL中使用VMD图形化界面。

handsome213的博客 840

C++ MFC combo box和list control控件的使用

Combo Box用法:combo box控件由两部分组成:编辑框和选择框(列表框)组成,对应的类是CComboBox 1、改变下拉框大小:先点向下的箭头,就可以调整下拉框大小 2、如果 ComboBox 的 Sorted 属性设置为 true, 则新添加项将按字母顺序插入到列表中。 否则,在列表的结尾处插入项。 3、要立即响应选择框的改变(即选择框一改变选项,就立刻将结果传递进去...

weixin_30263277的博客 467

Unity3D实战:5分钟搞定RTSP监控视频播放(附完整代码)

本文提供了一套在Unity3D中快速集成RTSP监控视频播放的实战方案。通过采用LibVLCSharp for Unity这一成熟稳定的跨平台中间件,开发者可以轻松实现RTSP流的解码与渲染,并附有完整的C#代码示例,帮助用户在5分钟内完成集成,适用于智慧园区、安防监控等3D可视化场景。

weixin_29001655的博客 191

《实战指南 | MES业务顾问蓝图设计方案:避免90%项目踩坑,从战略到落地的全攻略》

《MES业务顾问蓝图设计方案》干货分享:制造业高管常遇MES系统沦为"摆设"的困境,根源在于蓝图设计阶段未抓准业务痛点。本文系统梳理了6大关键点:1)战略定位上承ERP下接设备;2)通过现场蹲点挖掘真实需求;3)构建可扩展技术架构;4)建立数据闭环管理;5)组织保障分步实施;6)持续量化KPI优化。方案强调从业务价值出发,避免"纸上谈兵",通过数据驱动实现"计划-执行-反馈"闭环,最终让MES成为企业数字化的核心资产。

「东哥说MES」 专注于MES制造执行系统,为你拆解核心架构、功能模块及与ERP/PLC的集成逻辑。提供从入门到精通的系列干货、精选行业报告与实用工具,构建你的数字化知识体系,关注我,用实战经验照亮你的数字化之路。 1335

MFC List Control简单使用说明

具体解释参阅 http://msdn.microsoft.com/library/default.asp?//item前生成checkbox控件。

weixin_45053845的博客 2188

MBIST --- PATR1.Memorybist测试原理

mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。

sinat_27691203的博客 1万+

MFC 控件 List Control 基础用法

【代码】MFC 控件 List Control 基础用法。

编程小白学编程 736

Claude Code 的 Subagent 到底怎么用?

Subagent是ClaudeCode中的专业化AI代理系统,每个代理专注单一领域(如代码审查、数据库设计),具备独立记忆空间和并行处理能力。适用于中大型项目开发,通过配置文件定义代理职责与权限,可显式调用或自动触发多代理协作。典型场景包括代码安全审查、全栈并行开发和技术方案对比。使用时需注意避免过度拆分、权限过宽等陷阱,结合链式工作流和负载均衡可显著提升效率。实测在电商项目开发中能缩短20%工期并提升40%性能。

bgeyq的博客 1992

Seedance2.5本地部署指南:从环境配置到生产优化的完整实践

在 AI 内容生成领域,本地部署方案正逐渐成为开发者和技术团队关注的焦点。Seedance2.5 作为一款支持图像和视频生成的 AI 工具,其完全离线运行的能力解决了云端服务在数据隐私、使用成本和访问稳定性方面的痛点。对于需要处理敏感内容、频繁生成素材或希望完全掌控生成流程的技术人员来说,掌握本地部署方法具有实际价值。 本文将以 Seedance2.5 的本地部署为例,详细介绍从环境准备、依赖配置到运行验证的完整流程,同时深入分析关键参数配置、常见问题排查方法以及生产环境下的优化建议。通过实际部署过程,理解

weixin_33139275的博客 731

MFC列表控件的用法(基于对话框的编程)

MFC用循环方式写入列表内容,为LIst Control定制表头列宽对齐方式,给列表加上整行选中的属性以及添加网格线,表格

qq_58619891的博客 7325

2026华为OD机考新系统真题 + 双机位C卷 + 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 45万+

MFC中List Control控件的使用

这是我第一次写博客,我也基本上都是自学,很多地方可能讲的并不准确,写这篇文章主要是想做一个学习笔记,并分享给有需求的朋友,如果有错误,欢迎指出,但是求别骂。这里只是举例了List Control在mfc基于对话框的项目的使用,在多文档中用法也是类似,本人正在学习多文档,如果有学习建议的话,希望能教教我。之后右击控件,为控件添加CListCtrl类型的变量。

2301_76788252的博客 1848

PyTorch实战(12)——图神经网络(Graph Neural Network,GNN)

在本节中,我们首先简要概述了图神经网络 (Graph Neural Network, GNN) 的核心概念与应用,GNN 通过构建计算图分层聚合节点特征,解决了传统神经网络处理图数据时的四大局限:信息深度不足、节点顺序敏感、动态扩展困难和特征稀疏性问题。了解了不同类型的图学习任务(包括节点级、边级和图级三大类)。接着我们研究了几种流行的 GNN 模型,包括:GCN (通过权重共享实现图卷积)、GAT (引入注意力机制区分邻居重要性)和 GraphSAGE (采用随机采样应对大规模图)。

盼小辉丶的博客 3668

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VS2010 MFC中List Control控件的使用

可以将多余的东西删除,方法是选中之后按键盘上的Delete建。在对话框的OnInitDialog初始化函数中设置List列表。实现效果为点击单元格会提示点击单元格的行号,列号,以及对应的值。选中List控件 ——>右键——>添加变量,为控件添加变量。选中List控件,在右侧属性栏中将view改为报表模式。在工具箱中拖拽List Control,创建MFC项目,类型选择基于对话框。给List控件的单元格添加点击事件。在生成的响应函数中添加如下代码。这些是List列表的简单操作。创建好后会有一个对话框。

TX_TYX的博客 1306

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MFC List Control控件添加单元格编辑和单元格下拉列表

消息映射ON_EN_KILLFOCUS(IDC_EDIT_CREATEID , & CCListDlg :: OnKillfocusEdit) //添加动态生成编辑框的失去焦点响应函数 ON_CBN_KILLFOCUS(IDC_COMBOX_CREATEID , & CCListDlg :: OnKillfocusCcomboBox)//动态生成编辑框失去焦点响应函数 afx_msg void OnKillfocusCcomboBox();//动态生成下拉列表框失去焦点响应函数。

weixin_45672157的博客 3691

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

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

深度学习工具包 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中list control的使用

1.将list_control的属性中,VIEW选择为Report: 2.为list control 控件添加变量: 3.在创建的对话框中,找到OnInitDialog()函数中添加代码: // TODO: 在此添加额外的初始化代码 m_listcontrol.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 样式设置为整行选择、网格线 m_listcontrol.InsertColumn(0, _T("序 号"), L

星星之火 可以燎原 3218
上一篇: MFC入门学习之控件(4)标签控件List Control的添加和使用(上)
下一篇: MFC入门学习之控件(6)标签控件List Control的添加和使用(下)
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值