
vc++ 文章
文章平均质量分 91
在他乡奋斗
工作四年,一直从事C/C++开发工作
展开
-
我们一起发布数据库
我们一起发布数据库1. 特别声明 本数据库没有依赖任何其他开源代码,全部自己在业余时间编写,当前只是实现了简单的增删查改功能,如果需要复杂查询,索引,自定义数据类型则需要自己开发。本源码仅限用于交流学习,任何商业用途都必须经过作者书面授权。 本人也正在开发V2版本,在V2版本中将可以任意扩展数据类型、数据存储、索引、函数,期待能够找到一些志同道合的朋友一块开发。 在使用本数据库时最好先了解下“标签驱动框架”,了解为何是标签,何为...原创 2021-10-20 08:22:56 · 351 阅读 · 0 评论 -
安全可靠的3G传输中IP地址的解决方案
安全可靠的3G传输中IP地址的解决方案1.概述 采用3G网络做为传输方式时,会碰到服务器IP地址不可知的问题。如何解决这个问题,根据实际情况不同的公司或者个人会采取不同的方式。有中间服务器进行中转的方式,有采用绑定域名的方式(如绑定花生壳软件),有借用中间服务器保存服务器IP地址的方式等。各种不同的方式都各有优劣,这边我们提供一种节约成本、易扩展并且开发容易的解决方案。基原创 2013-03-01 00:00:33 · 1481 阅读 · 0 评论 -
编译sqlite动态库及测试
工程下载:http://download.youkuaiyun.com/detail/wjh_monkey/56610671.关于sqlite数据参考百度百科:http://baike.baidu.com/view/19310.htmSQLite是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。不像常见的客户-服务器范例,SQL原创 2013-06-27 20:30:21 · 2155 阅读 · 0 评论 -
Ftp客户端概要设计
Ftp客户端概要设计1.概述 ftp是基于TCP的文件传输协议,主要是用于控制远程文件,如下载、上传、续传、重命名、删除等。其命令是基于可见字符,易于理解的方式交互的。客户端与服务器端的交互遵循一应一答的方式,而且各命令间遵循一定的顺序。FTP的应答原则:a. 所有应答都以3个数字开头以“\r\n”结束b. 一个应答的第4位如果为’-’,原创 2013-09-06 16:18:56 · 3808 阅读 · 0 评论 -
自定义WM_NOTIFY消息
自定义WM_NOTIFY消息习惯了用自定义用户消息进行各种状态的通知,特别是子窗口与父窗口之间的交互。但ON_MESSAGE没有控件ID的限制,如果有多个子窗口发送同一个消息给父窗口时,父窗口就不知道哪个窗口发的(当然可以用参数进行约定)。如何解决这个问题?有几种思路:1.重写ON_MESSAGE宏,增加ID的限制;2.模拟按钮单击消息;3.自定义WM_NOTIFY消息。基于这原创 2013-10-30 09:36:58 · 4592 阅读 · 0 评论 -
中转服务器
中转传输采用3层设计,分别为:用户事件处理层、命令解析层、消息事件驱动层。在事件驱动层中,将相关消息发送给对应的用户事件处理函数处理。 在命令解析层中发送和接收数据。在接收到数据时,需要验证数据合法性,收到一帧完整的数据后调用消息驱动层的send相关方法,调用该类方法后会将消息传递给用户事件处理中。在命令解析层中,会引入socket控制,同时管理多个socket的读。 在用户事件处理中,需要像MFC那样,定义消息处理的映射表。只有在用户层定义了消息映射表,命令解析层接收到的命令才能被处理,否则被原创 2014-04-20 20:25:29 · 4852 阅读 · 0 评论 -
x264内存泄露的解决办法
也许我使用的x264库比较原始,但经过测试,x264的库存在内存泄露.面对内存泄露,如何在尽量少改动的前提下解决这个问题。下面是我解决的思路:由于x264相关的内存分配与释放都有封装一层函数,我们可以在从这两个函数入手。将分配的内存记录到一个链表中,释放时从链表中删除。程序执行完后,如果链表中有记录,说明是内存泄露,清空链表即可。所以具体操作如下:1.增加一个链表;2.修改x264_malloc函数,将分配的内存记录在链表中;3.修改x264_free函数,从链表中释放节点;4.最后统一原创 2014-05-10 21:12:17 · 2182 阅读 · 0 评论 -
最大公约数算法
摘自x2/**************************************************************************** * x264_reduce_fraction: 求出最大公约数,并约去最大公约数 *********************************************************************原创 2014-05-07 13:51:53 · 547 阅读 · 0 评论 -
应用程序正常初始化失败0xc0150002 错误
出现该问题,一般是由缺少什么库文件或者库文件不兼容导致的。我的开发环境为vs2008,并在程序发布时放入了vs2008的运行库(参考附件4.1)。编译另外一个测试程序,在一样的环境中运行,却没有问题。所以排除vs2008库的问题。 该问题可能出现在使用的库上,如果使用的Lib和其dll文件不一致也有可能导致该问题。我专门编写一个测试程序,测试使用的Lib文件。 特别注意:如果依赖的一个lib文件,如果不使用其方法,该lib文件会被忽略。原创 2014-11-12 15:45:11 · 2560 阅读 · 0 评论 -
http服务器--session处理
http服务器--session处理1. 概述Session处理是一般带有会话功能服务器必须处理的功能.使用session记录一个会话,能够有效处理短连接或者断线重连的需求。session是存放在服务器的内容,具有如下特性:A. 时间性,创建的session如果长时间没有响应,则服务器需要删除该session,以防止session的无限增长。B. 唯一性,在同一个服务器上,sess原创 2015-06-01 23:08:35 · 2686 阅读 · 1 评论 -
geohash算法
geohash算法的原理是将区域进行4分,让后将每一块区域继续进行四分,直到符合精度要求停止,这样得到一个二进制的数据,然后将这二进制的数据进行base32转换得到一个字符串原创 2016-05-13 23:08:25 · 767 阅读 · 0 评论 -
脚本解析器
命令脚本解析器,自创建一种脚本语法,解释执行它。目前脚本形式类似于命令,没有变量类型的概念,关键字为=、$()、if、else、while、break、continue ,解释与C语言一样。原创 2016-05-07 10:18:43 · 5720 阅读 · 1 评论 -
基于时序数据库的GPS处理方案
运动中的GPS数据是典型的时序数据,是由设备在一段时间内连续间隔一定时间生成GPS坐标信息。少量设备的GPS信息处理可以用简单的算法处理,但对于成千上万的设备,就需要考虑算法的执行效率。特别是针对大量用于查询的情况下,例如公交车查询、物流查询等。 时序数据库解决了大量用户更新GPS和查询GPS的性能问题,特别是在附近点查询和最近设备的查询方面能够实现非常高效的性能,并且具有高效的截面数据查询,能够瞬时恢复某一时刻的整体场景。一般时序数据库支持的大量数据的插入与高效的单点查询,本时序数据库同样原创 2016-05-28 09:06:46 · 2452 阅读 · 3 评论 -
vs环境配置属性介绍
vs环境虽然常有更新,但基本配置一致,所以这边使用vs2008的配置说明如下:常规配置调试属性:C/C++属性:链接器:原创 2017-01-19 21:27:07 · 501 阅读 · 0 评论 -
获取主机IP地址
以下代码的参考网上找的资料,具体哪个网页记不清了。希望对其他人有用。需要:#include "winsock2.h"#pragma comment( lib, "ws2_32" ) 代码如下:CString GetHostIp(){ char szHostName[128]; const char* pszAddr = NULL; struct hosten转载 2013-02-28 23:17:59 · 836 阅读 · 0 评论 -
base64 加密算法的实现
1. 关于base64编码Base64编码将3个8位的字符串转换为4个6位的字符串。转换后的编码用64个字符对应。在网上有很多关于base64加密解密的说法,我感觉很多不是真正的加密,因为如果不是自己设置密匙,总会觉得怪怪的,会认为是采用统一的密匙加密(这样就很容易破解了原创 2011-08-26 14:26:08 · 8016 阅读 · 1 评论 -
VC实现打印预览功能1
在MFC中CView类已经封装好了打印相关的功能,我们只需要添加一些虚函数并加以处理即可。需要添加的虚函数有:public:virtual void OnPrepareDC(CDC* pDC, CPrintInfo* pInfo = NULL);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBe原创 2009-08-03 08:48:00 · 4137 阅读 · 0 评论 -
VC++问题集13
131.用CSplitterWnd产生的视图不能显示。 分析代码: int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // create a view to occupy the client area of the原创 2009-05-29 14:28:00 · 1230 阅读 · 0 评论 -
VC++问题集15
151:编译错误:initialization of text is skipped by case label代码:switch(m_mode){ case 0: .... CString str; CString text; .... break; case 1: .... text="ad"; .... break; }原因:运行swtich中的case 1:时忽略原创 2009-07-05 22:24:00 · 837 阅读 · 0 评论 -
VC++问题集16
161.MFC应用程序关闭了窗口但进程没有退出。可能原因: 在构造函数和析构函数中添加了一写代码,因为在派生类的构造函数中会自动调用基类的默认构造函数,不应该手动调用,析构函数 也是如此。162.SCROLLINFO结构typedef struct tagSCROLLINFO { UINT cbSize; UINT fMask; int nMin;原创 2009-09-04 14:48:00 · 730 阅读 · 0 评论 -
POP3模型及会话过程
POP3(post office protocol 3)协议是邮局协议版本3的缩写。最初是在1984年发表的RFC918中定义的,1985年的RFC937发表了第二版1988年的RFC1081又发表了第三个版本,简称POP3,当前使用的标准是RFC1939。它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议 。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从原创 2009-09-25 07:46:00 · 2755 阅读 · 2 评论 -
把日期字符串中的年月日提取出来
// pase_date_string.cpp : Defines the entry point for the console application.//版权所有:吴建凰#include "stdafx.h"#include int monthday[12]={31,29,31,30,31,30,31,31,30,31,30,31};bool parse_date_string(原创 2009-10-23 08:17:00 · 7358 阅读 · 0 评论 -
关于New字符数组时初始化现象
在用new分配空间时要特别注意初始化现象。也许会因为初始化而使得内存不能用。例如下面代码的操作就会出现异常。 char * str; str=new char[5]="abc"; str[1]=a;//出现异常 delete str;//出现异常(轮不到这个异常)经过测试: str[0]=a;//也会出现异常所以我猜测: str=new char[5]="a";并没有去申请一个5个字符的内原创 2009-10-22 21:26:00 · 3118 阅读 · 0 评论 -
取一个字符串的所有子集合并打印输出
//取一个字符串的所有子集合,并打印输出。#include #define N 4using namespace std; char strsets[N+1]="abcd";//字符集合char strsel[N];//选中的字符集合标志。当strsel[i]=1则显示,strsel[i]=0则不显示 char strshow[N+1];//输出时的字符串(即为子集)vo原创 2009-10-22 21:34:00 · 2096 阅读 · 0 评论 -
在一个字符串中找一个最大重复子串
// find_sub_string.cpp : Defines the entry point for the console application.//版权所有:吴建凰 #include "stdafx.h"#include bool find_sub_string(const char * str,int str_length,int * offset,int * len){ in原创 2009-10-22 21:37:00 · 1302 阅读 · 0 评论 -
malloc/free与new/delete
malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符。它们都可以申请动态内存和释放内存,但这两套内存管理函数又各自区别,主要表现在以下几个方面。1. new和delete其实调用了malloc和free函数。但new运算符除了分配内存外,还要调用构造函数。同理,delete会调用类的析构函 数。而malloc函数却只是负责分配内存,不会原创 2009-10-23 11:37:00 · 644 阅读 · 0 评论 -
函数指针
函数指针 函数指针可能是最容易引起理解上的困惑的声明。函数指针在DOS时代写TSR程序时用得最多;在Win32和X-Windows时代,他们被用在需要回调 函数的场合。当然,还有其它很多地方需要用到函数指针:虚函数表,STL中的一些模板,Win NT/2K/XP系统服务等。让我们来看一个函数指针的简单例子: int (*p)(char); 这里p被声明为一个函数指针,这个函数带一转载 2009-12-01 20:33:00 · 735 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号 "__declspec(dllimport)
我在VS2005下写C++的程序,采用一个工程生成DLL文件给另一个工程执行,但每次执行时都出现 error LNK2019: 无法解析的外部符号 "__declspec(dllimport)错误。检查了好几遍代码都觉得没有问题。最后发现是字符集出现问题。生成DLL文件的字符集是Unicode而生成exe文件的字符集为默认的ASCII。只要统一字符集即可解决问题:VS2005的c++项原创 2009-12-28 18:56:00 · 31934 阅读 · 11 评论 -
CMFCTabCtrl 控件中的bug
作者:吴建凰 Email:wjh_2010@163.com,转载请标明出处,谢谢。最近在做VC的项目,由于VS2008之后增加了一些较为好用的控件,如CMFCRibbonBar、CMFCTabCtrl等,很多人vs2008之后的环境来写应用程序。但是我使用CMFCTabCtr原创 2011-09-11 10:56:41 · 4390 阅读 · 2 评论 -
VC++问题集9
81.如何浏览文件 看如下示例代码: CString ReturnPach; TCHAR szPath[_MAX_PATH]; BROWSEINFO bi; bi.hwndOwner=NULL; bi.pidlRoot=NULL; bi.lpszTitle=_T("请选择一个文件夹"); bi.pszDisplayName=szPath; bi.ulFlags=BIF_RETURNONLYFSDI原创 2009-01-15 11:40:00 · 981 阅读 · 1 评论