
C/C++
文章平均质量分 68
暮色已沉
这个作者很懒,什么都没留下…
展开
-
解决TCP网络传输“粘包”问题
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务。在实际工程应用中,对可靠性和效率的转载 2012-12-11 10:30:14 · 531 阅读 · 0 评论 -
VS2008SP1无法安装
关于VS2008SP1无法安装相信你的VS2008是中文版,英文版不存在该问题。 安装错误是在安装.net3.5SP1的中文语言包的时候 办法一是改安装脚本ParameterInfo.xml绕过语言包的安装, 删除下列代码: http://go.microsoft.com/fwlink/?LinkId=119353&clcid=0x409 " Downl转载 2015-03-19 15:18:57 · 994 阅读 · 0 评论 -
经验随手记录
平时编程经验。1、DLL各个函数的接口要有清晰的说明文档,各个返回值要有代表意义说明,并给出错误处理建议。原创 2013-08-09 11:41:00 · 545 阅读 · 0 评论 -
CMake 使用方法
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake 使用方法CMake的所有的语句都写在一个叫:CMakeLists.txt 的文件中。当CMakeLists.txt文件确定后,可以用ccmake命令对相关 的转载 2013-09-28 15:42:28 · 531 阅读 · 0 评论 -
CTypedPtrList详细说明和具体用法
CTypedPtrList类是个模板类,一般在软件开发中用到的时候比较多,它的作用就是类似一个链表,下面是这个类的原型template class CTypedPtrList : public BASE_CLASS第一个参数说明是列表的基类,这里必须是个指针列表类(Coblist或者CPtrlist,自己觉得用其他的列表类也可以,只要是指针列表类)第二个参数指在列表类中转载 2013-11-01 14:00:41 · 841 阅读 · 1 评论 -
MFC中消息循环处理的几个函数之间的区别
1 函数GetMessage 是从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函数接收一定范围的消息值。GetMessage不接收属于其他线程或应用程序的消息。获取消息成功后,线程将从消息队列中删除该消息。函数会一直等待直到有消息到来才有返回值。 PostMessage 与 SendM转载 2013-07-24 11:54:12 · 497 阅读 · 0 评论 -
C++著名程序库的比较和学习经验
转载出处:http://www.acejoy.com/ace/thread-3777-1-1.html1、C++各大有名库的介绍——C++标准库2、C++各大有名库的介绍——准标准库Boost3、C++各大有名库的介绍——GUI4、C++各大有名库的介绍——网络通信5、C++各大有名库的介绍——XML6、C++各大有名库的介绍——科学计算7、C++各大有名库的介绍——游转载 2014-08-13 10:22:00 · 849 阅读 · 0 评论 -
stderr 与 cerr 的作用
经常在别人的程序中看到类似: fprintf(stderr,"hello world!\n");很原创 2014-08-13 14:20:21 · 1671 阅读 · 0 评论 -
uml关系 画法
UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。而其中关联又分为双向关联、单向关联、自身关联;下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里。1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类转载 2014-05-14 14:11:32 · 892 阅读 · 0 评论 -
UML类图基本元素符号
1. 类(Classes)类包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参转载 2014-05-14 13:53:02 · 1682 阅读 · 0 评论 -
VC隐藏控制台程序窗口的实现
方法一:通过设置编译器的链接开关来实现,所以让我们来看一下编译器的链接开关选项(也就是linker选项).首先我们来看一下linker的 /subsystem 选项该选项的语法形式如下:/subsystem:{console|efi_application|efi_boot_service_driver|efi_rom|efi_runtime_driver|na转载 2014-10-22 21:24:42 · 1062 阅读 · 0 评论 -
class wizard DEBUG_NEW
#ifdef _DEBUG // 判断是否定义_DEBUG#undef THIS_FILE // 取消THIS_FILE的定义static char THIS_FILE[]=__FILE__; // 定义THIS_FILE指向文件名#define new DEBUG_NEW // 定义调试new宏,取代new关键字#endif // 结束如果定义了_DEBUG,转载 2013-07-25 14:32:24 · 733 阅读 · 0 评论 -
列举五种windows下进程间通讯方式
1、剪贴板CliPBoard: 在16位时代常使用的方式,CWnd中提供支持 2、窗口消息 标准的Windows消息以及专用的WM_COPYDATA消息 SENDMESSAGE()接收端必须有一个窗口 3、使用共享内存方式(Shared Memory) a.设定一块共享内存区域 HANDLE CreateFileMapping(HANDLE,LPSECURITY_ATTRI转载 2013-07-22 16:33:08 · 2647 阅读 · 0 评论 -
调试过程所遇问题汇集
1、使用#include 中的LoadLibrary函数,出现如下错误:Winbase.h(226) : error C2146: 语法错误 : 缺少“;”(在标识符“Internal”的前面) Winbase.h(226) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int include\Winbase.h(226) : er原创 2013-08-12 16:42:54 · 602 阅读 · 0 评论 -
TinyXML学习笔记:解析
用C++解析XML一直用的tinyxml,轻便,简单。这里记录下一些自己的使用方法与心得。对于用tinyxml解析xml,我一般只有三个步骤:加载获取节点读取内容1.加载Tinyxml是由一堆类构成的,而加载用到的类是TiXmlDocument。要解析目标XML前都要将目标XML加载到TiXmlDocument对象中,之后的所有操作都将从TiXmlDocument对转载 2013-08-20 13:35:21 · 654 阅读 · 0 评论 -
让VC不再编译帮助文件的方法
VC帮助虽然很好,但有时很烦,每一次编译都会自动编译帮助文件,不理我们有没有修改过RTF文件,耗神又耗时间,实在让人烦。怎么弄掉这帮助呢?上网上去问,没人回答。在Project Settings里找,也没找到。Google里搜,也没搜到。一开始我怀疑是MakeHelp.bat,还真去解决掉他,编译时也没发现什么大问题,还高兴地上了论坛发表自己的见解。但不好的是,网友demetry发短信告诉我这转载 2013-12-18 09:40:13 · 716 阅读 · 0 评论 -
请问如何令对话框中的EDIT控件能接受Enter回车?
在一个对话框中放置一个文本编辑控件,并选择属性为接受多行。当我在控件中编辑时,敲回车键希望换行,但是出发了OnOK,于是对话框关闭。请问如何解决这个问题?------解决方案--------------------选中Want Return 属性 ------解决方案--------------------老问题:> 要在编辑框的属性里选上“Want return”样式原创 2014-04-04 16:06:11 · 966 阅读 · 0 评论 -
浅谈利用进程间通信实现程序自我保护的方法
摘要: 本文从实例的角度出发,以模拟病毒特征为主线,详细地介绍了如何利用多进程实现程序的自我保护。通过对进程及线程运行原理的分析,重点研究进程间通信技术,最终实现程序运行的稳定。 论文关键词: 病毒 进程间通信 程序自我保护 1.引言 在计算机和网络技术日益发展的今天,病毒这个字眼越来越多地出现在了媒体和人们的言论中。计算机病毒的发展必然会促进计算机反病毒技术的发展,转载 2013-07-22 16:31:33 · 806 阅读 · 0 评论 -
一个经验丰富的C/C++程序员独白
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟悉。转载 2013-08-03 22:19:22 · 656 阅读 · 0 评论 -
VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
刚开始接触OCX控件,以下是个人网上寻找的入门篇文章:开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)ActiveX控 件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中转载 2013-10-28 15:12:46 · 1082 阅读 · 0 评论 -
编译找不到且不能升级vc90.pdb文件解决方法
问题:为什么我把一个VC6的工程转换为VS2008的工程后,编译总是出现找不到而且不能升级vc90.pdb文件的问题。重新编译了也不行。 从VC6直接跳到VS2008 这个vs2008一个著名的bug。详情可以参见https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=30转载 2013-11-01 10:49:40 · 614 阅读 · 0 评论 -
OnPaint 无限制触发
最近在弄MFC界面,用DrawText输出需要定时更新的文本。在网上找了资料。双缓冲技术绘图;代码如下:void OnPaint() { //CPaintDC dc(this); CDC *pDC = &GetDC(); CDC MemDc; BITMAP bm; BYTE *pBits; CBitmap memBit; m_bitmap.GetBitmap(&bm);原创 2013-12-17 17:19:18 · 1062 阅读 · 0 评论 -
VC UI界面库大集合
Guitoolkithttp://www.beyondata.com/pwc.html The Ultimate Toolbox http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx GuiToolkit(开源,类似Visual Studio转载 2014-01-03 11:52:05 · 938 阅读 · 0 评论 -
extern 报错【error c2146】菜鸟问题
error C2146: syntax error : missing ';' before identifier 'g_var'在a.cpp中定义 CXX g_var;在b.cpp中用extern CXX g_var; 报错。g_var前面的类型无法识别,这种菜鸟问题,原来是应该在用extern CXX g_var; 之前,将CXX的声明告诉编译器。不要忽视这些小问题。原创 2013-12-31 09:32:45 · 1598 阅读 · 0 评论 -
使用MFC开发ActiveX(ocx)控件
作者: 中国电波传播研究所青岛分所 郎锐时间: 2004-03-09出处: yesky一、前言二、建立工程框架三、属性、方法以及事件的添加四、实现属性表五、在包容程序中使用ActiveX控件六、小结 前言 ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到转载 2013-11-06 15:18:20 · 1209 阅读 · 0 评论 -
socket 五种模型理解之二---------异步选择模型
关键函数:WSAAsyncSelect (SOCKET s,HWND hWnd,unsigned int wMsg,long lEvent);具体注释:http://baike.baidu.com/view/573396.htm本函数用来请求Windows Sockets DLL为窗口句柄发一条消息——无论它何时检测到由lEvent参数指明的网络事件.要发送的消转载 2013-08-13 17:01:49 · 2281 阅读 · 0 评论 -
动态库导出类-----practice
创建dll;// "MyDll.h"#include #include #include "Public.h"#define DLL_EXPORT __declspec(dllexport)class DLL_EXPORT SimpleDLLClass{public: SimpleDLLClass(); virtual ~SimpleDLLClass(); virtua原创 2013-08-13 14:42:44 · 3183 阅读 · 0 评论 -
TCP客户端 长连接策略
不久前,我的Socket Client 程序遇到了一个非常尴尬的错误。它本来应该在一个 socket 长连接上持续不断地向服务器发送数据,如果 socket 连接断开,那么程序会自动不断地重试建立连接。 有一天发现程序在不断尝试建立连接,但是总是失败。用netstat 查看,这个程序竟然有上千个socket 连接处于CLOSE_WAIT 状态,以至于达到了上限,所以转载 2012-12-17 15:32:41 · 11324 阅读 · 0 评论 -
诡异:bind()函数出现WSAEFAULT(10014) 错误
编译器:VS2008偶将 UDP 封装成类,绑定的主机地址,作为类成员class CUDPSocket{public: CUDPSocket(); ~CUDPSocket(); bool InitSocket(); int SendData(char *buffer,int len,sockaddr_in RecieverAddr); int原创 2012-12-11 16:46:07 · 2527 阅读 · 1 评论 -
转VC各种问题
2012-04-19 11:16 实习中出现的若干问题1.VS2008如何为工程添加lib文件工程中引用DLL时,有时需要添加lib文件,VS2008中添加LIB文件与VC6中不太一样,操作如下: VS2008中如何加lib引用 lib引用有两种方法: 1.#pragma comment(lib,"opengl32.lib") 2.选择project --转载 2012-12-11 10:02:10 · 2173 阅读 · 0 评论 -
C/C++网络编程中的TCP保活
以下是我从互联网上收集的资料,整理一了下,取精去粗,更通俗易懂。本文重点介绍的是使用WIN32 TCP自带的保活设置,至于应用层自定义心跳包的保活方式这里就不做介绍了。重点是让读者了解为什么要做TCP保活,这对与设计客户端与服务器交互不是很频繁的服务器程序是十分必要的(就是服务器不能确定一段时间内客户端肯定会发信息过来,或者什么时间客户端发数据过来)。TCP保活的必要性:T转载 2012-12-11 10:41:49 · 2684 阅读 · 0 评论 -
Windows 线程生灭(二)
上节中介绍了几种Windows平台创建及删除线程的api及它们的差别,这节具体介绍以下信息:1.线程内核对象(操作系统接口CreateThread内部实现)2.线程数据块_tiddata(C/C++运行时库的实现 _beginthreadex与_beginthread)3.线程结束_endthreadex下面分别介绍一、线程内核对象线程创建时转载 2012-11-29 17:07:43 · 2497 阅读 · 0 评论 -
Windows线程生灭 (一)
一、线程创建Windows线程在创建时会首先创建一个线程内核对象,它是一个较小的数据结构,操作系统通过它来管理线程。新线程可以访问进程内核对象的所有句柄、进程中的所有内存及同一进程中其它线程的栈。创建有以下几种方式,分别说明CreateThread(...) (操作系统提供的API,尽量不要使用)_beginthread(...)_beginthreadex(...)Afx转载 2012-11-29 17:05:58 · 1236 阅读 · 0 评论 -
关于C++ 中static ,extern以及全局变量的新认识
今天偶然看到一篇,关于C++ 中static ,extern的介绍文章。虽说写的有点杂乱了,没太看明白。不过,中间有几点,让我对static extern 有了些新认识。1、全局变量全局变量理论上是指应用程序级别的全局。普通的全局变量是面向整个程序的,当各个文件各自编译,然后链接成一个可执行程序之后,全局变量的确是被所有文件中的“看到的”。但是,如果想让别的文件在程序里能够被看到。(如原创 2012-11-29 16:17:40 · 1554 阅读 · 0 评论 -
线程间数据交换算法,有效避免锁竞争 -- TwoQueues
处理多线程数据共享问题注意的几个要点:1、锁竞争:尽量减少锁竞争的时间和次数。2、内存:尽量是使用已分配内存,减少内存分配和释放的次数。尽量是用连续内存,减少共享占用的内存量。多线程数据交换简单方案A:定义一个list,再所有操作list的地方进行加锁和解锁。简单模拟代码:class CSimpleQueue{public: CSimpleQueue() { Ini转载 2013-08-13 10:15:36 · 642 阅读 · 0 评论 -
动态库两种调用
看过关于动态库的调用例子,于是决定动手做一做:第一种方法:静态调用原创 2013-08-09 17:23:59 · 7202 阅读 · 0 评论 -
系统托盘编程完全指南(一)
自从Windows 95面市以来,系统托盘应用作为一种极具吸引力的UI深受广大用户的喜爱。使用系统托盘UI的Windows应用程序数不胜数,比如"金山词霸"、"Winamp"、"RealPlayer"等等。那么如何编写自己的托盘应用呢?本文是系列文章中的第一篇,这些文章将比较系统地描述托盘应用的编程。并创建自己的C++类来增强系统托盘应用的特性。读完这些文章,再参照例子,相信读者能轻松自如地在自己转载 2012-12-11 10:34:54 · 585 阅读 · 0 评论 -
C/C++ 文件读写操作总结
在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作,下面我就按以下几个部分对此作详细介绍,就是: 1、基于C的文件操作;2、基于C++的文件操作;3、基于WINAPI的文件操作;4、基于BCB库的文件操作;5、特殊文件的操作。 壹、基于C的文件操作 在ANSI C中,对文件的操作转载 2013-09-17 16:21:45 · 729 阅读 · 0 评论 -
C++问题常记录
#include与#include前者是C++中的标准string类,拥有强大的字符串操作,后者只是C里面的一个库,功能较弱。STL是标准类模板库,里面有很多的类,如:vector、map等等。都是一些方便编程的好东西。#include时:string str("hello world!");couterror C2679: binary ',class std::allocator >' (原创 2013-09-17 10:30:03 · 584 阅读 · 0 评论 -
C++基础语法
[Const用法总结,整理]一、const的普通变量的修饰使用; 它限定一个变量不允许被改变,应该为只读变量。 下面的代码编译器会报一个错误,请问,哪一个语句是错误的呢? typedef char * pStr;char *pstr = "abc"; const char *p1 = string; const pStrp2 = string;p原创 2013-09-11 10:58:23 · 559 阅读 · 0 评论