- 博客(23)
- 资源 (18)
- 收藏
- 关注
原创 Template-Based Classes的用法
1、简单型 Template-Based Classes使用时需要指定参数 CArray CList CMap 其中type用来指定你希望收集的对象的类型(int,float或者其他C++的类),arg_type则用来指定函数的参数类型。例如: CArry m_intArray; m_intArray.Add(15); 表示需要一个in
2007-08-30 19:11:00 1920
转载 rand和srand的用法
首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数) 表头文件: #include 定义函数 :int rand(void) 函数说明 : 因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的,rand()会返回一随机数值,范围
2007-08-30 15:23:00 1985
原创 四种进程间通信方式简介与比较
CreatePipe(&m_hRead, &m_hWrite, &sa, 0)创建匿名管道CreateProcess("..//Child//debug//Child.exe", NULL, NULL, NULL,TRUE, 0, NULL, NULL, &sui, &pi)通过STARTUPINFO结构体sui将父进程匿名管道读写句柄传递给子进程 sui.hStdInput = m
2007-08-28 16:39:00 9692 3
原创 利用剪贴板进行进程间通信
发送端代码:if (OpenClipboard()) //打开一个剪贴板 { CString str; HANDLE hClip; char *pBuf; EmptyClipboard(); //清空剪贴板,并将剪贴板的所有权分配给打开它的窗口 GetDlgItemText(IDC_EDIT_SEND, str);
2007-08-23 15:42:00 1514
原创 使用异步选择函数WSAAsyncSelect
Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的异步存取策略。Windows Sockets的异步选择函数WSAAsyncSelect()提供了消息机制的网络事件选择(lEvent),当使用它登记的网络事件发生时,Windows应用程序相应的窗口(hWnd)函数将收到一个消息(wMsg),消息中指示了发生的网络事
2007-08-22 18:56:00 1241
原创 阻塞和非阻塞
Windows套接字在两种模式下执行I/O操作,阻塞和非阻塞。在阻塞模式下,在I/O操作完成前,执行操作的Winsock函数会一直等待下去,不会立即返回程序(将控制权交还给程序)。而在非阻塞模式下,Winsock函数无论如何都会立即返回。Windows Sockets为了支持Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的异步存取策略。Windows
2007-08-22 16:56:00 910
原创 三种线程同步方式的比较
1、互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度比较慢,但是利用内核对象,可以在多个进程的多个线程之间进行线程同步。2、关键代码段是工作在用户方式下,同步速度比较快,但容易产生死锁,因为在等待进入关键代码段时,无法设定超时值。一般在进行多线程编程时,首选关键代码段,如果在一个mfc程序中使用,可以在一个类的构造函数中调用InitializeCriticalSection函数,在这
2007-08-20 16:05:00 1922
原创 利用关键代码段实现线程同步
关键代码段是工作在用户方式下,关键代码段(临界区)是指一小代码段,在代码能够执行前,他必须独占对某些资源的访问权。 每个临界区对象对应于一个临界资源。#include #include DWORD WINAPI Func1Proc(LPVOID lpParameter);DWORD WINAPI Func2Proc(LPVOID lpParameter);int tickets = 100;CRI
2007-08-20 15:34:00 737
原创 利用事件对象实现线程同步
事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置事件还是人工重置事件的bool值,另一个用于指明该事件处于已通知状态(有信号状态)还是未通知状态(无信号状态)的bool值,当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程,需要用ResetEvent函数设置其事件状态,且WaitForSingleObject不能设置该事件对象的状态。当一个自动重置的事件得到
2007-08-20 14:40:00 872 1
转载 WinSock学习笔记
Socket(套接字)◆先看定义:typedef unsigned int u_int;typedef u_int SOCKET;◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。◆Socket有五种不同的类型:1、流式套接字(stream socket)定义:#define SOCK_STRE
2007-08-19 16:36:00 927
转载 多线程编程小结
程序和进程 程序是计算机指令的集合,它以文件的形式存储在磁盘上。 进程:通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动。 进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源;而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占用系统的运行资源。 进程由两个部分组成:
2007-08-19 16:33:00 693
原创 利用互斥对象实现线程同步
1、关于WaitForSingleObject的返回值If the function succeeds, the return value indicates the event that caused the function to return. This value can be one of the following.
2007-08-18 21:26:00 995
原创 关于socket编程
使用socket之前要先通过WSAStartup()函数加载socket库和进行该库的版本协商,注意其第一个参数wVersionRequested 通过MAKEWORD宏来获取,宏参数的高位字节代表该库副版本,而高位字节代表主版本。对于每一个WSAStartup()的成功调用(成功加载WinSock.dll后),在最后都对应于一个WSACleanUp调用,以释放为该应用进程释放的资源。1、基于TC
2007-08-17 16:16:00 1085
原创 乱记Serializable Class
通俗的说,一个可以Serializable的类就是支持archive>操作的类。如何定义一个Serializable ClassFive main steps are required to make a class serializable. They are listed below and explained in the following sections: De
2007-08-16 17:11:00 1001
转载 关于CDocManager类
msdn中居然找不到CDocManager类的说明,网上找到这篇文档,有待分析。首先有个不明白的地方,我的书上说CDocManager类是不公开的,可是我还是找到了他的类定义和实现,真搞不懂她这个不公开是什么意思??? CDocManager的定义如下:class CDocManager : public CObject{ DECLARE_DYNAMIC(CDocManage
2007-08-16 15:28:00 2970 3
原创 MFC中关于打开和另存为对话框中过滤器的编程
利用CFileDialog类来制作另存为和打开对话框 CFileDialog filedlg(FALSE); //FALSE表示制作另存为对话框,TRUE为打开对话框 filedlg.m_ofn.lpstrTitle = "我的文件保存"; //filedlg.m_ofn是一个OPENFILENAME 结构体,通过对该结构体成员的改变来修带对话框的相关属性。其lpstrTitle中
2007-08-15 16:42:00 3625 1
原创 MFC中的图象保存--关于兼容DC和CMetaFileDc的用法
MFC中的图象保存一般有三种方法:1、把图象中的各个图象的完整相关信息(点坐标,图象类型)以一个结构体保存,将其指针加入到CPtrArray类对象中,然后在OnDraw函数中取出相关信息绘图。2、使用兼容DC:先将当前图象贴到一个内存CBitmap对象块中,然后再用兼容DC将其SelectObject,OnDraw函数中在拷贝兼容DC的内容到当前的绘图DC中完成重绘操作。//保存当前位图的操作
2007-08-14 22:20:00 6160 3
转载 浮点数的内存布局
1. 什么是浮点数在计算机系统的发展过 程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比如 99.00 或者 00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。由于小数点位置固定,所以可以直接用四位数值来表
2007-08-13 13:42:00 1582 1
原创 MFC中如何自定义消息(加点关于MFC的牢骚)
1、在需要接收用户自定义消息的头文件中#define UM_PROGRESS WM_USER+n (n为一个正整数,因为windows的标准消息都小于WM_USER,这样可以避免和标准消息重复,Microsoft推荐自定义消息值至少为WM_USER+100) ;2、在类头文件中加入自定义消息处理函数的声明:afx_msg void OnProgress();,注意消息附加参数的使用;3、在类的实现
2007-08-12 23:09:00 1395
转载 C语言中可变参数的用法
C语言中可变参数的用法 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf("%s",s); pri
2007-08-12 14:28:00 709
原创 关于隐式提供缺省构造函数的一个误区
很多C++的教材中都讲:“如果一个定义一个类,并且不提供任何构造函数的话,那么编译器将会隐式的提供一个缺省构造函数”。以下节录ISO C++ 99的文档的原文:The default constructor (12.1), copy constructor and copy assignment operator (12.8), and destructor (12.4)are special m
2007-08-05 17:10:00 3992 1
原创 C语言中的位操作例子(将任一整数转换为二进制形式)
将任一整数转换为二进制形式*问题分析与算法设计将十进制整数转换为二进制的方法很多,这里介绍的实现方法利用了C语言能够对位进行操作的特点。对于C语言来说,一个整数在计算机内就是以二进制的形式存储的,所以没有必要再将一个整数经过一系列的运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。#includevoid printb(int,int);int main(){ int x;p
2007-08-04 22:35:00 8438 1
原创 关于sizeof和strlen的区别
先看几个例子:char *str1="absde"; char str2[]="absde"; char str3[8]={a,}; char ss[] = "0123456789"; 首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解 str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符
2007-08-04 16:37:00 1324 1
Oracle专家高级编程(Expert_one-on-one_Oracle中文版).part2.rar
2010-11-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人