自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (75)
  • 收藏
  • 关注

空空如也

darwin_macOS Catalina

darwin_macOS Catalina

2020-11-07

XMLSpyEnt2006chs

XMLSpy是XML(标准通用标记语言的子集)编辑器,支持WYSWYG。支持Unicode、多字符集,支持Well-formed和Validated两种类型的XML文档,支持NewsML等多种标准XML文档的所见即所得的编辑,同时提供了强有力的样式表设计。

2015-01-21

365抽奖软件

365抽奖软件(完全破解.reg) 365抽奖软件操作简单(只需三个简单的步骤),简洁易用,稳定可靠,经历多次正式抽奖场合考验,已被地方政府采购并列入政府抽奖指定软件,每年都要根据实际使用情况进行修改。软件适用于政府系统、学校、电视台、电信公司、晚会、庆典、顾客回馈等抽奖场合。软件采用计算机从第一个参选人到最后一个之间随机抽取,保证公平性,不会出现中奖结果扎堆的情况。

2015-01-07

Static控件与TreeCtrl控件 字体 颜色 重绘

一.真彩色静态框CColorStatic类的设计实现 (1)文本、文本背景、控件背景的颜色,支持3种状态(正常时、鼠标在上、鼠标按下)下不同颜色的设定,具体实现使用了掩码机制,形如SetXXXColor名称的函数接口,每种函数对不同状态下颜色的设定是很灵活的。 (2)字体设定,提供粗体、斜体、下划线基本属性,能调整字体名称和大小。 (3)光标设定,支持自定义光标(资源ID或名称)、系统光标。具体实现使用带LR_SHARED标志的LoadImage来装载光标,因此对于共享光标不能调用DestroyCursor销毁,也不必在这里销毁。 (4)透明设定,支持文本背景和控件背景的透明。 (5)只是绘制文本(凡和文本有关的样式都考虑进该类中实现),不考虑边框、形状及图形图像的绘制。 二.TreeCtrl改变子项字体和颜色

2015-01-04

系统托盘 启动关闭 新进程

1.系统托盘 2.从一个进程中启动关闭另一新进程

2014-11-15

微软必应词典3.5.0.

由微软亚洲研究院研发的新一代在线词典软件。结合了互联网在线扁及桌面的优势,依托必应搜索引擎技术,及时发现并收录网络新兴词汇,让您的词典永不过时。基于微软强大的技术实力和创新能力,独创性的推出近音词搜索,近义词比较,词性百搭,拼音搜索,搭配建议等贴心功能让您体验不一样的精彩。同时,还有美女口模教您说英语,依照您的记忆曲线辅助您背诵单词的组件,让您感受不一样的神奇。

2014-11-10

Libpcap Winpcap Wireshark

pcap其实就是一个用来捕捉网络流量的API。在类UNIX平台下有libpcap,而在Windows平台下有WinPcap。事实上WinPcap是在libpcap的基础之上开发的函数库。它是Windows平台下一个免费,公共的网路访问系统。开发WinPcap这个项目的目的在于为Win32应用程序提供访问网络底层的能力。著名软件tcpdump及snort都是基于libpcap编写的,而像WireShark则是利用WinPcap来获取网络数据包的,可见这套函数库还是很有价值的。这是Winpcap的完整开发包

2014-02-22

PC_Lint C/C++ 软件代码 静态分析工具

PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。 C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。PCLint识别并报告 C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等 等。软件除错是软件项目开发成本和延误的主要因素。PClint能够帮你在程序动态测试之前发现编码错误。这样消除错误的成本更低。 使用PC-Lint在代码走读和单元测试之前进行检查,可以提前发现程序隐藏错误,提高代码质量,节省测试时间。并提供编码规则检查,规范软件人员的编码行为。 由于PC-LINT对于一般程序员来说可能比较陌生,有好多人安装了也不知道怎样配置和使用。 下面我就根据自己的安装和配置心得对PC-Lint的安装、配置及使用进行下详细说明.本人主要介绍了将PC-Lint集成到VC++6.0和SourceInsight的方法和步骤。

2013-11-16

含DbgHelp测试源码

DbgHelp.h DbgHelp.lib DbgHelp.dll DbgHelp.cpp

