使用AcPlPlotEngine打印

整个打印的过程是比较复杂的, 要全面搞懂, 就要了解AcDbLayout、 AcDbPlotSettings、
AcDbPlotSettingsValidator、 AcPlPlotEngine、 AcPlPlotInfo几个类(缺一不可),以及它们之间的相互关系,而打印进度对话框可以不要。

注意加上头文件:#include “AcPlPlotEngine.h”

void batPlot()
{
//批量打印
// 取得当前layout
AcDbLayoutManager *pLayoutManager =
acdbHostApplicationServices()->layoutManager(); //取得布局管理器对象
AcDbLayout *pLayout =
pLayoutManager->findLayoutNamed(pLayoutManager->findActiveLayout(TRUE),TRUE);//获得当前布局
AcDbObjectId m_layoutId = pLayout->objectId();//获得布局的Id
//获得打印机验证器对象
AcDbPlotSettingsValidator *pPSV =NULL;
pPSV = acdbHostApplicationServices()->plotSettingsValidator();
//更新打印设备列表
pPSV->refreshLists(pLayout);
//打印机设置
ACHAR* m_strDevice = _T(“DWF6 ePlot.pc3”);//打印机名字
pPSV->setPlotCfgName(pLayout,m_strDevice);//设置打印设备
ACHAR* m_mediaName = _T(“ISO A4”);//图纸名称
pPSV->setCanonicalMediaName(pLayout,m_mediaName);//设置图纸尺寸
pPSV->setPlotType(pLayout,AcDbPlotSettings::kWindow);//设置打印范围为窗口
pPSV->setPlotWindowArea(pLayout,100,100,200,200);//设置打印范围,超出给范围的将打不出来
pPSV->setCurrentStyleSheet(pLayout,_T(“JSTRI.ctb”));//设置打印样式表
pPSV->setPlotCentered(pLayout,true);//是否居中打印
pPSV->setUseStandardScale(pLayout,true);//设置是否采用标准比例
pPSV->setStdScaleType(pLayout,AcDbPlotSettings::kScaleToFit);//布满图纸
pPSV->setPlotRotation(pLayout,AcDbPlotSettings::k90degrees);//设置打印方向

//pPSV->setPlotViewName(pLayout,_T(“打印1”));

//准备打印/////////////////////////////////////////////////////////////////////////
AcPlPlotEngine* pEngine = NULL;//创建打印引擎
if(AcPlPlotFactory::createPublishEngine(pEngine)!=Acad::eOk)
{
acedAlert(_T(“打印失败!”));
return;
}
// 打印进度对话框
AcPlPlotProgressDialog *pPlotProgDlg = acplCreatePlotProgressDialog(acedGetAcadFrame()->m_hWnd,false,1);
pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kDialogTitle,_T(“lot API Progress”));
pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kCancelJobBtnMsg,_T(“Cancel Job”));
pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kCancelSheetBtnMsg,_T(“Cancel Sheet”));
pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kSheetSetProgressCaption,_T(“Job Progress”));
pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kSheetProgressCaption,_T(“Sheet Progress”));
pPlotProgDlg->setPlotProgressRange(0,100);
pPlotProgDlg->onBeginPlot();
pPlotProgDlg->setIsVisible(true);
//begin plot
Acad::ErrorStatus es = pEngine->beginPlot(pPlotProgDlg);
AcPlPlotPageInfo pageInfo;//打印页信息
AcPlPlotInfo plotInfo; //打印信息
// 设置布局
plotInfo.setLayout(m_layoutId);
// 重置参数
plotInfo.setOverrideSettings(pLayout);
AcPlPlotInfoValidator validator;//创建打印信息验证器
validator.setMediaMatchingPolicy(AcPlPlotInfoValidator::kMatchEnabled);
es = validator.validate(plotInfo);
// begin document
const TCHAR *szDocName = acDocManager->curDocument()->fileName();//获得当前的文件名

