
C++
文章平均质量分 88
SZ大伟
生活中充满了代码,在代码中感受程序之美,让代码体现思想的光芒。
展开
-
OpenSSL学习之使用个人信息数字证书(PFX)进行签名和验证
作者:俞伟 QQ:12400976 MSN:yu924@hotmail.com最近需要用到数字签名的相关技术,但是网络上对这方面的文章说的含糊,所以自己把这段时间在学习OpenSSL过程中得到心得发表出来,供大家讨论,欢迎大家联系我,互相交流。以下是实现PFX证书的读取和应用证书进行数字签名与签名验证:环境:VC6 + WIN2003 + OPENSSL代码:#includ原创 2008-04-21 11:03:00 · 5902 阅读 · 0 评论 -
使用拖放的简单方法
如果要为窗口增加接受Drag&Drop的功能,请按照以下步骤:1、在OnCreate(...)中调用AcceptDrag(TRUE)。2、增加消息映射BEGIN_MESSAGE_MAP(……) //{{AFX_MSG_MAP(CDropEdit) ON_WM_CREATE() ON_WM_DROPFILES() // 关于Drag&Drop的消息 //}}AFX转载 2007-12-26 15:07:00 · 548 阅读 · 0 评论 -
三种常见中文内码的转换方法
我们平时常见的三种中文内码是:GB2312(简体中文)、GBK、BIG5(繁体中文)。网上有很多中文内码的专用转换工具。我们碰到由于内码不一致而导致的乱麻问题,用这些工具可以进行相互转换。但论坛里经常有人问如何在自己的程序中集成这些功能呢?本文将介绍如何利用 Windows 提供的API 函数来实现。转换涉及到的 API 函数主要有两个:MultiByteToWideChar 和 WideChar转载 2007-12-26 10:56:00 · 1198 阅读 · 0 评论 -
在VC中使用 Flash 美化你的程序
我们分为两步来走: 一、将flash动画嵌入自己的程序中,这一点比较简单,使用shockwave flash object控件就可以实现。这个控件在安装flash的时候就装到你的系统上了,flash5.0以下的文件名是swflash.ocx,5.0以上版本的名字是flash.ocx,在系统目录里面应该可以找得到; 二、在flash动画和自己的程序中传递消息进行交互。这一点也是要通过控件来实现,转载 2007-12-26 10:01:00 · 805 阅读 · 0 评论 -
四种程序启动画面的制作方法
四种程序启动画面的制作方法 发表日期:2005年5月19日 出处:优快云 作者:徐 茜、黄雪峰 【编辑录入:webmaster】转载 2007-12-26 10:13:00 · 737 阅读 · 0 评论 -
利用VC访问INI文件和系统注册表
.INI文件 INI文件(Initialization file ,又称为初始化文件)是用来保存应用程序设置和选项的一种特殊的ASCII文件,以“.ini”作为文件扩展名,也被称做配置文件或概要文件(Profile)。除了各个应用程序可以拥有自己私有的初始化文件外,Windows系统还提供有一个系统的初始化文件Win.ini,并由此对当前的Windows系统进行配置,同时也可以在其内记录系统转载 2007-12-21 14:33:00 · 709 阅读 · 0 评论 -
VC杂项编程
一、改变视图背景色: 在CView的OnDraw函数中添写如下一段程序代码: void CFileNameView::OnDraw(CDC* pDC) { CFileNameDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rectClient; CBrush brushBkColor; GetClientR转载 2007-12-21 14:30:00 · 717 阅读 · 0 评论 -
多线程同步技术-3
信号量内核对象 信号量(Semaphore)内核对象对线程的同步方式与前面几种方法不同,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。在用CreateSemaphore()创建信号量时即要同时指出允许的最大资源计数和当前可用资源计数。一般是将当前可用资源计数设置为最大资源计数,每增加一个线程对共享资源的访问,当前可用资源计数就会减1,只要当前可用转载 2007-12-21 14:52:00 · 642 阅读 · 0 评论 -
多线程同步技术-2
在前面讲述线程通信时曾使用过事件内核对象来进行线程间的通信,除此之外,事件内核对象也可以通过通知操作的方式来保持线程的同步。对于前面那段使用临界区保持线程同步的代码可用事件对象的线程同步方法改写如下:// 事件句柄HANDLE hEvent = NULL;// 共享资源 char g_cArray[10];……UINT ThreadProc12(LPVOID pParam)转载 2007-12-21 14:51:00 · 627 阅读 · 0 评论 -
VC++下使用ADO编写数据库程序
准备:(1)、引入ADO类#import "c:/program files/common files/system/ado/msado15.dll" /no_namespace /rename ("EOF", "adoEOF")(2)、初始化COM在MFC中可以用AfxOleInit();非MFC环境中用:CoInitialize(NULL);CoUnInitialize();(3)#impor转载 2007-12-26 15:48:00 · 1081 阅读 · 0 评论 -
UNICODE与ANSI转换
UNICODE与ANSI转换 【日期】2007-04-29 【人气】190【作者】程序之风 【来源】程序之风转载 2007-12-26 11:17:00 · 1041 阅读 · 0 评论 -
在Visual C++中如何利用UDL文件来建立ADO连接
在Visual C++中如何利用UDL文件来建立ADO连接 王卫列 秦旻转载 2007-12-26 14:55:00 · 705 阅读 · 0 评论 -
BCB开发的程序发布注意
从网络上看到的BCB开发的程序发布注意事项有以下两点,信息来自网络,呵呵 一般,我们这样发布程序: 在prject->Options->Compiler中点击Release, 在prject->Options->Packages中去掉Builder with runtime packages选项 在prject->Op原创 2008-07-24 16:07:00 · 2570 阅读 · 0 评论 -
VC下学习内存映射文件笔记
想让多个程序通过内存映射文件进行数据共享,则应该在每一个程序中都创建内存映射文件:一.在程序中定义以下变量:HANDLE hFileMapping = NULL;二.创建内存映射文件:hFileMapping = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, 100, "MemoryFile");三原创 2008-01-02 17:07:00 · 867 阅读 · 0 评论 -
解决TCP网络传输“粘包”问题
解决TCP网络传输“粘包”问题作者:杨小平 王胜开原文出处:http://www.ciw.com.cn/ 当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user da转载 2008-01-02 10:32:00 · 5485 阅读 · 1 评论 -
在VC对话框中使用视图
说白了,就是在对话框中显示网页内容,凡是IE中能显示,这个也能显示,像swf动画,gif图片什么的都可以,上图就是一个 显示迅雷网页中的一个swf切换动画. 作为一个简单 的例子,在一个对话框的OnI转载 2008-01-02 09:36:00 · 1688 阅读 · 0 评论 -
用底层设备接口函数回放声音
从图书馆借来的书上摘抄下来的,打字手好酸啊,:-)用底层设备接口函数回放声音采样点:就是声音的一个采样数据,按采样位数的不同,可能占1,2,4个字节。采样数据为16位时,一个采样点是一个短整型数,占两字节,取值范围-32768~32767.采样数据为8位或更少时,一个采样点是一个无符号字符型数据,取值范围0至255。立体声声音有左声道和右声道两个 通道 。单声道声音只有一个 通道转载 2008-01-02 09:39:00 · 1343 阅读 · 0 评论 -
基于API的录音机程序
基于API的录音机程序 作者/栾义明 下载源代码 一、数字音频基础知识 Fourier级数: 任何周期的波形可以分解成多个正弦波,这些正转载 2008-01-02 09:38:00 · 977 阅读 · 0 评论 -
Visual C++编程封装ADO类
1 引言在过去几年中,微软公司相继推出了几种数据访问技术,先是DAO(Data Access Objects),然后是RDO(Remote Data Objects),现在是ADO(ActiceX Data Objects)。ADO是Microsoft数据库应用程序开发的新接口,是微软最新的数据访问技术。它被设计用来同新的数据访问层OLE DB Provider一起协同工作,以提供通用数转载 2007-12-26 15:49:00 · 1210 阅读 · 2 评论 -
有关属性对话框(property sheet )的几个提示
有关属性对话框(property sheet )的几个提示闻怡洋下面的所有例子,都假定你从CPropertySheet中派生了新类。1、隐藏APPLY按钮使用 PSH_NOAPPLYNOW 标志. propsheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;2、增加新的子窗口使用成员变量。CEdit m_edit.BOOL CMyPr转载 2007-12-26 15:08:00 · 804 阅读 · 0 评论 -
多线程同步技术-1
摘要: 多线程同步技术是计算机软件开发的重要技术,本文对多线程的各种同步技术的原理和实现进行了初步探讨。 关键词: VC++6.0; 线程同步;临界区;事件;互斥;信号量; 阅读目录: 使线程同步 临界区 管理事件内核对象 信号量内核对象 互斥内核对象 小结 正文 使线程同步 在程序中使用转载 2007-12-21 14:47:00 · 750 阅读 · 0 评论 -
MFC界面包装类-多线程时成员函数调用的断言失败
MFC界面包装类多线程时成员函数调用的断言失败 经常在论坛上看到如下的问题:DWORD WINAPI ThreadProc( void *pData ) // 线程函数(比如用于从COM口获取数据){ // 数据获取循环 // 数据获得后放在变量i中 CAbcDialog *pDialog = reinterpret_cast( pData ); ASS转载 2007-12-21 14:43:00 · 1048 阅读 · 0 评论 -
VC中的文件操作
各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的。本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析。 1.文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专转载 2007-12-21 14:39:00 · 611 阅读 · 0 评论 -
如何编写Linux下的客户机/服务器软件
Linux以其源代码公开闻名于世,并以其稳定性和可靠性雄霸操作系统领域,在网络应用技术方面使用得更加广泛。很久以来它就是Windows的重要对手之一。随着网络时代的来临,Linux的这种优势已变得更加突出。本文将论述如何在Linux环境下利用Socket实现客户机/服务器通信。 随着网络技术的发展,网络结构已从过去的主机/终端型、对等型发展到现在广为使用的客户机/服务器型。客户机/服务器模型应用十转载 2007-12-13 17:08:00 · 2099 阅读 · 0 评论 -
TCP/IP编程实现远程文件传输
TCP/IP编程实现远程文件传输 在TCP/IP网络结构中,为了保证网络安全,网络人员往往需要在路由器上添加防火墙,禁止非法用户用ftp等安全危害较大的TCP/IP协议访问主机。而有时系统维护人员需要用ftp将一些文件从中心机房主机传到前端网点主机上,比如应用程序的替换升级。如果每次传输文件时都要打开防火墙,未免显得有些繁琐,要是在自己的应用程序中增加一个专门的文件传输模块,那将是十转载 2007-12-13 17:06:00 · 1757 阅读 · 0 评论 -
Linux Socket编程实例(一个Hello World程序)
在Linux下写了个小的socket程序,分为客户端和服务器端,服务端开一个端口(2000),做为一个daemon,等待客户的连接请求.一旦有客户连接,服务器端打印出客户端的IP地址和端口,并且向服务器端发送欢迎信息和时间.下面是服务端的代码(tcpserver.c).由于这只是个简单的程序,所以只用了单线程实现! /**/ /* * * Tcp Server program, It i转载 2007-12-13 17:00:00 · 2212 阅读 · 0 评论 -
Windows网络编程
第一章 序言 我写这个专题的目的,一方面是为了通过对网络编程再一次系统的总结,提高自己的网络编程水平,特别是Windows下的网络编程水平。同时,我也希望,能为众多初学网络编程的人提供一点帮助,因为我开始学习网络编程的时候,能找到的资料就很少。当然,花钱可以买到翻译版本的书:) 首先向大家推荐一本很好的参考书,Network Pro转载 2007-12-13 16:58:00 · 23704 阅读 · 6 评论 -
IOCP进行SOCKET通信
当然TCP方式的模型还有事件选择模型。就是把所有的网络事件和我们的一个程序里定义的事件梆定。这个有它的好处,可能可以让我们更好的写一个线程来管理接收与发送。现在来讲一下一个完成端口模型。 完成端口 一个完成端口其实就是一个通知队列,由操作系统把已经完成的重叠I/O请求的通知 放入其中。当某项I/O操作一旦完成,某个可以对该操作结果进行处理的工作者线程 就会收到一则通知。而套接字在被创建后转载 2007-12-13 16:52:00 · 2674 阅读 · 0 评论 -
一个串口通讯的类
一个串口通讯的类 /**//* CommUtils.h */#ifndef _CommUtils_H__#define _CommUtils_H__class CommUtils {public: bool ReadCom(unsigned char * ReceiveData, DWORD& ReceiveLength); void CloseCom(); bool转载 2007-12-12 14:43:00 · 1076 阅读 · 0 评论 -
使用WinINet和WinHTTP实现Http访问
使用WinINet和WinHTTP实现Http访问飘飘白云 l_zhaohui@163.com 2007-11-30 Http访问有两种方式,GET和POST,就编程来说GET方式相对简单点,它不用向服务器提交数据,在这个例程中我使用POST方式,提交数据value1与value2,并从服务器得到他们的和(value1 + value2)。为实现Http访问,微软提供了二套API:转载 2007-12-12 14:39:00 · 17028 阅读 · 0 评论 -
STL 备忘录
[ 不断补充中]1. string.empty() 不是用来清空字符串,而是判断string是否为空,清空使用string.clear();2. string.find等查找的结果要和string::npos比较,而不是和-1比较。(各个平台可能不同)3. 将string转为char * ,用char * t = (char *)s.c_str() ,而不是 char *t =s.转载 2007-12-13 14:22:00 · 667 阅读 · 0 评论 -
C++ STL轻松导学
本教程介绍有关学习C++ STL的预备知识和STL的相关背景知识,适合想对STL做大致了解的初学者。http://morningspace.51.net/resource/stlintro/stlintro.html转载 2007-12-11 16:48:00 · 789 阅读 · 0 评论 -
跨平台INI文件读写API(C++版本)
1工程:跨平台INI文件读写API(C++版本)版本: 0.2.1授权方式:GNU GPL著作权所有(c) 2007 Midapex 本程序为自由软件;您可依据自由软件基金会所发表的GNU通用公共授权条款规定,就本程序再为发布与/或修改;无论您依据的是本授权的第二版或(您自行选择的)任一日后发行的版本。 本程序是基于使用目的而加以发布,然而不负任何担保责任;亦无对适售性或特定目的适用性所转载 2007-12-12 14:35:00 · 3565 阅读 · 2 评论 -
IOCP的几点开发心得(补充)
IOCP以其高效的性能受到服务器开发者的青睐,本人有幸在当前的项目中使用了该异步模型,修改调试之余,总结出开发过程中的经验若干,供大家借鉴。 首先是需要注意的是OVERLAPPED结构。想必该结构大多数人都是自定义新的结构体,将OVERLAPPED成员放置在第一位,然后后置其他成员。 在函数 WSASend, WSARecv, PostQueuedCompletionStatus 以及Ge转载 2007-12-12 14:47:00 · 983 阅读 · 0 评论 -
谈在VC中动态改变菜单
设计漂亮实用的菜单谈在VC中动态改变菜单大部分Windows应用程序都使用下拉式菜单实现自己特定的函数,它使编程更加方便,不需要在程序中增加多个按钮以完成这些操作。大多数情况下,我们的程序编译生成后,菜单就确定了,不能再修改。然而,在很多情况下,程序要根据用户的自己设置产生不同的菜单以适应不同用户的要求,这就需要我们动态的改变菜单。接下来我们就分析如何动态的生成不同的菜单。 第一步:转载 2007-12-21 14:36:00 · 807 阅读 · 0 评论 -
CString 操作指南
通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。 使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,转载 2007-12-21 14:35:00 · 517 阅读 · 0 评论 -
在基本对话框中添加状态栏
在基本对话框中添加状态栏 首先我们要在****dlg.h文件中添加CStatusBar对象m_status 其次,在****dlg.cpp文件中添加定义状态栏有几格的数组: static UINT status_id[]= { ID_SEPARATOR,转载 2007-12-21 14:38:00 · 670 阅读 · 0 评论 -
多线程同步技术-4
互斥内核对象 互斥(Mutex)是一种用途非常广泛的内核对象。能够保证多个线程对同一共享资源的互斥访问。同临界区有些类似,只有拥有互斥对象的线程才具有访问资源的权限,由于互斥对象只有一个,因此就决定了任何情况下此共享资源都不会同时被多个线程所访问。当前占据资源的线程在任务处理完后应将拥有的互斥对象交出,以便其他线程在获得后得以访问资源。与其他几种内核对象不同,互斥对象在操作系统中拥有特转载 2007-12-21 14:53:00 · 612 阅读 · 0 评论 -
摘译:用完成端口开发大响应规模的Winsock应用程序
摘译:用完成端口开发大响应规模的Winsock应用程序选择自 chiway 的 Blog 关键字 comp转载 2007-12-17 16:25:00 · 958 阅读 · 0 评论 -
线程互斥执行之假死锁现象
摘要: 在对多线程并发的编程环境下,死锁是我们经常碰到的和经常需要解决的问题。所谓死锁,即:由于资源占用是互斥的,当某个线(进)程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁,如下图: 线程#1在获得Lock A后,需要获得Lock B,而同时,线程#2在Lock B后,需要获得Lock A。对于线程#转载 2007-12-12 15:03:00 · 1408 阅读 · 0 评论