2013-11-11

DbgHelp 调试

DbgHelp 调试

2013-11-11

windows usb转com驱动

windows usb转com驱动,实际测试在window xp/win7 都可以正常驱动

2013-10-23

StarUML 汉化版

StarUML 汉化版

2013-06-09

设计模式之禅

如果你在思考下面这些问题,也许本书就是你想要的! 1. 业务分析如此细致,架构设计如此健壮、可靠和稳定,但为何仍然无法适应业务发展的需要,而且生命周期只有短短几年? 2. 为何你的团队协作了多年却始终无法沉淀出可复用的组件或构件?依赖和解耦的标准是什么?如何才能做到既不相互“刺伤”,又能相互“温暖”? 3. 架构设计时,如何才能实现高可扩展性和易维护性?如何避免维护成本大于开发成本的悲哀现状? 4. 交易型的系统如何大规模地借用设计模式的思想,以实现高性能、高可靠性的建设目标? 5. 架构设计时,如果遇到这样的情况:“有一个请求者和多个处理者,同时要求二者之间解耦,以便处理者可以动态地扩展”,这该如何处理? 6. 如果遇到过这样场景:“多个对象依赖一个对象,该对象状态改变时所有的依赖者都要相应地获得通知,并且要求对象间松散耦合”,这该如何处理? 7. 万物皆对象,不可能把每一个对象都分解到原子级别,如何适度地细化对象的颗粒度?怎样界定对象的粒度大小? 8. 同为创建类模式,工厂方法模式和建造者模式都可以创建对象,它们之间有何区别?适用的场景又有何不同? 9. 状态模式和策略模式的通用类图如此相似,在实际的应用场景中如何区分它们? 10. 如何使命令模式和责任链模式完美搭配并建立一个高可扩展性的系统架构,以解决客户端和处理者都参数化的场景? 11. 观察者模式和责任链模式真的没有可比性吗?它们的主要区别何在?实际应用中如何使用? 12. 组合模式只能用来表示部分和整体的关系吗?其扩展出的规格模式是如何实现的?透明的组合模式和安全的组合模式有何区别?

2013-06-09

Lib(含dsound.lib)

LINK : fatal error LNK1104: cannot open file 'dsound.lib' Lib(含dsound.lib)

2013-06-08

RFC3261-SIP

用户定位: 检查终端用户的位置,用于通讯。 用户有效性:检查用户参与会话的意愿程度。 用户能力:检查媒体和媒体的参数。 建立会话:”ringing”,建立会话参数在呼叫方和被叫方。 会话管理:包括发送和终止会话,修改会话参数,激活服务等等

2013-05-24

炫彩界面资源

炫彩界面:采用DirectUI设计思想,在窗口内无子窗口,窗口相当于容器,界面元素都是逻辑上的区域,没有句柄. 灵活易扩展等等

2013-05-23

记事本

记事本:基于对话框

2013-05-22

高质量C++C编程指南-林锐

软件质量是被大多数程序员挂在嘴上而不是放在心上的东西! 除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?” 别难过,作者只不过比你早几年、多几次惊慌而已。 请花一两个小时认真阅读这本百页经书,你将会获益匪浅,这是前面N-1个读者的建议。

2013-02-27

WINDOWS核心编程(第五版).rar

WINDOWS核心编程 中英文版.chm 随书源代码

2013-01-09

GPRS DTU SCOMM

GPRS DTU SCOMM

2012-10-09

透明窗体—双对话框

透明窗体—双对话框:一对话框只显示图片,另一对话框只显示控件,整体达到背景透明,控件不透明效果

2012-09-29

软件设计思想-林锐.