//最后一个参数需要传入文件名
es = pEngine->beginDocument(plotInfo, szDocName, NULL,1,true,_T(“D:\\test.dwf”));
//给打印机和进度对话框发送消息
pPlotProgDlg->onBeginSheet();
pPlotProgDlg->setSheetProgressRange(0, 100);
pPlotProgDlg->setSheetProgressPos(0);
//begin page
es = pEngine->beginPage(pageInfo, plotInfo, true);
es = pEngine->beginGenerateGraphics();
es = pEngine->endGenerateGraphics();
//end page
es = pEngine->endPage();
pPlotProgDlg->setSheetProgressPos(100);
pPlotProgDlg->onEndSheet();
pPlotProgDlg->setPlotProgressPos(100);
//end document
es = pEngine->endDocument();
//end plot
es = pEngine->endPlot();
//返回资源
pEngine->destroy();
pEngine = NULL;
pPlotProgDlg->destroy();
pLayout->close();
}

发表在 ObjectArx | 留下评论

CAD二次开发环境搭建

CAD版本和ObjectArx+VS版本对应关系

更新到CAD2018

CAD版本

内部版本号

Arx版本

VS版本

备注

2004

R16.0

ObjectARX 2004/2006

VS2002/VS2003

2004不支持表格

2005

R16.1

2006

R16.2

2007

R17.0

ObjectARX 2007

VS2005

CAD2008后开始有64位版本

2008

R17.1

2009

R17.2

2010

R18.0

ObjectARX 2010

VS2008

需要升级到SP1,否则编译会报错

2011

R18.1

2012

R18.2

2013

R19.0

ObjectARX 2013

VS2010

2014

R19.1

2015

R20.0

ObjectARX 2015

VS2012/VS2013

 优先使用2012,使用2013需要将项目C++库调到2012

2016

R20.1

2017

R21.0

ObjectARX 2017

VS2015

2018

R22.0

ObjectARX 2018

VS2015

升级到SP3

1:CAD的内部版本号格式为R大版本.小版本。大版本号相同的CAD可以用同一个Arx版本编译,但是低版本的CAD不支持高版本的Arx。例如ObjectArx2004编译的程序AutoCAD2004~2006都可以使用,但是ObjectArx2006编译的程序AutoCAD2006可以使用,2004和2005都不可以使用。

2:AutoCAD2013之前每三年推出一个大版本,之后每两年推出一个大版本。大版本之间无法做到相互支持,因为每个大版本对应的编译VS版本都不相同,MFC依赖库也不相同,无法相互兼容。

3:从CAD2006开始支持.Net二次开发,但是前面几个版本2006~2008接口也不完全相同,需要做一下兼容性调整,再后面的版本就基本稳定了,这个环境就容易的多。做一些简单的应用开发可以考虑采用.Net来做二次开发。

 

 

发表在 ObjectArx | 留下评论

中印爆发最严重对峙之一个普通国民的思考

中印爆发最严重对峙

事件的前因后果网上,各种新闻铺天盖地

这里就不抄了,只想发表一下做为一个普通国民最基础最纯真的看法。

没有别的,中国人太可怜了。

强大的国家欺负我们,美国轰炸南斯拉夫大使馆,银河号事件,派遣航母进入台湾海峡,我们打不赢他们,我们忍了,我们抗议,我们要和平。

跟我们有的一拼的国家,当然有些人说印度、越南完全跟中国不在一个数量级上,我觉得也不完全说的过去,总体上来说他们肯定要比我们差一点,但至少不会有代差,不会有数量级上的差异,真的说他们比我国差很多的估计是捧杀。我们还是忍,我们还是抗议,还是让万能的外交部冲在最前面。总结起来就是我抗议你们欺负我,你们别再欺负我了啊。

弱小的国家欺负我们,例如印尼,菲律宾。我们还是忍,我们还是抗议,还是让万能的外交部冲在最前面。连经济制裁这种手段都不敢用。

中国人民能活下来真心不容易,对内有最牛逼哄哄的城管,拆迁队,警察。如果他们拿对付下面人民1%的战斗力去对付印度,菲律宾,他们还敢在边界猖狂。对付美国当然他们没有这个能力。对外有和平,和平,和平的政府。

