打印

electron实现打印功能,支持静默打印、无感打印 会接受两个参数,第一个参数是事件对象,第二个参数是发布事件时传递的参数,而这个参数最终会通过路由的方式传递到打印的新窗口中。所以会判断时候存在这个新窗口,如果存在就要隐藏并销毁掉,这样可以保证我们每次点击打印按钮时都会是最新的隐藏的窗口。订阅的参数会作为路由的query参数拼接到路径上面,print组件就可以拿到点击组件打印传递的参数。事件中将新窗口隐藏掉,这样做的好处是这个新窗口一直都是隐藏的,从而实现无感打印。窗口,将要打印的内容放进新窗口中,这样我们就可以实现打印指定内容的功能。 阅读详情
PowerPrint 1.1 DLL(最老牌的dll文件,几年以前本站独家提供的,现在已经被广泛使用) 
http://www.pdriver.com/display.asp?key_id=1084

在win2000/xp/2003server中自定义纸张打印票据  这是通过输出打印机控制命令来控制针式打印机的,通用性不够好。
http://www.pdriver.com/display.asp?key_id=1537
正文:
作者:李刚 email: zzutligang@hotmail.com 
下载2003/12/26月最新版本 www.pdriver.com/pb03/12/printNewCtrl.rar (size :125kb) 已增加功能:
增加了获得打印作业的功能,同时可以对打印作业进行控制,例如:暂停,恢复,取消,重新开始等。
关于无法获得当前打印机是否缺纸的问题,我发现在Windows中也没有直接获得打印机是否缺纸的功能,但如果你将文档送到打印机,在打印机队列管理中的状态中可以看见有缺纸的提示。所以,我建议各位如何想监视是否缺纸,可以通过获得打印机打印作业,然后分析状态中有没有缺纸的状态信息就可以了!
下载:www.pdriver.com/pb03/12/printctrl.rar (size:78kb) pb7版本 (兼容所有pb版本, rar中已经包括有dll文件)


下载:www.pdriver.com/pb03/12/printctrl_vc.rar vc写的dll源代码。关于编译的时候出错请见本文最下方的所示:
内有作者李刚 VC 6 写的 dll 源代码,当然还有 pb7 写的调用 dll 的示例。中间有一些很强的功能。 
“增加自定义纸张” - 这个功能是对 2000/xp 来使用的,是其它很多 DLL 没有的功能。
 
点击增加自定义纸张以后,让我们来看看打印机的属性中增加了什么内容: 
 
 
 
增加的纸张名称,宽度 / 高,左 / 右,上 / 下等值都是在程序中增加的:如下,是 pb 中调用的代码: 
string paperName = " 试验纸张类型 " 
string printerName = "" 
boolean rt 
long w,h,l,r,t,b 
w = 2000 
h = 1500 
l = 10 
r = 10 
t = 20 
b = 20 
if lb_1.TotalItems ( )<=0 then 
messagebox(""," 没有打印机列表,请执行 < 获得打印机列表 > 功能 ") 
return 
end if 
printerName = lb_1.SelectedItem () 
if printerName="" then 
messagebox(""," 请选择一个打印机! ") 
return 
end if 
rt = AddCustomPaper(ref printerName, ref PaperName, w, h, l, r, t, b) 
if rt then 
messagebox(""," 成功 ") 
else 
messagebox(""," 失败 ") 
end if 
在平时的打印中除了可以在程序中选择纸张外,在 windows 系统中也能见到此打印纸张: 
 
 
关于源代码编译的时候会提示出错,请按作者 所示进行如下修改
看来这个问题不仅仅我碰到了,我不知道vc6的winspool.h中为什么没有定义这个函数,但winspool.lib中确实有这个函数。
打开你的winspool.h,将如下代码添加到文件末尾#ifdef __cplusplus这句话的前面,保存重新编译就可以了。
BOOL 
WINAPI 
SetDefaultPrinterA(
       LPCTSTR pszPrinter
       );
BOOL 
WINAPI 
SetDefaultPrinterW(
       LPCTSTR pszPrinter
       );
