• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






C++是神码东东。。。

Nothing to Say
 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | | 订阅 订阅 | 管理

2012年8月29日

GetLastError演示
摘要: VS中添加监视$err,hr可以查询到错误码和对应的解释。也可以查看 winerror.h方法1. 1 ListBox.ResetContent();//清空CListBox 2 3 LPVOID lpMsgBuf; 4 5 for (int i=0;i<1000;i++) 6 7 { 8 9 DWORD dw =i; //在预测有错误的地方加上dw=GetLastError10 11 FormatMessage(12 13 FORMAT_MESSAGE_ALLOCATE_BUFFER |14 15 ... 阅读全文
posted @ 2012-08-29 20:18 凨丶 阅读(375) 评论(0) 推荐(0)
 
_stdcall和_cdecl
摘要: __cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。 _stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。这些堆栈中的参数由被调用的函数在返回后清除,使用的指令是 retnX,X表示参数占用的字节数,CPU在ret之后自动弹出X个字节的堆栈空间。称为自动清栈.. 阅读全文
posted @ 2012-08-29 15:50 凨丶 阅读(289) 评论(0) 推荐(0)
 
只运行一个实例的方法
摘要: 在VC++中编程中,只运行一个实例的方法主要有两类:1遍历当前的所有窗口,查找相同的实例。为了便于查找,一般要事先设一个查找标志。2利用系统提供的互斥对象或信标,直接让系统抑制重复的实例。在发现重复运行时,一般还有一个任务,就是激活已经存在的窗口。一、第一类方法的实现下面是一个具体的例子,下图是示例代码运行的情况。部分关键代码1、在App的InitInstance()中枚举所有窗口,查找本程序实例 1 HWND oldHWnd = NULL; 2 3 EnumWindows(EnumWndProc,(LPARAM)&oldHWnd); //枚举所有运行的窗口 4 5 if(oldHW. 阅读全文
posted @ 2012-08-29 11:14 凨丶 阅读(374) 评论(0) 推荐(0)
 
信号量
摘要: 1 BOOL ReleaseSemaphore(2 HANDLE hSemaphore, // 信号量句柄3 LONG lReleaseCount, // 计数递增数量4 LPLONG lpPreviousCount // 先前计数5 ); 6 7 C++信号量Semaphore和MFC中的CSemaphore类使用【转】 信号量(Semaphore )内核对象对线程的同步方式与前面几种方法不同,它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最 大线程数目。在用CreateSemaphore () 创建信号量时即要同时指出允许的最大资源计数和当前可用资源计数。... 阅读全文
posted @ 2012-08-29 11:13 凨丶 阅读(523) 评论(0) 推荐(0)
 
互斥对象、事件对象、关键代码段的应用和比较
摘要: 互斥对象、事件对象、关键代码段的应用和比较 线程同步的方式主要有三种:互斥对象、事件对象和关键代码段。一. 互斥对象 互斥对象(mutex)属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。互斥对象包含一个使用数量,一个线程ID和一个计数器。其中线程ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。创建互斥对象:调用函数CreateMutex。调用成功,该函数返回所创建的互斥对象的句柄。请求互斥对象的所有权:调用函数WaitForSingleObject函数。线程必须主动请求共享对象的所有权才能获得该所有权。释放指定互斥对象的所有权:调用Releas. 阅读全文
posted @ 2012-08-29 11:13 凨丶 阅读(1556) 评论(0) 推荐(0)
 
Windows API——CreateEvent——创建事件
摘要: 事件是一个允许一个线程在某种情况发生时,唤醒另外一个线程的同步对象。事件告诉线程何时去执行某一给定的任务,从而使多个线程流平滑CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面. HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, // 安全属性 BOOL bManualReset, // 复位方式 BOOL bInitialState, // 初始状态 LPCTSTR lpName // 对象名称 );lpEventAttributes: [输入]一个指向SE... 阅读全文
posted @ 2012-08-29 11:12 凨丶 阅读(8435) 评论(0) 推荐(1)
 
Windows API ——CreateMutex——创建互斥对象
摘要: 互斥对象是系统内核维护的一种数据结构,它保证了对象对单个线程的访问权 互斥对象的结构:包含了一个使用数量,一个线程ID,一个计数器 使用数量是指有多少个线程在调用该对象,线程ID是指互斥对象维护的线程的ID 计数器表示当前线程调用该对象的次数HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, 安全属性结构指针BOOL bInitialOwner, //是否占有该互斥量 LPCTSTR lpName //设置互斥对象的名字 );如果一个线程拥有了一个互斥对象后,当该线程运行完成后就要释放该互斥对象,不然其... 阅读全文
posted @ 2012-08-29 11:12 凨丶 阅读(18976) 评论(0) 推荐(1)
 
临界区
摘要: 每个进程中访问临界资源的那段代码称为临界区(Critical Section)(临界资源是一次仅允许一个进程使用的共享资源)。每次只准许一个进程进入临界区,进入后不允许其他进程进入。不论是硬件临界资源,还是软件临界资源,多个进程必须互斥地对它进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。 临界区在使用时以CRITICAL_SECTION结构对象保护共享资源,并分别用EnterCriticalSection()和Leav.. 阅读全文
posted @ 2012-08-29 11:09 凨丶 阅读(4697) 评论(1) 推荐(1)