什么时候才能想清楚,和平不是别人给你的施舍,而是你奋斗的结果。

发表在 其它 | 标签为 | 留下评论

高科西路(沪南路-罗山路)最新消息17年7月12日

昨天去蓝海博龙国际大酒店还EVCARD车的时候,保安说扩路已经开工,门口已经封起来施工了,上海还有这种比乡间小路还破的路也是醉了。

关键上就这一小段,沪南路往西一段和罗山路往东一段都是特别宽敞的路。

就这样一条大破路竟然是连接北蔡和张江的城市主干道,每天堵得不成样。

明明只有十分钟的路程却要开半个小时还多。

不过幸好盼了几十年总算开工了。

发表在 其它 | 标签为 | 留下评论

C#获取命令行输出内容的方法

转载:http://www.cnblogs.com/ymind/archive/2012/03/23/2415038.html

很多时候我们需要以编程的方式获取命令行输出的内容,研究了不少时间,终于搞定了。

获取命令行输出内容的方式有传统和异步两种方式。

传统方式:

using (Process process = new System.Diagnostics.Process())
{
process.StartInfo.FileName = “ping”;
process.StartInfo.Arguments = “www.ymind.net”;
// 必须禁用操作系统外壳程序
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;

process.Start();

string output = process.StandardOutput.ReadToEnd();

if (String.IsNullOrEmpty(output) == false)
this.textBox1.AppendText(output + “\r\n”);

process.WaitForExit();
process.Close();
}

异步方式:

private void button3_Click(object sender, EventArgs e)
{
using (Process process = new System.Diagnostics.Process())
{
process.StartInfo.FileName = “ping”;
process.StartInfo.Arguments = “www.ymind.net -t”;
// 必须禁用操作系统外壳程序
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;

process.Start();

// 异步获取命令行内容
process.BeginOutputReadLine();

// 为异步获取订阅事件
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
}
}

private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
// 这里仅做输出的示例,实际上您可以根据情况取消获取命令行的内容
// 参考:process.CancelOutputRead()

if (String.IsNullOrEmpty(e.Data) == false)
this.AppendText(e.Data + “\r\n”);
}

#region 解决多线程下控件访问的问题

public delegate void AppendTextCallback(string text);

public void AppendText(string text)
{
if (this.textBox1.InvokeRequired)
{
AppendTextCallback d = new AppendTextCallback(AppendText);
this.textBox1.Invoke(d, text);
}
else
{
this.textBox1.AppendText(text);
}
}

#endregion

但是在异步方式下也有一个麻烦就是等待程序结束无法调用

process.WaitForExit();

因为调用这个会导致堵塞

命令行输出不是一行行出来的,而是一下子出来的。

解决办法就是不调用process.WaitForExit();

而自己去控制

while (!process.HasExited)
{
System.Windows.Forms.Application.DoEvents();
System.Threading.Thread.Sleep(20);
}

发表在 C# | 标签为 , , | 留下评论

不小心把屏幕菜单隐藏了怎么调出来

CAD好帮手支持屏幕菜单和CAD菜单两种菜单,双保险

所以忽略了细节处理,万一用户把两个都关闭了

那不是都找不到了吗?

这里告诉大家一个补救办法

在CAD命令行里输入cadgj_showmenu

看下屏幕菜单是不是又显示出来了。

发表在 CAD好帮手教程 | 标签为 , | 留下评论

CAD、CATIA绘图人员不建议购买ThinkPad E450c

入手了一台ThinkPad E450c

但是不知道什么原因,显卡驱动总是有问题。

如果运行CAD2010,CATIA R24。

经常会出现驱动从异常中恢复这种情况。

更新到最新版本的驱动也无法解决问题。

遇到这种情况蓝屏的可能性超过50%,弄的我现在除非实在有必要。

一般都不打开CAD2010,就用08看图。

但是使用CAD2008却不会出现这种问题,感觉应该是驱动不兼容的问题。

