摘要:
HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes _In_ LONG lInitialCount, _In_ LONG lMaximumCount,... 阅读全文
摘要:
使用方法: 1、创建一个互斥器:CreateMutex; 2、打开一个已经存在的互斥器:OpenMutex; 3、获得互斥器的拥有权:WaitForSingleObject、WaitForMultipleObjects 等一类等待的函数……(可能造成阻塞); 4、释放互斥器的拥有权... 阅读全文
摘要:
关键区域(CriticalSection)临界区是为了确保同一个代码片段在同一时间只能被一个线程访问,与原子锁不同的是临界区是多条指令的锁定,而原子锁仅仅对单条操作指令有效;临界区和原子锁只能控制同一个进程中线程的同步使用方法:1、初始化:InitializeCriticalSection; 2、删... 阅读全文
摘要:
原子锁:当多个线程同时对同一资源进行操作时,由于线程间资源的抢占,会导致操作的结果丢失或者不是我们预期的结果。比如:线程A对一个变量进行var++操作,线程B也执行var++操作,当线程A执行var++时,如果线程切换时间恰好是线程A将结果存在var变量之前,那么线程B继续执行var++;此时假设v... 阅读全文
摘要:
模版特化:任何针对模版参数进一步进行条件限制设计的特化版本。 >完全特化:针对所有的模版参数进行特化。 >举例如下: template class Template{}; 全特化:template class Template{};偏特化:template class Template{};注意:函数模版不存在偏特化,只有类模版才能偏特化#include using namespace std;templateclass Test{public: Test( T i, N j ) : a(i), b(j) { coutclass Test{public: Tes... 阅读全文
摘要:
消息分类与消息队列 Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型, 而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,存放数据的含义也不一样。 time表示产生消息的时间,pt表示产生消息时鼠标的位置。 按照类型,Windows将消息分为: (0) 消息ID范围 系统定义消息ID范围:[0x0000, 0... 阅读全文
摘要:
1、宏就是用宏定义指令#define定义一个标识符,用它来表示一个字符串或一段源代码。MFC宏作为MFC类库的一个组成部分在MFC应用程序中经常出现。MFC宏在路径".../Microsoft Visual Studio/VC/atlmfc/include"下的Afxwin.h、Afx.h及Afxmsg_.h等MFC头文件中分别进行了定义。(1)常用的MFC宏包括消息映射宏、运行时类型识别宏、序列化宏、调试宏和异常宏等。要想真正了解MFC的内部机制和熟练运用MFC,必须掌握MFC宏的基本原理和使用方法。(2)有关运行时类型识别的宏运行时类型识别(RTTI)是指在程序运行时能 阅读全文
摘要:
AlphaBlend 函数功能:该函数用来显示透明或半透明像素的位图。 函数原型:BOOL AlphaBlend( HDC hdcDest, // handle to destination DC int nXOriginDest, // x-coord of upper-left corner int nYOriginDest, // y-coord of upper-left corner int nWidthDest, // destination width int nHe... 阅读全文
摘要:
首先我们区分下几个容易混淆的关键词: new、operator new、placement newnew和delete操作符我们应该都用过,它们是对堆中的内存进行申请和释放,而这两个都是不能被重载的。要实现不同的内存分配行为,需要重载operator new,而不是new和delete。operator new(1) 只分配所要求的空间,不调用相关对象的构造函数。当无法满足所要求分配的空间时,则 ->如果有new_handler,则调用new_handler,否则 ->如果没要求不抛出异常(以nothrow参数表达),则执行bad_alloc异常,否则 -... 阅读全文
摘要:
功能:将一个进程内的伪句柄,转化为可以用来进程间通信的实句柄BOOL DuplicateHandle( HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions);第一个参数是当前的源进程句柄,第二参数是当前的资源句柄,第三个是目标进程的句柄,第四个是你要得到的目的句柄,这里应该是一个变量,使用指针,DuplicateHand 阅读全文