前 言 在60年代计算机发展初期,程序设计是少数聪明人干的事。他们的智力与技能超群, 编写的程序既能控制弱智的计算机,又能让别人看不懂、不会用。那个时期编程就跟捏泥巴 一样随心所欲,于是他们很过分地把程序的集合称为软件,以便自己开心或伤心时再把程序 捏个面目全非。人们就在这种美滋滋的感觉下热情地编程,结果产生了一堆问题:程序质量 低下,错误频出,进度延误,费用剧增……。这些问题导致了“软件危机”。 在1968年,一群程序员、计算机科学家与工业界人士聚集一起共商对策。通过借鉴传 统工业的成功做法,他们主张通过工程化的方法开发软件来解决软件危机,并冠以“软件工 程”这一术语。三十年余年来,尽管软件的一些毛病如人类的感冒一样无法根治,但软件的 发展速度超过了任何传统工业,期间并未出现真真的软件危机。这的确是前人的先见之明。 如今软件工程成了一门学科。 软件工程主要讲述软件开发的道理,基本上是软件实践者的成功经验和失败教训的总 结。软件工程的观念、方法、策略和规范都是朴实无华的,平凡之人皆可领会,关键在于运 用。我们不可以把软件工程方法看成是诸葛亮的锦囊妙计─—在出了问题后才打开看看,而 应该事先掌握,预料将要出现的问题,控制每个实践环节,并防患于未然。研究软件工程永 远做不到理论家那么潇洒:定理证明了,就完事。 我在读大学的十年里有八年从事软件开发,尽管编写了几十万行C++/C 程序,也经历 了若干次小不点儿大的成功和失败,可老感觉只学了些皮毛,心里慌兮兮的。在博士研究生 毕业前的半年里,我告戒自己不应该再稀里糊涂地在程序堆里滚爬下去了,于是就面壁反省, 做了一阵子木讷的和尚。在“打坐”时,每有心得体会便记录下来,不知不觉凑成了八章经, 我就给此经书起名为《软件工程思想》。 经典的软件工程书籍厚得象砖头,或让人望而却步,或让人看了心事重重。请宽恕我的 幼稚,我试图用三个问题:是什么、为什么、怎么办,来解释软件工程的道理。所以本书薄 得象饺子皮─—用来包“思想”这种有味道的“馅”。本书的八章经分别为: 第一章“软件工程基本观念”; 第二章“程序员与程序经理”; 第三章“项目计划与质量管理”; 第四章“可行性分析与需求分析”; 第五章“系统设计”; 第六章“C++ 面向对象程序设计”; 第七章“测试与改错”; 第八章“维护与再生工程”。 附录“大学十年”可以充当饭后的水果。 我偶尔也担心此书写得太肤浅,内容少得可怜。就象一只鸡在水里扑腾了几下,并不能 产生美味的鸡汤。但是如果您化了几分钟时间翻阅本书的任意章节,您马上就愿意再化几个 小时一口气读完全书,并且乐得直拍桌子:“好!很好!非常好!” 您可以把这本科技书当小说看,但在看书时请不要吃东西,免得喷了别人或者呛着自己。 如果您买了本书后觉得不值得,我一定赔偿您的损失。

2012-09-29

精通GDI+编程

精通GDI+编程 pdf 源码

2012-09-29

获取进程信息(实时刷新)

获取进程信息(实时刷新)

2012-09-29

Windows程序设计第5版

Windows程序设计第5版 .chm(中英文) 源码

2012-09-29

Windows 核心编程第五版

Windows 核心编程第五版 .chm(中英文) 源码

2012-09-29

USB2.0转COM驱动程序

USB2.0转COM驱动程序

2012-09-29

侯捷 深入浅出MFC