这种问题估计都不在保修范围内,但是对设计画图影响非常大。

发表在 其它 | 留下评论

CATIA R24破解

本机环境:

Windows 7 家庭普通版 64位操作系统

主要参照的破解文章为

百度文库的<<CATIAV56R2014安装教程 >>

大家可以参照着下载下来看,过程是没有问题的。

CATIAV56R2014.docx

听一些朋友说持续多次破解最后也是可以破解成功的的。

但是我试了很多很多次,最终还是没有破解成功,后面我想了想

破解软件的新版本能否解决问题呢,一实验还真就破解成功了。
_SolidSQUAD_.rar

其中对应的exe文件为:DSLS_SSQ_V6R2015x_Installer_01042015.exe

文件中显示的应该是可以破解R25的,但是由于没有具体试过,所以不敢妄下结论。

如果有破解R25成功的欢迎给我留言。

操作应该都是差不多的。

发表在 其它 | 标签为 , , | 留下评论

CATIA P3 V5-6R2014用于学生怎么回事求解

CATIA用于学生

解决方案:

将许可证中的

CATIA用于学生

勾选去掉即可解决。

 

 

发表在 其它 | 标签为 | 留下评论

VS2005 180天限制破解方法

VS2005破解在控制面板的“添加或删除程序” 中选择“更改/删除”Microsoft Visual Studio 2005,然后输入正式版的序列号( KYTYH-TQKW6-VWPBQ-DKC8F-HWC4J ),就可以把 VS2005 试用版升级为正式版(破解180天试用限制)
Visual Studio 2005注册升级
可升级正式版key:KYTYH-TQKW6-VWPBQ-DKC8F-HWC4J
找到SETUP文件夹下的setup.sdb,用记事本打开它,找到[Product Key],将下面的一行序列号删除,改为正式Key,保存后再安装就是正式版了,记住,中间没有横线!!

 

发表在 实用软件 | 标签为 | 留下评论

用搜狗输入法总是自动搜索 怎么取消?

设置属性中

搜索

搜索环境关闭掉

搜狗取消自动搜索

 

 

 

发表在 其它 | 标签为 | 留下评论

快刀CAD批量打印KDPlot

官网 http://www.kuaidaowork.com快刀批量打印快刀CAD批量打印KDPlot 3.8.7

  • 全自动图框极速识别;
  • 按顺序批量打印图纸;
  • CAD图对应转为PDF/JPG/PNG/PLT
  • PDF与CAD图纸页面纵横向自动适应;
  • 自动配置黑白、蓝图等打印样式;
  • 图幅自适应,比例自适应;
  • 按图幅大小分类生成PDF
  • 适用于 模型/布局(多图/单图)
发表在 CAD实用软件 | 标签为 | 留下评论

解决.Net中文输入BUG

WinForm程序有的时候会遇到无法切换到中文输入的BUG
解决办法如下:
在Form的构造函数中将ImeMode修改为ImeMode.OnHalf
public Form1()
{
InitializeComponent();
ImeMode = ImeMode.OnHalf;
}
另外针对DataGridView还需要特殊处理
在事件EditingControlShowing中将Control的ImeMode设置为ImeMode.OnHalf
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control == null)
return;
e.Control.ImeMode = ImeMode.OnHalf;
}
这样默认打开的时候所有的输入法都是中文半角的了。

发表在 C# | 留下评论

VS2010专业版密钥(亲测有效)

YCFHQ-9DWCY-DKV88-T2TMH-G7BHP
装了VS2010,安装后可以激活的。

发表在 实用软件 | 标签为 | 留下评论

C++反转单向链表

单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点;列表是由结点构成,head指针指向第一个成为表头结点,而终止于最后一个指向nuLL的指针

单项列表的主要特点就是只知其子,不知其父。每个节点只能访问到它的下一个节点而访问不了它的上一个节点。

struct  Node {  int value;  Node* rbnext; };

这个简单的结构体构成了一个最简单的单链表节点

初始化

Node* pHead=new Node;

