四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对一个共享资源的单独访问而设计的。3、信号量:为控制一个具有有限数量用户资源而设计。4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。临界区(Critical Section)(同一个进程内,实现互斥)保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他 Read More
posted @ 2014-02-14 17:38 私念之泪 Views(1915) Comments(0) Diggs(0) Edit
当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真:CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP2);BITMAP bmp;bitmap.GetBitmap(&bmp);CDC dcCompatible;dcCompatible.CreateCompatibleDC(pDC);dcCompatible.SelectObject(&bitmap);CRect rect;GetClientRect(&rect);pDC->SetStretchBltMode(COLORONCOLOR); //设置在指定设备内容中的 Read More
posted @ 2014-02-12 15:32 私念之泪 Views(6098) Comments(0) Diggs(0) Edit
Invalidate、RedrawWindow与UpdateWindow的区别Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate()只是通知系统,此 时的窗口已经变为无效。强制系统调用WM_PAINT,而这个消息只是Post就是将该消息放入消息队列。当执行到WM_PAINT消息时才会对敞口进行重绘。UpdateWindow只向窗体发送WM_PAINT消息,在发送之前判断GetUpdateRect(hWnd,NULL,TRUE)看有无可绘制的客户区域,如果没有,则不发送WM_PAINT。RedrawWindow()则是具有Invalidate()和Up Read More
posted @ 2014-02-12 11:55 私念之泪 Views(235) Comments(0) Diggs(0) Edit
Windows中有一个Shlwapi.dll文件,包含了大量的Windows字符串处理方法,这些方法,在通常的程序应用中,经常会用到,有一部分处理方法,在CRuntime中也存在,但不方便使用。有一部分函数,也有相关的Windows API函数,如StrCpy对应的lstrcpy之类的字符串处理函数。从Shlwapi名称看,这个应该是Windows的Shell API函数。不管怎么说,Shlwapi.dll提供了大量处理Windows字符串的方法,这些方法,可以让你工作更加简便,通常,我们需要获取一个文件名的后缀名,使用MFC的CString查找字符串可以获取,但是麻烦,每个人的实现都不一样, Read More
posted @ 2014-02-11 11:04 私念之泪 Views(680) Comments(0) Diggs(0) Edit
C++ _access和_waccess的使用方法概述头文件:判断文件的访问权限原型int _access(const char *path, int mode);int _waccess(const wchar_t *path,int mode);参数path 文件或目录路径mode访问权限设定返回值如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1。备注当path为文件时,_access函数判断文件是否存在,并判断文件是否可以用mode值指定的模式进行访问。当path为目录时,_access只判断指定的目录是否存在,在Windows NT和Windo Read More
posted @ 2014-02-11 10:42 私念之泪 Views(4205) Comments(0) Diggs(0) Edit
一个测试c++链接 sql server 数据库的例子// 数据库说明// 数据库用户为 sa , 密码为 空// 数据库为 MyDB// 表为 UserInfo// 表字段为 Name 、 PassWd 、ID// TestSQL.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_ Read More
posted @ 2014-02-10 15:34 私念之泪 Views(638) Comments(0) Diggs(0) Edit
一同事写的测试代码执行时间的帮助类,// TimeHlper.h#pragma once#ifndef NL#define NL _T("\n")#endif#define DEBUG_YGS#define IDPTRACE_VAL(fmt, val) TRACE(NL _T(__FUNCTION__) _T(#val) fmt, val) // 输出变量#define IDPTRACE_INT(val) IDPTRACE_VAL(_T("%d"), val) // 输出INT/////////////////////////////////////// Read More
posted @ 2014-02-10 11:49 私念之泪 Views(208) Comments(0) Diggs(0) Edit
调用CWnd::GetDC函数跟CWnd::ReleaseDC函数的代码运行时,会出现 4 个字节的内存泄漏。Microsoft 已经确认这是在本文开头部分列出的 Microsoft 产品中的缺陷。若要避免此问题,请使用GetDC方法和ReleaseDC方法的CWnd类版本。使用GetDC函数和ReleaseDC函数。http://support.microsoft.com/kb/819635/zh-cn再现现象的步骤中的方法是从CWnd派生的类的一部分中,插入下面的代码在您的应用程序:CDC *pDC; RECT rect; GetClientRect (&rect); f... Read More
posted @ 2014-02-10 11:32 私念之泪 Views(532) Comments(0) Diggs(0) Edit
Debug信息捕获软件。 可以很方便的捕获系统实时输出的Debug信息,并保存为日志文件。可以远程捕获服务器上的Debug信息。 比较方便开发人员在系统发布前监控一些系统流程和异常,甚至在系统不大的情况下,更能在部署后进行远程监控功能。 1.使用方法 在程序中需要输出调试信息调用即可。 2.DbgView界面和监控方法点击“Connect Local” 打开软件后,顶部工具栏中选择监控主机。先看连接本地机调试,点击“Connect Local”即可。工具栏 在这个工具栏上,主要看几个图标 此按钮,表示是否开启捕获服务 此按钮,表示是否捕获系统内核的Debug信息 此按钮,表... Read More
posted @ 2014-02-09 10:38 私念之泪 Views(1477) Comments(0) Diggs(0) Edit
The CreateFile function creates or opens the following objects and returns a handle that can be used to accessthe object:filespipesmailslotscommunications resourcesdisk devices(Windows NT only)consolesdirectories(open only)CreateFile函数创建或打开下列对象,并返回一个可以用来访问这些对象的句柄。文件pipes邮槽通信资源磁盘驱动器(仅适用于windowsNT)控制台 Read More
posted @ 2014-02-08 17:48 私念之泪 Views(233) Comments(0) Diggs(0) Edit