#ifdef UNICODE
#define SetDefaultPrinter  SetDefaultPrinterW
#else
#define SetDefaultPrinter  SetDefaultPrinterA
#endif // !UNICODE






直接打印不显示设置对话框


HDC PrintDC;
     DOCINFO docin;
    
     docin.cbSize = sizeof(DOCINFO);
     docin.lpszDocName = "TestDoc";
     docin.lpszOutput = NULL;
    
     CPrintDialog PrintDialog(TRUE,PD_ALLPAGES|PD_NOPAGENUMS,NULL);
     // if(!PrintDialog.GetDefaults()) return ; //如果不用打印设置对话框,使这一行有效
    
     if(PrintDialog.DoModal()!=IDOK) return; //显示打印设置对话框(不显示把这一行去掉)
    
     PrintDC = PrintDialog.CreatePrinterDC(); // 返回一个打印DC句柄
    
     //重新定义纸张大小
     DEVMODE* lpDevMode = (DEVMODE*)PrintDialog.GetDevMode();
     lpDevMode->dmPaperSize = DMPAPER_USER; //设定为自定义纸张尺寸
     lpDevMode->dmFields |= DM_PAPERSIZE; //允许重新设置纸张大小
     lpDevMode->dmPaperLength = 300; //设定纸长为 3 厘米
     ResetDC(PrintDC,lpDevMode); //使设置的参数发挥作用
    
     StartDoc(PrintDC,&docin); // 启动打印工作
     StartPage(PrintDC); // 一页开始
     TextOut(PrintDC,0,10,"打印内容",8); //打印内容
     EndPage(PrintDC); // 一页结束
     EndDoc(PrintDC); // 终止打印工作
    
     if(DeleteDC(PrintDC))
     return; // 删除打印机DC
     else
     {
     AfxMessageBox("出错",MB_OK);
     return;
     }