pHead->value=0;

pHead->rbnext=NULL;

Node* p=pHead;

for(int i=1;i<=5;i++)

{

p->rbnext=new Node;

p=p->rbnext;

p->value=i;

p->rbnext=NULL;

}

反转函数

void Reverse(Node*& pHead)

{

Node* p=pHead;//当前节点

Node* pBefore=NULL;// 上一个节点

Node* pNext=p->rbnext;//下一个节点

while(pNext!=NULL)

{

p->rbnext=pBefore;//当前节点的下一个节点为pBefore

pBefore=p;//pBefore设为当前节点

p=pNext;//当前节点移到下一个节点

pNext=pNext->rbnext;//下一个节点顺移

}

p->rbnext=pBefore;//最后一个节点赋值前一个下一个节点为pBefore

pHead=p;//最后赋值链表头

}

反转之前是 0 1 2 3 4 5

反转之后是 5 4 3 2 1 0

证明反转算法是正确的。

 

发表在 C++ | 标签为 | 留下评论

云在指尖骗局

去我小叔家走亲戚

他硬是拉着我进入了云在指尖

我想到网上查一下是不是骗子是不是传销

从分销模式来看,已经涉及传销,主要是发展下线,锁定亲戚朋友,甚至陌生人,只要能发展代理商,管你认识不认识。微商本来是销售产品,一切以产品为中心的,但是云在指尖,推崇的是让你去锁定别人,发展代理商,发展层级关系,这已经违背了正规微商的初衷,这就是一个网络传销。

网上的讨论各种各样,有的说就算是传销又怎么样,我这是是全新的网络传销。

为了更深入的搞清楚

不想小叔深陷其中,毕竟小叔对我家还是挺不错的。

我打开“云在指尖”官网。

找到备案号

琼ICP备15000058号-2

这个没有问题,可是我去工信部官网,竟然查不到。

难道是他们工作人员疏忽写错了,然后我又用域名查询了一下

还是结果:没有符合条件的记录

然后我再 爱站网上查询了一下,还是同样的结果 无备案

总结一下三点

一:发展下线分销 是新型网络传销无疑

二:网站备案号作假,你可以不写,但你写个假的,那还有什么好说的,不是骗人是什么?

三:整个官网所有的篇幅都是教人如何赚钱如何发展下线,这是一个正常的电商该做的吗?

所以大家千万别再上当受骗了。

发表在 网站建设 | 标签为 | 一条评论

C#打印pdf文件

通过调用其他的类库实现

先下载下面6个dll文件

很多网站都喜欢抄文章,说了这些dll,怎么说也得给出下在地址吧

资源下载 ftp://www.cadgj.com/PdfPlot.rar

部分文件为破解版,商业应用请慎重

//O2S.Components.PDFView4NET.dll
//O2S.Components.PDFRender4NET.dll
//FontBox-0.1.0-dev.dll
//IKVM.GNU.Classpath.dll
//IKVM.Runtime.dll
//PDFBox-0.7.3.dll

 

//这是引用的3个命名空间
using O2S.Components.PDFRender4NET;
using System.Drawing.Printing;
using O2S.Components.PDFRender4NET.Printing;

        /// <summary>
        /// 打印的代码
        /// </summary>
        /// <param name=”url”>要打印的PDF路径</param>
        private int  printShow(string url)
        {
            int isOK = 0;
            PDFFile file = PDFFile.Open(url);
            PrinterSettings settings = new PrinterSettings();
            System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
            settings.PrinterName = “hp LaserJet 1160 PCL 5e”;
            settings.PrintToFile = false ;

            //设置纸张大小(可以不设置,取默认设置)3.90 in,  8.65 in
            PaperSize ps = new PaperSize(“test”,4,9);
            ps.RawKind = 9; //如果是自定义纸张,就要大于118,(A4值为9,详细纸张类型与值的对照请看http://msdn.microsoft.com/zh-tw/library/system.drawing.printing.papersize.rawkind(v=vs.85).aspx)

            O2S.Components.PDFRender4NET.Printing.PDFPrintSettings pdfPrintSettings = new O2S.Components.PDFRender4NET.Printing.PDFPrintSettings(settings);
            pdfPrintSettings.PaperSize = ps;
            pdfPrintSettings.PageScaling = O2S.Components.PDFRender4NET.Printing.PageScaling.FitToPrinterMarginsProportional;
            pdfPrintSettings.PrinterSettings.Copies = 1;

            try
            {
                file.Print(pdfPrintSettings);
                isOK = 1;
            }
            catch (Exception)
            {
                isOK = -1;
                throw;
            }
            finally
            {

                file.Dispose();
            }
            return isOK;
        }