这本书适合谁 深入浅出MFC是一本介绍MFC(Microsoft Foundation Classes)程序设计技术的书籍。对于Windows 应用软件的开发感到兴趣,并欲使用Visual C++ 整合环境的视觉开发工具,以MFC为程序基础的人,都可以从此书获得最根本最重要的知识与实例。 如果你是一位对Application Framework和面向对象(Object Oriented)观念感兴趣的技术狂热份子,想知道神秘的Runtime Type Information、Dynamic Creation、Persistence、Message Mapping 以及Command Routing 如何实现,本书能够充分满足你。事实上,依我之见,这些核心技术与彻底学会操控MFC乃同一件事情。 全书分为四篇: 第一篇【勿在浮砂筑高台】提供进入 MFC 核心技术以及应用技术之前的所有技术基础,包括: Win32 程序观念 :message based,event driven,multitasking, multithreading, console programming。 C++ 重要技术:类与对象、this 指针与继承、静态成员、虚函数与多态、模板(template)类、异常处理(exception handling)。 MFC 六大技术之简化仿真(Console 程序) 第二篇【欲善工事先利其器】提供给对Visual C++ 整合环境全然陌生的朋友一个导引。这一篇当然不能取代 Visual C++ User's Guide 的地位,但对整个软件开发环境有全盘以及概观性的介绍,可以让初学者迅速了解手上掌握的工具,以及它们的主要功能。 第三篇【浅出 MFC 程序设计】介绍一个 MFC 程序的生死因果。已经有 MFC 程序经验的朋友,不见得不会对本篇感到惊艳。根据我的了解,太多人使用 MFC 是「只知道这么做,不知道为什么」;本篇详细解释 MFC 程序之来龙去脉,为初入 MFC 领域的读者奠定扎实的基础。说不定本篇会让你有醍醐灌顶之感。 第四篇【深入 MFC 程序设计】介绍各式各样 MFC 技术。「只知其然不知其所以然」的不良副作用,在程序设计的企图进一步开展之后,愈来愈严重,最终会行不得也!那些最困扰我们的 MFC 宏、MFC 常数定义,不得一窥堂奥的 MFC 黑箱作业,在本篇陆续曝光。本篇将使您高喊:Eureka! 阿基米得在洗澡时发现浮力原理,高兴得来不及穿上裤子,跑到街上大喊:Eureka(我找到了)。 范例程序方面,第三章有数个Console程序(DOS-like 程序,在Windows系统的DOS Box 中执行),模拟并简化Application Framework 六大核心技术。另外,全书以一个循序渐进的Scribble 程序(Visual C++ 所附范例),从第七章开始,分章探讨每一个MFC应用技术主题。第13章另有三个程序,示范 Multi-View 和 Multi-Document 的情况。 14章~16 章是第二版新增内容,主题分别是MFC 多线程程序设计、Custom AppWizard、以及如何使用Component Gallery 提供的ActiveX controls 和components。

2012-09-29

XP启动时未登陆之前那段时间如何隐藏鼠标指针

XP启动时未登陆之前那段时间如何隐藏鼠标指针

2012-04-25

真彩工具条 真彩自绘菜单

VC6打开XP风格通用文件对话框 一步步制作真彩工具条 完美实现真彩自绘菜单.rar

2012-04-25

计算机图形学

