123456

 
上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 39 下一页

2011年7月25日

类的静态成量变量必须初始化

摘要: 因为类的静态成员变量是所有实例共用的.所以得在类外初始化.调用的时候可以通过对象调用,也可以通过类直接调用classA{public:inti;//有默认值};classB{public:staticintn;staticAAobj;};intB::n=1;//静态成员变量的初始化AB::Aobj;//静态成员变量的初始化(实例化)voidmain(){ B Bobj; //注释掉这行也能输出B::nprintf("B::n=%dBobj.n=%dBobj.Aobj.i=%d\n",B::n,Bobj.n,Bobj.Aobj.i);}输出“B::n=1 Bobj.n=1 B 阅读全文

posted @ 2011-07-25 22:20 hgy413 阅读(186) 评论(0) 推荐(0) 编辑

CMap和CArray中ARG_

摘要: 一个输入参数,没有ARG_的表示当前CMap和CArray中实际存贮的变量类型,也就是使用时候ARG_TYPE ---> TYPE 无损转化就可以用当然你想不无损转化那我也没办法:举个简单的例子吧,定义一个以CString为元素的动态数组:tpyedef CArrayCArrStr;这样就相当于,你传个CString进去,内部转换成int对象保存了。 阅读全文

posted @ 2011-07-25 21:40 hgy413 阅读(127) 评论(0) 推荐(0) 编辑

WM_NCACTIVE

摘要: 当改变窗口大小、移动窗口到屏幕边界时,都会产生一个 WM_NCPAINT 消息,要求NC区域重绘。但是当右键点击任务栏时,会弹出菜单,同时窗口的标题栏会变色,此时不会产生 WM_NCPAINT来重绘,而是产生一个 WM_NCACTIVE消息,系统会去重绘。所以,做界面皮肤时,处理WM_NCPAINT的同时,还要处理WM_NCACTIVE。否则,右键任务栏时,系统会画出默认的边框。return (!(BOOL)wParam) ; 阅读全文

posted @ 2011-07-25 19:48 hgy413 阅读(249) 评论(0) 推荐(0) 编辑

2011年7月12日

互斥对象详记

摘要: 互斥对象的行为特性与关键代码段相同,但是互斥对象属于内核对象,而关键代码段则属于用户方式对象。这意味着互斥对象的运行速度比关键代码段要慢。但是这也意味着不同进程中的多个线程能够访问单个互斥对象,并且这意味着线程在等待访问资源时可以设定一个超时值I D用于标识系统中的哪个线程当前拥有互斥对象(互斥对象的特殊点)互斥对象的使用规则如下:• 如果线程I D是0(这是个无效I D),互斥对象不被任何线程所拥有,并且发出该互斥对象的通知信号。 • 如果I D是个非0数字,那么这个ID的线程就拥有互斥对象,并且不发出该互斥对象的通知信号。对于互斥对象来说,正常的内核对象的已通知和未通知规则存在一个特殊的异 阅读全文

posted @ 2011-07-12 17:21 hgy413 阅读(181) 评论(0) 推荐(0) 编辑

2011年7月11日

SetWaitableTimer 通过异步程序调用(APC)实现的定时功能

摘要: 通过异步程序调用(APC)实现的定时功能定时器是一个在特定时间或者规则间隔被激发的内核对象。结合定时器的异步程序调用可以允许回调函数在任何定时器被激发的时候执行。本文的例子代码显示了如何实现。 使用本定时器时,你需要把常量_WIN32_WINNT定义为0x0400,并且此常量应该在包之前定义,以确保声明合适的定时器原型函数。 通过调用CreateWaitableTimer()可以创建一个定时器,此函数返回一个指向内核对象的句柄。若定时器已经存在,你可以通过使用OpenWaitableTimer()获得一个进程相关的句柄。无论是通过CreateWaitableTimer() 还是通过Open.. 阅读全文

posted @ 2011-07-11 16:43 hgy413 阅读(930) 评论(0) 推荐(0) 编辑

2011年7月7日

线程同步和循环锁

摘要: 先介绍几个概念:原子访问:是指线程在访问资源时能够确保所有其他线程都不在同一时间内访问相同的资源循环锁:是指在线程1中如果要对变量进行操作,要先查看这个变量(或资源)有没有被其它线程用到,如果是,则一直循环(循环次数自定),直到其它线程放弃对该变量(或资源)的控制,如果否,直接可以对该变量(或资源)进行操作临界区:在所有同步对象中,临界区是最容易使用的,但它只能用于同步单个进程中的线程。取得对某个数据区的访临界区一次只允许一个线程访问权。还有,在用到的同步对象中,只有临界区不是内核对象,它不由操作系统的低级部件管理,而且不能使用句柄来操纵,由于不是内核对象,使得它作为一种轻量级的同步机制,同步 阅读全文

posted @ 2011-07-07 11:01 hgy413 阅读(1054) 评论(0) 推荐(0) 编辑

2011年7月6日

生成后事件命令行

摘要: 在“生成事件-->生成后事件”属性的命令行属性中设置“copy "$(TargetPath)" \TDM3000-DEV\Bin”,该命令表示在生成该工程后,把该工程生成的可执行文件或dll等拷贝到该工程所在磁盘(今设为F:盘)的Bin目录下(即F:\TDM3000-DEV\Bin)。注意:该Bin目录首先要存在,否则链接会出错。这对工程很多,文件很多的项目,同时又想把文件都集中到同一个目录下是很有必要的,避免了找文件,手动复制的操作。又比如写一个DLL导出类,要把所有的导出接口(.h)都放在一其他文件夹下,可以自己写一个copy.batset out_dir=..\ 阅读全文

posted @ 2011-07-06 10:15 hgy413 阅读(737) 评论(0) 推荐(0) 编辑

2011年7月4日

怎么得到执行复杂的算法时需要的时间量

摘要: 第一种方法:dwOldTime = GetTickCount();DoSomething();dwTimeElapsed = GetTickCount() – dwOldTime;第二种方法:class CStopwatch {public: CStopwatch() { QueryPerformanceFrequency(&m_liPerfFreq); Start(); } void Start() { QueryPerformanceCounter(&m_liPerfStart); } __int64 Now() const... 阅读全文

posted @ 2011-07-04 16:55 hgy413 阅读(245) 评论(0) 推荐(0) 编辑

伪句柄

摘要: DWORD WINAPI ParentThread(PVOID pvParam){ HANDLE hThreadParent = GetCurrentThread(); CreateThread(NULL, 0 , ChildThread, (PVOID)hThreadParent, 0, NULL); //Function continues...}DWORD WINAPI ChildThread(PVOID pvParam) { HANDLE hThreadParent = (HANDLE) pvParam; FILETIME ftCreationTime, ftExi... 阅读全文

posted @ 2011-07-04 10:00 hgy413 阅读(159) 评论(0) 推荐(0) 编辑

2011年6月30日

怎么让模态对话框最小化时,主窗口也最小化

摘要: 思路,在模态对话框最小化时,激活主窗口,同时启用一个定时器,在定时器中判断 到主窗口变化大小时(从最小化到其他状态),把主窗口禁止,代码如下:void CXXDlg::OnBtnMini(){ AfxGetMainWnd()->EnableWindow(TRUE); AfxGetMainWnd()->ShowWindow(SW_MINIMIZE) ; if (m_Timer == 0) m_Timer = SetTimer(SLIDER_TIMER,100,NULL) ;}void CXXDlg::OnTimer(UINT_PTR nIDEvent){ if (nIDEvent = 阅读全文

posted @ 2011-06-30 16:25 hgy413 阅读(332) 评论(0) 推荐(0) 编辑

上一页 1 ··· 27 28 29 30 31 32 33 34 35 ··· 39 下一页

导航