//单击一个打印按钮进行打印
    protected void btnPrint_Click(object sender, EventArgs e)
    {
        string url = “这里是PDF档的路径如:C:\\Documents and Settings\\AuYeungCK\\My Documents\\myfile\\aa1.pdf”;
        int isOK =-1;
        isOK=printShow(url);
        if (isOK > 0)
        {
            Response.Write(“打印成功!”);
        }
        else {
            Response.Write(“打印失败!”);
        }
    }

发表在 C# | 标签为 , | 留下评论

TrackPopupMenu必须选择一个,类似DoModal

需要显示一个弹出菜单,要求用户在菜单中选择一项,只有用户选择完其中一项函数才返回

类似于CDialog的DoModal,只有用户执行选择后才返回,程序才继续运行

这里就要用到一个非常实用的菜单状态

TPM_RETURNCMD:若设置此标志;函数将用户所选菜单项的标识符返回到返回值里。

TPM_NONOTIFY:若设置此标志,当用户单击菜单项时函数不发送通知消息(不需要发送消息,可选参数)

CMenu menu;

POINT pt;

GetCursorPos(&pt);

 

if (menu.LoadMenu(IDR_MENU_ZWLX)) {

CMenu* pContextMenu = menu.GetSubMenu(0);

 

if (pContextMenu) {

pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON|TPM_RETURNCMD|TPM_NONOTIFY, pt.x, pt.y, acedGetAcadFrame());

}

}

发表在 C++ | 标签为 | 留下评论

修复32位CAD15,16菜单bug

修复32位CAD15,16菜单bug

修复32位下总是弹出菜单失败

修复设置为仅显示屏幕菜单 结果没有菜单的BUG,因为2015和2016暂时还不支持屏幕菜单

下载地址:http://www.cadgj.com/files/HaoBangShou_1.0.9.exe

 

发表在 CAD好帮手发布 | 3条评论

HTTP请求的错误码大全

//ACTION_ERROR 错误定义
#define RS_OK 0
#define RS_ERROR -1
#define RS_HTTP_COMP_SERVER_EMPTY 2000 //HTTP返回字节数为0,服务器确实没有一个文件和目录.
#define RS_HTTP_RETURN_NULL 1000//HTTP返回字节数为0
#define RS_HTTP_RETURNBYTE_ERROR 1001//HTTP返回字节与读出字节不相同
#define RS_NOCAPTCHA 1002//不需要验证码

#define RS_RELOGIN 1003//重新登陆
#define RS_PASSWORDERROR 1004//用户名密码错误
#define RS_LOGINERROR 1005//登陆失败
#define RS_INTERNETDISK_NOTENOUGH 1006//网盘空间不足
#define RS_HTTP_READFILE_ERR 1007
#define RS_HTTP_MD5_NOTMATCH 1008
#define RS_DOWNLOAD_MOVEFILE_ERROR 1009//下载文件后,移动文件失败
#define RS_HTTP_SIZE_NOTMATCH 1011//文件长度不同

#define RS_JsonOverflowException 2001
#define RS_JsonNullPointerException 2002
#define RS_JsonInvalidateIndexException 2003
#define RS_JsonInvalidateParamException 2004
#define RS_JsonUnsupportException 2005
#define RS_JsonUnimplementException 2006
#define RS_JsonWrongFormatException 2007
#define RS_JsonMemberNotFoundException 2008
#define RS_JsonException 2009
#define RS_NONONCE 3001//下载挑战值失败
#define RS_INPUT_NULL 3002//输入参数为空

