- 博客(75)
- 资源 (3)
- 收藏
- 关注
原创 Windows Socket五种I/O模型——代码全攻略
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合考虑
2013-10-25 16:09:02 563
原创 Visual C++线程同步技术
线程同步的方式有: 临界区 管理事件内核对象 信号量内核对象 互斥内核对象分别介绍如下:使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。 如果不采取适当的措施,其他线程往往
2013-10-25 16:07:20 475
原创 VC++常用功能代码
1. 如何获取系统日期CTime tm = CTime :: GetCurrentTime();CString strTime = tm.Format(_TEXT(“%Y-%M-%d %H:%M:%S));MessageBox(strTime); 2. 动态分配二维数组int **array;array = new int*[col];i
2013-10-25 16:04:39 1862
转载 c语言中内存的动态分配与释放(多维动态数组构建)
一. 静态数组与动态数组 静态数组比较常见,数组长度预先定义好,在整个程序中,一旦给定大小后就无法再改变长度,静态数组自己自动负责释放占用的内存。 动态数组长度可以随程序的需要而重新指定大小。动态数组由内存分配函数(malloc)从堆(heap)上分配存储空间,只有当程序执行了分配函数后,才为其分配内存,同时由程序员自己负责释放分配的内存(free)。二. 为什么要使用动态
2013-10-24 16:18:10 859
原创 C语言三维数组
void ***malloc_3d(int frame, int row, int column, int elem_size){ int total_size = (frame + frame * row) * sizeof(void *) + (frame * row * column) * elem_size; int i, j;
2013-10-24 16:14:06 4332
原创 VC多线程编程
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() { Sleep(
2013-10-23 17:08:21 550
原创 单元测试工具Numega的使用详细说明
1 前言我在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。NuMega是一个动态测试工具,主要应用于白盒测试。该工具的特点是学习简单、使用方便、功能有效。NuMega共有三个独立的子功能——BoundsChecker、TrueCoverage、TrueTime。BoundsChecker为代码检错工具,TrueCoverage为测试覆盖率统计
2013-10-23 13:07:24 812
原创 Visual C++.NET中 字符串转换方法
Visual C++.NET涉及到ATL/ATL Server、MFC和托管C++等多种编程方式,不仅功能强大而且应用广泛。在编程中,我们常常会遇到ANSI、Unicode以及BSTR不同编码类型的字符串转换操作。本文先介绍基本字符串类型,然后说明相关的类,如CComBSTR、_bstr_t、CStringT等,最后讨论它们的转换方法,其中还包括使用最新ATL7.0的转换类和宏,如CA2CT、CA
2013-10-23 11:12:35 679
原创 c++的多线程编程
WIN 多线程API一 简单实例比较简单的代码,创建10个线程,其中使第4个线程在一创建就挂起,等到其他的线程执行的差不多的时候再使第4个线程恢复执行。#include #include #include #define THREAD_NUM 10DWORD WINAPI PrintThreads (LPVOID);int main ()
2013-10-23 11:09:37 1637
原创 C++内存泄露检测
一Visual Studio 调试器和 C 运行时 (CRT) 库为我们提供了检测和识别内存泄漏的有效方法。主要使用函数:_CrtDumpMemoryLeaks();二 实例#define _CRTDBG_MAP_ALLOC //输出更详细的report#include #include //以上的内容必须放在其他include的前面#include
2013-10-23 11:02:36 695
原创 C++源码地址
1、http://fayaa.com/code/view/?lang=cpp 代码发芽2、http://www.stlchina.org/ stl中文站3、http://www.vckbase.com/ VCBASE国外网站:1、http://www.sgi.com/tech/stl/ 2、http://www.boost.org/ 3、http://www
2013-10-23 10:32:47 577
原创 Windows驱动编程基础教程
Windows驱动编程基础教程(1.1-1.3)1.1 使用字符串结构 常常使用传统C语言的程序员比较喜欢用如下的方法定义和使用字符串: char *str = { “my first string” }; // ansi字符串 wchar_t *wstr = { L”my first string” };
2013-10-23 10:31:16 1399
转载 static_cast 与reinterpret_cast
static_cast用法:static_cast ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: ①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成
2013-10-23 10:25:04 458
原创 逻辑地址、线性地址、物理地址和虚拟地址
一、概念物理地址(physical address)用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。——这个概念应该是这几个概念中最好理解的一个,但是值得一提的是,虽然可以直接把物理地址理解成插在机器上那根内存本身,把内存看成一个从0字节一直到最大空量逐字节的编号的大数组,然后把这个数组叫做物理地址,但是事实上,这只是一个硬件提供给软件的抽像,内存的寻址方式并不是这
2013-10-23 10:18:41 609
原创 同步机制及windows同步函数的使用
目录一 临界区二 互斥体三 事件四 信号量五 附录一 临界区临界区的使用在线程同步中应该算是比较简单,说它简单还是说它同后面讲到的其它方法相比更容易理解。举个简单的例子:比如说有一个全局变量(公共资源)两个线程都会对它进行写操作和读操作,如果我们在这里不加以控制,会产生意想不到的结果。假设线程A正在把全局变量加1然后打印在屏幕上,但是这时切换到线程B,线程B又
2013-10-23 10:16:24 483
原创 ShellExecute, WinExec, CreateProcess区别
ShellExecute ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。 有几个API函数都可以实现这些功能,但是在大多数情况下ShellExecute是更多的被使用的,同时它并不是太复杂。 ShellExecute函数原型及参数含义如下: ShellExecute(
2013-10-23 10:13:35 1458
原创 VC6数据库综合开发资料
VC6数据库综合开发资料 目录 用VC++6.0开发多表联接的数据库应用程序《使用OLEDB编写数据库应用程序》《在Visual C++中用ADO进行数据库编程》《用Visual C++开发数据库应用程序》Visual C++ 中 的ODBC 编 程利用ODBC管理数据库在ODBC 中 应 用DDX 和RFXMFC 中ODBC 类 库 简
2013-10-22 09:13:50 4998
原创 文档视图框架操作总结
是前后台的关系,分工不同。数据管理——文档,数据显示和可视化操作——视图。重点是操作的基本函数和关联关系。 在MFC中M$引入了文档-视结构的概念,文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口。(这一结构在MFC中的OLE,ODBC开发时又得到更多的拓展)因此一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDocumen
2013-10-22 09:12:03 716
原创 多文档视图的实现
多模板文档视图结构的应用一、概述①在一个MDI程序中,需要使用到不同类型的子窗口,而每种类型窗口有可能有很多个,对应不同的数据。这时,可以使用多模板的文档视图结构。以利用文档视图结构带来的便利。②建立某种类型的MDI子窗口时,调用对应文档模板的OpenDocumentFile()而其参数LPCTSTR lpszFileName可以作为建立MDI窗口时
2013-10-22 09:11:53 889
原创 创业投资三把金钥匙
时下,个人投资创业是那些不愿为薪水折腰的人们,追求独立性、自我价值的人们,下岗失业、迫于生计的人们,或是有鸿鹄之志却为燕雀之流所累的人们最为热衷的话题和选择。但是,商海奔涌的激流告诫我们,投资创业并不是仅以一笔钱、一片地、一间屋、一群人便可大功告成的,个中的艰辛与奥妙只有涉足其中的人才能真正体味得到。创业背后是艰辛,是风险,要想成功必须掌握投资成功的三把钥匙。 1、坚定的投资意识
2013-10-22 09:11:45 697
原创 超酷透明窗口
摘要 本文分析了Windows环境下使用MFC实现透明窗口,以及浮动窗口的方法 关键词: 透明窗口,浮动窗口。编译环境 WIN2000以上操作系统,VC++6.0。技术原理如何实现透明窗口 使用MFC的AppWizard生成一个基于对话框的工程,删除Didalog上的所有控件,并设置其附加属性Extended Styles为 Tool Window。
2013-10-22 09:11:33 672
原创 动态滚动信息
介绍一般的系统帮助文件在显示关于帮助信息的时候大部分采用的方法是静态的形式将要显示的内容显示到界面上,由于这次担任项目开发,我总觉得那样太单调了,于是,在各个网站搜索后发现了一个很好的控件类(字模显示控件类),于是我进行扩充完成了一些动态显示的功能,完成后的各种要显示的帮助信息能够象放映电影一样的进行动态显示,效果蛮好的,现将制作过程合代码及演示效果写出来,希望对这个方面有研究或者寻求好方法的
2013-10-22 09:11:21 628
原创 窗体设计技巧
[前言:]有好的界面软件就成功了一半,本文将向您介绍怎样设计一些有“稀奇古怪”形状的窗体,如何设定窗体的颜色、如何设置任务栏和状态栏以及菜单图标等等,通过这些技巧能更深入的理解VC的文档-视图结构。 如何制作透明窗体 使用SetLayeredWindowAttributes可以方便的制作透明窗体,此函数在w2k以上才支持,而且如果希望直接使用的话,可能需要下载最新的SDK。不
2013-10-22 09:10:21 1055
原创 多媒体处理
如何在VC5下定制多媒体真彩封页 在自己的应用程序定制多媒体真彩封页,可以使应用程序在显示名称和版权特性时丰富程序界面,避免由于应用程序启动前进行大量数据初始化时用户进行较长时间的空等待过程,在给应用程序增加了生动特性和专业特性的同时,也起到了宣传和广告的作用。虽然VC5中具有特定的类来实现这一功能,但通过定制自己的应用程序多媒体启动封页,还可使自己的应用程序别具一格。VC5中的实现步骤:
2013-10-22 09:09:10 2564
原创 VISUAL C++多媒体设计及图形、图像处理
图形处理在VC下显示JPEG、GIF格式图像的一种简便方法一、 引言 JPEG图像压缩标准随然是一种有损图像压缩标准,但由于人眼视觉的不敏感,经压缩后的画质基本没有发生变化,很快便以较高的压缩率得到了广泛的认可。GIF格式虽然仅支持256色但它对于颜色较少的图像有着很高的压缩率,甚至超过JPEG标准,也得到了广泛的认同。但作为众多程序员的一个重要的开发工具--Microsoft V
2013-10-22 09:08:08 927
原创 VISUAL C++ MFC/ATL开发-高级篇
在VC++6.0中用MFC进行COM编程首先应当明确,MFC中是通过嵌套类而不是多重继承来实现COM接口的,通过接口映射机制将接口和实现该接口的嵌套类关联起来;MFC中提供一套简明的宏来实现嵌套类的定义.其次,MFC通过CCmdTarget类实现了IUnknown接口。 本文首先描述创建一个COM服务器的步骤和核心代码.然后说明客户程序关键代码。 此COM服务器实现一个
2013-10-22 09:05:39 2882 1
原创 VISUAL C++ MFC/ATL开发-提高篇
MFC简单打印方法通过MFC来完成打印作业有很多的方法,应用场合也有所不同。我们通常是利用视图框架在MFC基础之上按照OnPreparePrinting() à OnBeginPrinting() ? à OnPreprareDC() à OnPrinting () à OnEndPrinting()的顺序来编程的。对于我们使用单文档或者多文档的视图框架时这无疑是一种很好的方式。但是,在基于对
2013-10-22 09:05:28 1380
原创 VISUAL C++ MFC/ATL开发-初级篇
进入MFC讲坛的前言(一)在这里,我想谈谈自己学习MFC的一些体会。我是从1997年才开始在Window下编写程序的。在这之前,我编写过一些DOS程序,包括一个简单的全屏幕编辑器和一个带函数的表达式解释器,都是一些小的程序。Window 3.1流行后,我开始在它下面编写程序。 从编写DOS程序到编写Window程序,需要从编程思想上作一个比较大的调整。在DOS下编写程序,程序的总体流
2013-10-22 09:05:16 1316
原创 VISUAL C++ 数据库开发-初级篇
几种VC++数据库开发技术的比较从功能简单的数据库(如Jet Engine)到复杂的大型数据库系统(如oracle),VC++6.0都提供了一些编程接口。本文主要介绍以下五种: 1.ODBC API; 2.MFC ODBC类; 3.MFC DAO类;(数据访问对象) 4.MFC的OLE/DB; 5.ActiveX数据对象(ADO)。
2013-10-22 09:04:44 2859
原创 VISUAL C++ 数据库开发-ADO
VC中利用ADO共同实现数据库的操作ADO是应用层的编程接口,它通过OLE DB提供的COM接口访问数据,它适合于各种客户机/服务器应用系统和基于Web的应用,尤其在一些脚本语言中访问数据库操作是ADO的主要优势。ADO是一套用自动化技术建立起来的对象层次结构,它比其他的一些对象模型如DAO(Data Access Object)、RDO(Remote Data Object)等具有更好的
2013-10-22 09:04:24 860
原创 VISUAL C++ 数据库开发-高级篇
在Visual C++中用ADO进行数据库编程1. 生成应用程序框架并初始化OLE/COM库环境 创建一个标准的MFC AppWizard(exe)应用程序,然后在使用ADO数据库的InitInstance函数中初始化OLE/COM库(因为ADO库是一个COM DLL库)。本例为: BOOL CAdotestDlg::OnInitDialog() {
2013-10-22 09:04:10 1146
原创 VISUAL C++ 网络与通讯
网络篇POP3协议封装类目前互连网上,EMAIL的使用是越来越广泛了。在所有的TCP连接线路中,大概有一半的线路是用来收发EMAIL的。因此,许多网络应用程序要想离开POP3协议是不可能的。 而且,很多EMAIL系统都是使用SMTP协议来作为发送协议,而POP3协议来作为接受协议。关于这2个协议的许多资料,你可以看一下RCF821(关于SMTP的)和RCF1225(关于POP3
2013-10-22 09:03:56 2829
原创 VISUAL C++ 系统及硬件编程
硬件篇编程实现测试CPU的速度CPU的速度随温度和电压的变化而变化,如何随时查看CPU的速度?下面我们通过编程实现。在这个过程中,要用到汇编语言的知识。 第一步:生成一个基于对话框的工程CPUSpeed。其他选项我们可以都取其默认值。 第二步:在对话框上添加一个按钮,名称为"测试CPU速度",双击此按钮生成此按钮的处理函数,OnButton1。 第三步:在
2013-10-22 09:03:38 2555
原创 COM线程模型详解
本文讲解COM提出的各个类型的线程模型,再说明COM运行时期库是如何实现它们的 线程模型是一种数学模型,专门针对多线程编程而提供的算法,但也仅是算法,不是实现。本文讲解COM提出的各个类型的线程模型,再说明COM运行时期库是如何实现它们的,就像说明Windows是如何实现线程这个数学模型的一样,最后指明一下跨套间调用和各种类型套间编写的要求以帮助理解。希望读者对于Windows操作系统的线
2013-10-22 09:03:10 630
原创 线程的基础知识
1. 进程与线程有那些区别和联系?l 每个进程至少需要一个线程。l 进程由两部分构成:进程内核对象,地址空间。线程也由两部分组成:线程内核对象,操作系统用它来对线程实施管理。线程堆栈,用于维护线程在执行代码时需要的所有函数参数和局部变量。l 进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。l 如果在单进程环境
2013-10-22 09:02:36 526
原创 WINDOWS SOCKET1.1 程序设计
一、简介 Windows Sockets 是从 Berkeley Sockets 扩展而来的,其在继承 Berkeley Sockets 的基础上,又进行了新的扩充。这些扩充主要是提供了一些异步函数,并增加了符合WINDOWS消息驱动特性的网络事件异步选择机制。 Windows Sockets由两部分组成:开发组件和运行组件。 开发组件:Windows Sockets
2013-10-21 10:25:43 915
原创 使用VISUAL C++开发SOAP客户端应用
简介 在本篇文章中,我们将讨论如何使用Visual C++开发一个简单的SOAP客户端应用程序,我们还将介绍SOAP API的使用。SOAP是互联网上一种非常流行的交换信息用的协议,由于是为了与HTTP、SMTP和其他的类似协议协同工作的,因此它十分简单。用它描述的信息能够被轻易地通过互联网发送到另外的计算机上,而无需担心遭到防火墙等网络安全技术的拦截。 在这里,我们假设读者已
2013-10-21 10:24:24 870
原创 不同局域网内经INTERNET的P2P通信技术总结
以下将要用到一个叫做NAT的重要名词,先做点解释。NAT是Net Address Translation(网络地址转换)的简称,就是说,局域网通常靠一个具有公网IP的代理网关服务器连到Internet共享上网。局域网内的机器并不具备公网IP地址,它只有内网地址,假设它要和Internet上的HTTP服务器通信,代理网关便会新建一个端口来和这个网内机器关联,并通过这个端口来和HTTP服务器交换数
2013-10-21 10:21:12 780 1
原创 鼠标消息编程原理_TRACKMOUSEEVENT(&TME)
首先 #include "commctrl.h" #pragma comment( lib, "comctl32.lib" ) 然后 TRACKMOUSEEVENT tme; tme.cbSize = sizeof(TRACKMOUSEEVENT); tme.dwFlags = TME_HOVER; tme.hwndTrac
2013-10-21 10:20:06 962
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人