void CMyView::OnInitialUpdate() { CView::OnInitialUpdate(); BITMAP bm; // Windows BITMAP data structure; see Win32 help m_pBitmap[0].LoadBitmap(IDB_BITMAP1); m_pBitmap[1].LoadBitmap(IDB_BITMAP2); m_pBitmap[2].LoadBitmap(IDB_BITMAP3); m_pBitmap[3].LoadBitmap(IDB_BITMAP4); m_pBitmap[4].LoadBitmap(IDB_BITMAP5); for(int i=0;i<5;i++) { CClientDC dc(this); OnPrepareDC(&dc;); m_pdcMemory[i].CreateCompatibleDC(&dc;); m_pdcMemory[i].SelectObject(&m_pBitmap[i]); m_pBitmap[i].GetObject(sizeof(bm), &bm;); m_sizeSource.cx = bm.bmWidth; m_sizeSource.cy = bm.bmHeight; m_sizeDest = m_sizeSource; dc.DPtoLP(&m_sizeDest); } int nTimer=SetTimer(1,700,NULL); ASSERT(nTimer!=0); }

2012-01-15

通讯录 vc 数据库

void CMainDlg::OnAdd() { // TODO: Add your control notification handler code here //本对话框对应的数据库连接关闭 m_database.Close(); //新建一个CAddInfoDlg的对象 CAddInfoDlg dlg; //新对话框建立到数据库连接 dlg.m_database.Open(_T("addresslist")); //弹出新对话框 dlg.DoModal(); //新对话框关闭后,在原对话框中刷新数据显示 RefreshData(); } void CMainDlg::OnEdit() { // TODO: Add your control notification handler code here m_database.Close();//本对话框断开与数据库的连接 CModifyDlg dlg; dlg.m_database.Open(_T("addresslist"));//打开数据库 int i=m_ctrlperson.GetSelectionMark(); CString strSQL; int id=atoi(m_ctrlperson.GetItemText(i,0)); CPersonSet m_recordset; CDBVariant varValue; if(i==-1) { MessageBox("请选择一条要修改的记录!","提示",MB_OK|MB_ICONINFORMATION); } else { int temp=0; strSQL.Format("select * from person where ID=%d",id); m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); m_recordset.GetFieldValue(temp,varValue); dlg.m_modid=varValue.m_lVal; m_recordset.GetFieldValue(1,varValue); dlg.m_modname=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(2,varValue); dlg.m_modsex=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(3,varValue); dlg.m_modrelation=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(4,varValue); dlg.m_modtelephone=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(5,varValue); dlg.m_modhandphone=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(6,varValue); dlg.m_modaddress=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(7,varValue); dlg.m_modworkplace=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(8,varValue); dlg.m_modemail=varValue.m_pstring->GetBuffer(1); m_recordset.GetFieldValue(9,varValue); dlg.m_modoicq=varValue.m_pstring->GetBuffer(1); //m_database.Close();//此处不能断开与数据库的连接 dlg.DoModal(); RefreshData(); } }

2012-01-15

数据结构实践

源程序目录 序号 章 节 源程序文件夹名 1 绪 MinNum 2 线性表 顺序表 SqList 链表 单链表 LinkList 循环链表 ClinkList 双循环链表 DLinkList 静态链表 SlinkList 应用 集合并 MerGroup 多项式求和 Poly 3 栈 顺序栈 SqStack 链栈 LinkStack 栈应用 数制转换 Conversion 表达式计算 Expresion 4 队列 循环队列 CirQueue 链队 LinkQueue 5 串 串类 AString 串匹配 FindStr 6 数组 快速转置 MatrixTrans 矩阵加 AddMatrix 矩阵乘 MulMatrix 7 广义表 头、尾表示的广义表 BroadList 8 树与二叉树 二叉链表存储的二叉树 BiTree 孩子-兄弟存储的树 CTree 二叉树线索化 先序 PreThreading 中序 InThreading 后序 PostThreading 最优二叉树 HuffmanTree 9 图 图类的实现 数组表示 ArrayGraph 邻接表表示 AdjLgraph 十字链表表示 OrLgraph 邻接多重表表示 AdjMgraph 图的联通性 无向图的生成树 DFSForest 有向图的强连通分量 DgComponent 最小生成树 Minitree 关节点 FindArtgraph 图的应用 拓扑排序 TSort 关键路径 CritPath Dijkstra算法 DIJ Floyd算法 FLOYD 10 查找 静态查找 顺序查找、折半查找 SSearch 动态查找 二叉排序树 BSTSearch 散列查找 开放定址 LineHSearch 11 排序 插入排序 直接插入排序 Sort 折半插入排序 表插入排序 交换排序 冒泡排序 快速排序 选择排序 简单选择排序 堆排序 其它 归并排序 基排序

2012-01-15

IC操作 读写器

UINT mainThread(LPVOID ThreadParam) { int ret; uchar szbuff[100]; for(int i=0;i<10;i++) { //memset(szbuff,0,100); ::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_GET,0,0);//取数据 for(int k=0;k<2;k++) { ret=mifs_request_2(0x26,szbuff); //寻卡 if(ret==0)break; } if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,14,0);continue;} ret=mifs_load_keyE2(0x60,g_SectorNO,g_KeyA);//装载密钥A if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,1,0);continue;} ret=mifs_anticoll(0x00, g_CardSerialNo);//防冲突,返回卡序号 if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,3,0);continue;} ret=mifs_select(g_CardSerialNo, szbuff);//根据卡序号选择卡片 if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,4,0);continue;} ret=mifs_authenticationE2(0x60,g_CardSerialNo, g_SectorNO);//密钥A验证 if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,5,0);continue;} ret=mifs_read(g_BlockNO,g_BlockData);//读取块数据 if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,6,0);continue;} /* ret=mifs_authenticationE2(0x61,g_CardSerialNo, g_SectorNO);//密钥B验证 if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,7,0);continue;} */ // ret=mifs_initValue(g_BlockNO, g_InitValue);//初始化余额 // if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,8,0);continue;} // ::Sleep(100); ret=mifs_addValue(g_BlockNO, g_AddValue);//增余额 // ret=mifs_value(0xc1,g_BlockNO,g_AddValue); if(ret>0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,10,0);continue;} else if(ret<0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,15,0);break;} ret=mifs_decreaseValue(g_BlockNO, g_DecValue);//减余额 // ret=mifs_value(0xc0,g_BlockNO,g_DecValue); if(ret>0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,11,0);continue;} else if(ret<0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,13,0);break;} ret=mifs_readValue(g_BlockNO, &g_ReadValue);//读余额 if(ret!=0){::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,9,0);continue;} // Buzzer(2);//蜂鸣(加了蜂鸣之后读卡器会滞后) ::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_PUT,0,0);//显示结果 //::Sleep(1000); } ::SendMessage((HWND)ThreadParam,WM_MY_MESSAGE_INFO,12,0); g_ReadFlag=0; return 0; }

2012-01-15

串口 大文件 发送

#ifndef __WD_PROTOCOL_H__ #define __WD_PROTOCOL_H__ #define SERIALPORT_BUFF_LEN (1024*100) //串口缓存 //区长1M Byte //释放内存时,专用的宏 #define DELETE_OBJ(X) if(x){deletex;x=NULL;} #define DELETE_ARRAYOBJS(x) if(x){delete[]x;x=NULL;} #define CMD_SYN_WORD 0xBBAAFE6B //同步字 #define FILEDATA_LEN 1024*2 //文件数据块长度 typedef enum tagCMDTYPE { CMD_UNKNOWN =0, CMD_FILEINFO =1, CMD_FILEDATA =2, CMD_FILEEOF =3, CMD_FILEINFO_RESP =4,//响应命令 CMD_FILEDATA_RESP =5,//响应命令 CMD_FILEEOF_RESP =6 //响应命令 }CMDTYPE; typedef enum tagCMDSTATE { STATE_UNKNOWN =0, //未知状态 CMD_STATE_OK =1, CMD_STATE_ERROR =2 }CMDSTATE; //帧头-命令消息头 typedef struct tagCMDHEADER { ULONG ulSyncWord; //同步头 CMDTYPE cmdType; CMDSTATE cmdState; ULONG ulPackLen; //包长度,包括数据+校验和 }CMDHEADER; //文件信息结构体,主要发送文件名称和文件大小信息 typedef struct tagFILEINFO { CMDHEADER header; //帧头 UCHAR ucFileName[MAX_PATH]; //文件名称 ULONG ulFileNameLen; //文件名称长度 long lFileLen; //文件长度(单位:字节) ULONG ulCheckSum; //校验和 }FILEINFO; //要发送的文件数据结构体:主要是以固定大小发送文件中的数据 typedef struct tagFILEDATA { CMDHEADER header; //帧头 ULONG ulCheckSum; //校验和 UCHAR *pucBuf; //指向发送缓冲区 }FILEDATA; //文件发送结束命令 typedef struct tagFILEEOF { CMDHEADER header; ULONG ulCheckSum; UCHAR *pucBuf; }FILEEOF; typedef struct tagADDATA { UCHAR ucSyncHeader1; //同步头,0xAABB UCHAR ucSyncHeader2; //同步头,0xAABB float fChan0; //通道0 float fChan1; //通道1 float fChan2; //通道2 float fChan3; //通道3 float fChan4; //通道4 float fChan5; //通道5 float fChan6; //通道6 float fChan7; //通道7 float fChan8; //通道8 float fChan9; //通道9 float fChan10; //通道10 float fChan11; //通道11 UCHAR ucCheckSum; //校验和,前面所有数据的累加和,并取低8位 }ADDATA; ULONG CheckSum(UCHAR *pszBuf,ULONG ulBufLen) { ULONG ulCheckSum =0; for (UINT i=0;i<ulBufLen;i++) { ulCheckSum+=pszBuf[i]; } return ulCheckSum; } #endif //__WD_PROTOCOL_H__

2012-01-15

串口调试助手

void CSerialAsDlg::OnStartsendfile&#40;&#41; { // TODO: Add your control notification handler code here static CWinThread* thread; if(!m_bSendFlag) { m_bSendFlag = TRUE; m_SendError = FALSE; m_bCancelSend = FALSE; GetDlgItem(IDC_BTNCLOSEPORT)->EnableWindow(FALSE); GetDlgItem(IDC_STARTSENDFILE)->EnableWindow(FALSE); GetDlgItem(IDC_STARTSENDFILE)->SetWindowText(_T("取消发送")); ResetEvent(m_hEventSendFile); thread = AfxBeginThread(SendFileThreadProc,this,THREAD_PRIORITY_NORMAL,0,0,NULL); } else { m_bSendFlag = FALSE; m_bCancelSend = TRUE; DWORD st = WaitForSingleObject(m_hEventSendFile,2000); if(st==WAIT_TIMEOUT) { TerminateThread(thread,0); } GetDlgItem(IDC_BTNCLOSEPORT)->EnableWindow(TRUE); GetDlgItem(IDC_STARTSENDFILE)->SetWindowText(_T("发送文件")); } }

2012-01-15

多文档 选项卡

void CTabMDIDemoView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class CTabMDIDemoDoc * pDoc = GetDocument(); ASSERT_VALID(pDoc); CString cs=pDoc->GetTitle(); ((CMainFrame*)AfxGetMainWnd())->m_ViewManager.AddView(cs,this); } void CTabMDIDemoView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { // TODO: Add your specialized code here and/or call the base class ((CMainFrame*)AfxGetMainWnd())->m_ViewManager.OnActivateView(bActivate, this); ((CMainFrame*)AfxGetMainWnd())->SendMessage(WM_SIZE); CView::OnActivateView(bActivate, pActivateView, pDeactiveView); }

2012-01-15

电子元器件绘制系统

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; //this->Create(NULL,"元器件绘制系统",WS_MAXIMIZE); if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } if (!m_wndToolBarDraw.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBarDraw.LoadToolBar(IDR_DRAW_ICCHIP)) { TRACE0("Failed to create toolbar\n"); return -1; // fail to create } if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // fail to create } // TODO: Delete these three lines if you don't want the toolbar to // be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); m_wndToolBarDraw.EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBarDraw); this->FloatControlBar(&m_wndToolBarDraw,CPoint(30,120)); //m_wndToolBarDraw.SetSizes(CSize(25+7,25+6),CSize(25,25)); // CG: The following line was added by the Splash Screen component. // CSplashWnd::ShowSplashScreen(this); // CG: The following line was added by the Splash Screen component. CSplashWnd::ShowSplashScreen(this); return 0; }

2012-01-15

INI文件类 ini.cpp ini.h

bool CIni::Open(char *filename) { strcpy(m_strFileName, filename); SAFE_FREE( m_strData ); int fh; fh = _open( filename, _O_RDONLY ); // 只读方式 if( fh== -1 ) m_lDataLen = -1; m_lDataLen = _filelength(fh); // 获取文件长度 _close(fh); if( m_lDataLen > 0 )// 文件存在 { m_strData = new char[m_lDataLen];// 申请空间 FILE *fp; fp=fopen&#40;filename, "rb"&#41;; fread(m_strData, m_lDataLen, 1, fp);// 读数据 fclose(fp); InitIndex(); // 初始化索引 return true; } else // 文件不存在 { m_lDataLen=1; m_strData = new char[m_lDataLen]; memset(m_strData, 0, 1); InitIndex(); } return false; }

2012-01-15

VC++中读取INI文件

bool CIni::Write(char *index, char *name, int num) { char string[32]; sprintf(string, "%d", num); int n=FindIndex(index); if( n == -1 ) //新建索引 { AddIndex(index); n=FindIndex(index); n=GotoLastLine(index); AddData(n, name, string); //在当前位置n加一个数据 return true; } //存在索引 int m=FindData(n, name); if( m==-1 ) //新建数据 { n=GotoLastLine(index); AddData(n, name, string); //在当前位置n加一个数据 return true; } //存在数据 ModityData(n, name, string); //修改一个数据 return true; }

2012-01-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除