#define RS_OPENURLERROR 4001//打开网络连接失败
#define RS_GETMSGURL 4002//获取心跳包URL失败
#define RS_MSGCOMEBACK 4003//自己消息回调
//
#define RS_DISK_NOTENOUGH 4004//磁盘不足
#define RS_DISK_FULL 4005//磁盘已经满了
#define RS_UPLOAD_FILE_NOTEXIST 4006//上传的文件不存在,或者上传的为目录
#define RS_UPLOAD_FILE_LATER 4007 //过一会儿再上传
#define RS_UPLOAD_FILE_TOO_BIG 4008 //文件超大
#define RS_UNKONWN_UPLOAD 4009//无法识别上传命令
#define RS_TIMEOUT 4010
#define RS_PARENT_PATH_NOT_EXIST 4011
#define RS_EXIST_FILE 4012
#define RS_HTTP_REGETCLIENTID 4013
12001 ERROR_INTERNET_OUT_OF_HANDLES
No more handles could be generated at this time.

12002 ERROR_INTERNET_TIMEOUT
The request has timed out.

12003 ERROR_INTERNET_EXTENDED_ERROR
An extended error was returned from the server. This is
typically a string or buffer containing a verbose error
message. Call InternetGetLastResponseInfo to retrieve the
error text.

12004 ERROR_INTERNET_INTERNAL_ERROR
An internal error has occurred.

12005 ERROR_INTERNET_INVALID_URL
The URL is invalid.

12006 ERROR_INTERNET_UNRECOGNIZED_SCHEME
The URL scheme could not be recognized or is not supported.

12007 ERROR_INTERNET_NAME_NOT_RESOLVED
The server name could not be resolved.

12008 ERROR_INTERNET_PROTOCOL_NOT_FOUND
The requested protocol could not be located.

12009 ERROR_INTERNET_INVALID_OPTION
A request to InternetQueryOption or InternetSetOption
specified an invalid option value.

12010 ERROR_INTERNET_BAD_OPTION_LENGTH
The length of an option supplied to InternetQueryOption or
InternetSetOption is incorrect for the type of option
specified.

12011 ERROR_INTERNET_OPTION_NOT_SETTABLE
The request option cannot be set, only queried.

12012 ERROR_INTERNET_SHUTDOWN
The Win32 Internet function support is being shut down or
unloaded.

12013 ERROR_INTERNET_INCORRECT_USER_NAME
The request to connect and log on to an FTP server could
not be completed because the supplied user name is
incorrect.

12014 ERROR_INTERNET_INCORRECT_PASSWORD
The request to connect and log on to an FTP server could
not be completed because the supplied password is
incorrect.

12015 ERROR_INTERNET_LOGIN_FAILURE
The request to connect to and log on to an FTP server
failed.

12016 ERROR_INTERNET_INVALID_OPERATION
The requested operation is invalid.

12017 ERROR_INTERNET_OPERATION_CANCELLED
The operation was canceled, usually because the handle on
which the request was operating was closed before the
operation completed.

12018 ERROR_INTERNET_INCORRECT_HANDLE_TYPE
The type of handle supplied is incorrect for this
operation.

12019 ERROR_INTERNET_INCORRECT_HANDLE_STATE
The requested operation cannot be carried out because the
handle supplied is not in the correct state.

12020 ERROR_INTERNET_NOT_PROXY_REQUEST
The request cannot be made via a proxy.

12021 ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND
A required registry value could not be located.

12022 ERROR_INTERNET_BAD_REGISTRY_PARAMETER
A required registry value was located but is an incorrect
type or has an invalid value.

12023 ERROR_INTERNET_NO_DIRECT_ACCESS
Direct network access cannot be made at this time.

12024 ERROR_INTERNET_NO_CONTEXT
An asynchronous request could not be made because a zero
context value was supplied.