char szprinter[80];
    char *szDevice,*szDriver,*szOutput;
    HDC hdcprint; // 定义一个设备环境句柄
    //定义一个打印作业
    DOCINFO di = {sizeof(DOCINFO),"printer",NULL};
    // 得到设备字符串存入数组szprinter中
    GetProfileString("windows","device",",,,",szprinter,80);
    // 将设备字符串分解
    if(NULL != (szDevice = strtok(szprinter,",")) 
        && NULL != (szDriver = strtok(NULL,",")) 
        && NULL != (szOutput = strtok(NULL,","))) 
    {
        // 创建一个打印机设备句柄 
        if((hdcprint = CreateDC(szDriver,szDevice,szOutput,NULL)) != 0) 
        { 
            CRect rc, rt1, rt2, rt3, rt4, rt5, rt6;
            if(StartDoc(hdcprint,&di) > 0) //开始执行一个打印作业 
            { 
                StartPage(hdcprint); //打印机走纸,开始打印 
                SaveDC(hdcprint); //保存打印机设备句柄 
                //输出内容
                TextOut(hdcprint,250,260,"处方号:091-4",13); 
                 
                                ................
                                 RestoreDC(hdcprint,-1); //恢复打印机设备句柄 
 
                EndPage(hdcprint); //打印机停纸,停止打印 
                EndDoc(hdcprint); //结束一个打印作业 
                //MessageBox("打印完毕!","提示",MB_ICONINFORMATION); 
            }
            // 用API函数DeleteDC销毁一个打印机设备句柄 
            DeleteDC(hdcprint); 
        } 
        else 
        { 
            MessageBox("没有默认打印机,或者没有安装打印机!"); 
            return; 
        }








利用API打印

介绍: 这一段代码,用以演示《如何在VC++中使用API直接打印》。并且该段代码可以直接嵌入各种工程中,有实际使用的价值。 
  用途: 在Visual C++中,应用程序通常是使用CView中提供的打印功能,在OnPrint()或OnDraw()中向打印机输出。但是对于对话框中的数据,或基于对话框的程序,打印成了一件繁琐的工作。

  该段代码向用户提供了PrintListCtrl()函数,用于打印用户在对话框或FormView中的CListCtrl(控件必须是Report View 形式的)控件中的内容。在打印过程中,根据控件中每列标题的宽度计算打印输出时各列的宽度,并根据数据的行数自动分页。在本代码的基础上稍作修改,就可以适应各种数据的输出。

  用法: 该段代码使用Visual C++ 6.0, 使用Windows API来完成所需功能,使用时将本文本作为头文件使用。打印时直接调用PrintListCtrl(),函数的参数为所要打印的ListCtrl。

*/

//该结构用于存储各列的信息

typedef struct tagColAtt
{
int nColIndex;
CString strColText;
int nPrintX;
int nSubItemIndex;
}COLATT;

BOOL PrintListCtrl(CListCtrl& list)
{
PRINTDLG pd;
pd.lStructSize = sizeof(PRINTDLG);
pd.Flags = PD_RETURNDC;
pd.hDC = NULL;
pd.hwndOwner = NULL;
pd.hInstance = NULL;
pd.nMaxPage = 1;
pd.nMinPage = 1;
pd.nFromPage = 1;
pd.nToPage = 1;
pd.nCopies = 1;
pd.hDevMode = NULL;
pd.hDevNames = NULL;

//显示打印对话框,由用户来设定纸张大小等。
if(!PrintDlg(&pd)) 
   return FALSE; 

ASSERT(pd.hDC!=NULL);

int nHorRes = GetDeviceCaps(pd.hDC, HORZRES); 
int nVerRes = GetDeviceCaps(pd.hDC, VERTRES);
int nXMargin = 2;
int nYMargin = 2;
TEXTMETRIC tm;
GetTextMetrics(pd.hDC, &tm);
int nCharHeight = tm.tmHeight;
int nCharWidth = tm.tmAveCharWidth;


CHeaderCtrl* pHeader = list.GetHeaderCtrl();
//获得行,列的个数
int nColCount = pHeader->GetItemCount();
int nLineCount = list.GetItemCount();

int ColOrderArray[100];
COLATT ca[100];
list.GetColumnOrderArray(ColOrderArray, nColCount);
int nColX =nXMargin*nCharWidth;

//检索各列的信息,确定列标题的内容长度。
for(int i=0 ; i<nColCount; i++)
{
   ca[i].nColIndex = ColOrderArray[i];
   LVCOLUMN lvc;
   char text[100];
   lvc.mask = LVCF_TEXT|LVCF_SUBITEM;
   lvc.pszText =(LPWSTR)text;
   lvc.cchTextMax = 100;
   list.GetColumn(ca[i].nColIndex, &lvc);
   ca[i].strColText = lvc.pszText;
   ca[i].nSubItemIndex = lvc.iSubItem;
   ca[i].nPrintX = nColX;

   nColX += nCharWidth * wcslen(ca[i].strColText);

   if(nColX > nHorRes) 
   {
    DeleteDC(pd.hDC);
    AfxMessageBox(_T("字段太多,无法在一行内打印,请试用较大的纸,或横向打印。"));
    return FALSE;
   }
}

DOCINFO di;
di.cbSize = sizeof(DOCINFO);
di.lpszDocName =_T("ListCtrl Data Printing"); 
di.lpszOutput = (LPTSTR) NULL; 
di.lpszDatatype = (LPTSTR) NULL; 
di.fwType = 0; 
StartDoc(pd.hDC, &di);
StartPage(pd.hDC);

//调整各列的宽度,以使各列在后面的打印输出时更均匀的打印在纸上。
int space = (nHorRes-nXMargin*nCharWidth-nColX)/nColCount;
for(int i=1; i<nColCount; i++)
{
   ca[i].nPrintX += i*space;
}

//输出列标题
for(int i=0; i<nColCount; i++)
   TextOut(pd.hDC,ca[i].nPrintX, nYMargin,ca[i].strColText, wcslen(ca[i].strColText));

int nMaxLinePerPage = nVerRes/nCharHeight -3;
int nCurPage =1;
//输出各列的数据
for(int i=0; i<nLineCount; i++)
{
   for(int j =0; j<nColCount; j++)
   {
    if(i+1-(nCurPage-1)*nMaxLinePerPage > nMaxLinePerPage)
    {
     //新的一页
     EndPage(pd.hDC);
     StartPage(pd.hDC);
     nCurPage ++;
    }
    CString subitem = list.GetItemText(i, j);
    TextOut(pd.hDC, ca[j].nPrintX, nYMargin+(i+1-(nCurPage-1)*nMaxLinePerPage)*nCharHeight, subitem, wcslen(subitem));
   }
}
EndPage(pd.hDC);
EndDoc(pd.hDC);
//打印结束
DeleteDC(pd.hDC);
return TRUE;
}



打印机打印模式简述 打印机的打印模式一般分为:普通字符/字打印模式、位图打印模式和页打印模式。普通字符/字打印模式需要有字库支持,在字库中通过字符或字内码(如:字符的ASCII编码、汉字的GBK编码、BIG5编码等)查询得到字符或者字的点阵序列,最后将点阵序列发送给打印头完成打印。位图打印模式是将所有打印内容看做图片,然后通过分析图片得到一行点阵数据,逐行完成整幅图片的打印。在位图打印模式中,每一行的数据被封为一包, 阅读详情

相关推荐

c#打印和打印预览

打印 包括 页面设置、打印预览、打印       打印的原理是:生成mdi文件,系统碰到mdi的时候会自动以打印的方式处理。所以,不管用什么模板,什么方式;能在PrintPage事件处理中,生成一张要打印内容的图片就OK了!主要的支持类都包括在命名空间System.Drawing.Printing中,在程序集System.Drawing.dll中实现。打印主要通过PrintDocument

1001生活 5276

c# 对DEVMODE结构的声明

DEVMODE结构包含两个联合,要使用精确的字节偏移量,才能将每个结构成员正确排序。这里使用Ansi和unicode两个版本,对应以A或W结尾的EnumDisplaySettings函数,如果不对应各自版本的函数将出现不正确的结构,在Ansi,一个字符为1,在unicode,则为2。DeviceName在这里版本的字节偏移量是不同的,Ansi版本占了32*1,即32个偏移量;unicode版本占了

RFEZGC的专栏 3258

LODOP打印控件进行批量打印

3.批量打印不同内容,页数很少,不需要预览,直接打印,可一个任务分页,也可一页分多任务,均可。4.批量打印大批量不同内容,内容多,页数很多,建议分页分任务,分组打印,提高打印性能。打印上千上万个任务,任务太多,对操作系统负担大,可酌情分页,分页分任务进行折中处理。(1)通过在一个任务中分页,循环添加页数,每页添加不同内容,一个任务中打印多页。2.批量打印不同内容,页数很少,每页内容也很少,需要预览,可在一个任务中分多页。(3)多任务与多页相结合,既分页又分任务,循环多任务,每个任务中循环多页。

Chihirozy的博客 1930

windows API更改系统分辨率

通常更改分辨率可以通过windows显示设置去更改,然而有些时候需要我们使用API进行修改。下面介绍这个函数的使用方法。 WINUSERAPI LONG WINAPI ChangeDisplaySettings( _In_opt_ DEVMODEA* lpDevMode, _In_ DWORD dwFlags); 该函数用户更改分辨率相关设置,参数1是设备名称,每一个显示其都有一个唯一标识的名称。 lpDevMode:指向一个描述转变图表的DEVMODE的指针。DEVMODE的dm

xpg4321的博客 3206

Unity如何驱动打印机打印

互动拍照应用中,经常会需要打印照片,目前软件开发这块可以有以下做法: 基于Process 1 画图板 mspaint.exe System.Diagnostics.Process.Start("mspaint.exe", "/pt " + Application.streamingAssetsPath + "/demo.jpg"); 调用默认打印机打印,不能指定打印机,...

u010941527的专栏 1814

新版股票配资系统源码/股票分析系统技术方案

新版股票配资系统;全套源码支持新股申购功能,包含C#+MySQL开发的后台系统及Spring框架,采用C/S架构。注意:本源码仅限技术学习、功能测试及模拟交易使用,严禁用于非法用途,违者责任自负。

q318136906的博客 1643

DEVMODE 结构体

typedef struct _devicemode { TCHAR dmDeviceName[CCHDEVICENAME]; //打印机(显示设备)名称 WORD dmSpecVersion; WORD dmDriverVersion; //驱动版本号 WORD dmSize; //结构体大小 WORD dmDriverExtra; DWORD dmField...

爬行的菜鸟的博客 3261

基于价值的深度强化学习:DQN

本文主要是介绍DQN原理和算法伪代码和代码实现,算法实现包括pytorch版本和stable-baselines3版本

溯源的专栏 1085

函数“LPDEVMODEA AtlDevModeW2A(LPDEVMODEA,const DEVMODEW *)”已有主体

<br />把Debug或者release目录全部删除

yy13210520的专栏 2154

GBase8a-GDCA认证考试-复习参考题

为提升产品服务水平定期举办GBase产品认证培训,培训更多GBase数据库专业人员,满足用户快速成长的业务需求,建设GBase产品生态。请注意甄别,根据所学知识综合判断,正确率97%(97分)。

weixin_41826637的博客 2374

Lumerical 教程,包含作者个人理解及相关设计案例 (目前共计184篇,持续更新中)

4138。

u011699626的博客 1619

前端实现自动打印 批量打印

众所周知,前端打印的API只有window.print(),而我们要实现自动打印和批量打印,甚至连获取本地电脑的打印机有哪些都无法获取到。难道,前端对此真的无能为力吗?答案是 否定 ! Lodop 由此诞生,有人说她是Web打印控件的“终结者”,因为接触“她”后再不想别的“她”。 那我们就来揭开这神秘都面纱! 一,首先我们要改造Lodpo的源代码文件为适合Vue/React/Angular等框架如...

全栈攻略 3万+

YOLOv11改进 | 添加注意力篇 | 一文带你改进GAM、CBAM、CA、ECA等通道注意力机制和多头注意力机制

这篇文章给大家带来的改进机制是一个汇总篇,包含一些简单的注意力机制,本来一直不想发这些内容的(网上教程太多了,发出来增加文章数量也没什么意义),但是群内的读者很多都问我这些机制所以单独出一期视频来汇总一些比较简单的注意力机制添加的方法和使用教程,本文的内容不会过度的去解释原理,更多的是从从代码的使用上和实用的角度出发去写这篇教程。欢迎大家订阅我的专栏一起学习YOLO!YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、GAM2.1 GAM的介绍2.2 GAM的核心代码。

Snu77的博客 5152

打印及批量打印

开发十年,就只剩下这套架构体系了! >>> ...

qvanminpiao的博客 4773

(汇总篇)语义SLAM相关开源方案| 全球优秀作者与实验室 | SLAM学习资料整理

SLAM 与深度学习相结合的工作当前主要体现在两个方面,一方面是将语义信息参与到建图、位姿估计等环节中,另一方面是端到端地完成 SLAM。针对建图的工作一方面是利用几何信息进行稠密重建,另一方面很多工作利用语义信息达到了很好的语义重建效果,三维重建、SFM。动态 SLAM 也是一个很值得研究的话题,这里不太好分类,很多工作用到了语义信息或者用来三维重建,收集的方案相对较少。优化可能是 SLAM 中最难的一部分了吧 +_+ ,一般都是直接用现成的因子图、图优化方案,要创新可不容易。

熊猫小妖的AI世界 7867

【史上最全面esp32教程】网络篇和tcp/ip的使用

ESP32史上最全面wifi和tcp/ip连接及示例程序

m0_62599305的博客 9521

MFC打印 打印预览

这两篇文章是我看了那么多写MFC打印功能中介绍的相对较好的,所以转载了过来,以方便自己以后学习使用 前段时间需要将日志信息通过打印机打印出来。 总结了一下其中的一些用法: 1:用CPrintDialog 可以呼出窗口让用户选择打印机或者采用默认的打印机直接打印。     StartPage…..EndPage  完成一页文档的打印。  如需改变DC设置,需要调用ReSetDC()

renyongwang1988的专栏 6573

(四)C++自制植物大战僵尸游戏启动流程

鼠标左键单机VS2022上方工具栏中进行项目启动。第一次启动项目需要编译项目中所有代码文件,编译生成需要一定的时间。不同性能的电脑需要消耗的时间差别可能较大,通常在几分钟到几十分钟之间。编译成功后会自动启动运行游戏。qi编译成功后自动启动运行游戏如下图。

尔灵尔亿的博客 2466

网页打印和ActiveX控件打印

浏览器网页打印 前言 客户对于一些插件比较敏感,如金融、银行等出于安全的考虑和产品的把控,可能不愿意页面打印的时候,客户端浏览器安装插件。(当然,用户有各种各样的需求和打印格式要求,愿意使用打印控件的,开发的打印功能当然很好。) 所以直接使用浏览器自带的打印功能,就成为一个选择。 打印功能介绍 2.1 普通打印 如果要将当前网页的内容直接打印到白纸上,很简单,使用如下js代码即可实现。 ...

u011041009的博客 3485

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

打印系统开发(42)——静默打印

1.问题描述 希望每次打印时,都是用固定的打印机打印并且不希望弹出对话框进行设置,此时便可以设置静默打印。 1.1什么是静默打印 静默打印即点击打印时不弹出选项窗口和打印机设置窗口直接进行打印。 1.2支持静默打印的打印方式 零客户端打印、本地打印、服务器端打印支持静默打印。 2.静默打印设置方法 2.1 零客户端打印设置方法 注:只支持 IE 点击模板-打印...

qq_34573534的博客 5586

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

打印机如何打印白色_打印机可以打印白色吗?

打印机如何打印白色The vast majority of the time we all print on white media: white paper, white cardstock, and other neutral white surfaces. But what aboutprinting white? Can modern printers print white and i...

cum88284的博客 7904

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

怎么用计算机打印出东西,打印东西怎么打印出来

快速导读:Q1:怎么查看打印机的打印记录。我打印了忘记保存,要发给别人。打印出来的东西给别人了。1、在电脑端左下角开始选项按钮处点击,在列表中选择【设备与打印机】,如图所示。2、接着右击该打印机,在弹出的对话框中选择“属性”选项按钮。3、进入到属性对话框,切换到“端口”页面,选择“配置端口”选项进行点击操作。4、然后在弹出的对话框中IP地址区域,复制该ip地址。5、然后在电脑上打开一个浏览器,将复...

weixin_42500156的博客 4070

网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距

1、控制"纵打"、 横打”和“页面的边距 (1) (2) ------------------------------------------------ 关于这个组件还有其他的用法,列举如下: WebBrowser.ExecWB(1,1) 打开 Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 Web.ExecWB(4,1) 保存网页 Web.ExecWB(6,1) 打印 Web.ExecWB(7,1) 打印预览 Web.

魔拉宝 1万+

SAP打印机原理、打印配置及打印操作

一、SAP打印原理  SAP的打印过程分两个步骤: 创建假脱机请求 创建输出请求 在点击打印按钮后,系统会提示创建假脱机请求后,你可以选择直接生成输出请求,或者手动生成输出请求,产生输出请求后,系统会根据输出设备的配置,调用相关的打印程序;执行打印任务。 手动生成输出请求:TCode:SP01 直接生成输出请求:设置时可以在用户属性(su3-->Default-->勾选

少年休闲海 5万+

C-Lodop打印插件批量打印thinkphp打印fastadmin打印

C-Lodop打印插件批量打印thinkphp打印fastadmin打印 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /

webnoties的专栏 1429
上一篇: Windows文件操作类函数
下一篇: 打印机编程
htt9931
博客等级 码龄24年 43粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值