12025 ERROR_INTERNET_NO_CALLBACK
An asynchronous request could not be made because a
callback function has not been set.

12026 ERROR_INTERNET_REQUEST_PENDING
The required operation could not be completed because one
or more requests are pending.

12027 ERROR_INTERNET_INCORRECT_FORMAT
The format of the request is invalid.

12028 ERROR_INTERNET_ITEM_NOT_FOUND
The requested item could not be located.

12029 ERROR_INTERNET_CANNOT_CONNECT
The attempt to connect to the server failed.

12030 ERROR_INTERNET_CONNECTION_ABORTED
The connection with the server has been terminated.

12031 ERROR_INTERNET_CONNECTION_RESET
The connection with the server has been reset.

12032 ERROR_INTERNET_FORCE_RETRY
Calls for the Win32 Internet function to redo the request.

12033 ERROR_INTERNET_INVALID_PROXY_REQUEST
The request to the proxy was invalid.

12036 ERROR_INTERNET_HANDLE_EXISTS
The request failed because the handle already exists.

12037 ERROR_INTERNET_SEC_CERT_DATE_INVALID
SSL certificate date that was received from the server is
bad. The certificate is expired.

12038 ERROR_INTERNET_SEC_CERT_CN_INVALID
SSL certificate common name (host name field) is incorrect.
For example, if you entered www.server.com and the common
name on the certificate says www.different.com.

12039 ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR
The application is moving from a non-SSL to an SSL
connection because of a redirect.

12040 ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR
The application is moving from an SSL to an non-SSL
connection because of a redirect.

12041 ERROR_INTERNET_MIXED_SECURITY
Indicates that the content is not entirely secure. Some of
the content being viewed may have come from unsecured
servers.

12042 ERROR_INTERNET_CHG_POST_IS_NON_SECURE
The application is posting and attempting to change
multiple lines of text on a server that is not secure.

12043 ERROR_INTERNET_POST_IS_NON_SECURE
The application is posting data to a server that is not
secure.

12110 ERROR_FTP_TRANSFER_IN_PROGRESS
The requested operation cannot be made on the FTP session
handle because an operation is already in progress.

12111 ERROR_FTP_DROPPED
The FTP operation was not completed because the session was
aborted.

12130 ERROR_GOPHER_PROTOCOL_ERROR
An error was detected while parsing data returned from the
gopher server.

12131 ERROR_GOPHER_NOT_FILE
The request must be made for a file locator.

12132 ERROR_GOPHER_DATA_ERROR
An error was detected while receiving data from the gopher
server.

12133 ERROR_GOPHER_END_OF_DATA
The end of the data has been reached.

12134 ERROR_GOPHER_INVALID_LOCATOR
The supplied locator is not valid.

12135 ERROR_GOPHER_INCORRECT_LOCATOR_TYPE
The type of the locator is not correct for this operation.

12136 ERROR_GOPHER_NOT_GOPHER_PLUS
The requested operation can only be made against a Gopher+
server or with a locator that specifies a Gopher+
operation.

12137 ERROR_GOPHER_ATTRIBUTE_NOT_FOUND
The requested attribute could not be located.

12138 ERROR_GOPHER_UNKNOWN_LOCATOR
The locator type is unknown.

12150 ERROR_HTTP_HEADER_NOT_FOUND
The requested header could not be located.

12151 ERROR_HTTP_DOWNLEVEL_SERVER
The server did not return any headers.

12152 ERROR_HTTP_INVALID_SERVER_RESPONSE
The server response could not be parsed.

12153 ERROR_HTTP_INVALID_HEADER
The supplied header is invalid.

12154 ERROR_HTTP_INVALID_QUERY_REQUEST
The request made to HttpQueryInfo is invalid.

12155 ERROR_HTTP_HEADER_ALREADY_EXISTS
The header could not be added because it already exists.

12156 ERROR_HTTP_REDIRECT_FAILED
The redirection failed because either the scheme changed
(for example, HTTP to FTP) or all attempts made to redirect
failed (default is five attempts).

发表在 C++ | 留下评论