Function Collection
渔樵码农
编程 下棋 文学
展开
-
SendMessage
函数功能:该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。 函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); 参数: hWnd:其窗口程序将接收消息的原创 2008-07-26 17:04:00 · 580 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管转载 2009-10-04 16:24:00 · 703 阅读 · 0 评论 -
Linux环境进程间通信(四):信号灯
一、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容转载 2009-10-04 16:22:00 · 665 阅读 · 0 评论 -
Linux环境进程间通信(一): 管道及有名管道
管道及有名管道在本系列序中作者概述了 linux进程间通信的几种主要手段。其中管道和有名管道是最早的进程间通信机制之一,管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。认清管道和有名管道的读写规则是在程序中应用它们的关键,本文在详细讨论了管道和有名管道的通信机制的基础上,用实例对其读转载 2009-10-04 16:06:00 · 560 阅读 · 0 评论 -
Linux系统调用 Msgget()
功能描述:获取与某个键关联的消息队列标识。消息队列被建立的情况有两种:1.如果键的值是IPC_PRIVATE。2.或者键的值不是IPC_PRIVATE,并且键所对应的消息队列不存在,同时标志中指定IPC_CREAT。 如果新的消息队列被建立,它关联的msqid_ds数据结构初始化如下:msg_perm.cuid 和 msg_perm.uid设为调转载 2009-10-04 10:29:00 · 1781 阅读 · 1 评论 -
Linux环境进程间通信(三):消息队列
本系列文章中的前两部分,我们探讨管道及信号两种通信机制,本文将深入第三部分,介绍系统 V 消息队列及其相应 API。消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信转载 2009-10-04 16:19:00 · 574 阅读 · 0 评论 -
Linux环境进程间通信(二):信号(B)
在信号(A)中,讨论了linux信号种类、来源、如何安装一个信号以及对信号集的操作。本部分则首先讨论从信号的生命周期上认识信号,或者宏观上看似简单的信号机制(进程收到信号后,作相应的处理,看上去再简单不过了),在微观上究竟是如何实现的,也是在更深层次上理解信号。接下来还讨论了信号编程的一些注意事项,最后给出了信号编程的一些实例。一、信号生命周期从信号发送到信号处理函数的转载 2009-10-04 16:16:00 · 607 阅读 · 0 评论 -
Linux环境进程间通信(二):信号(A)
linux信号机制远远比想象的复杂,本文力争用最短的篇幅,对该机制做了深入细致的分析。信号应用实例将在信号(B)中给出。一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通转载 2009-10-04 16:10:00 · 594 阅读 · 0 评论 -
semop系统调用
功能描述:操作一个或一组信号。 用法: #include #include #include int semop(int semid, struct sembuf *sops, unsigned nsops);int semtimedop(int semid, struct sembuf *sops, unsigned nsops, struct t转载 2009-09-22 09:34:00 · 725 阅读 · 0 评论 -
信号量函数 semget() semop() semctl()
问共享资源进行控制的机制,其实为了解决互斥共享资源的同步问题而引入的机制。不能单独定义一个信号量,而只能定义一个信号量集,其中包括一组信号量,同意信号量集中的信号量使用同一引用ID,这样设置是为了多个资源或同步操作的需要。与信号量有关的几个系统调用函数:1、信号量集得创建与打开 semget()原型:int semget(key_t key,int nsems,int semflg);其中 参数k转载 2009-09-22 17:33:00 · 1066 阅读 · 0 评论 -
rand() 函数
C++的编程中可以用RAND()来产生随机数以满足编程人员的需要。它产生的随即数界于0到MAX_VALUE之间。尽管我们能用它产生随即数,但有时还是不能满足实际需求。比方说,如果模拟掷硬币,那只要0和1就够了。这样,我们可以采用比例收放和移位的方法: RAND()%a+b。a是需要的数字个数。比如在上例中只要两个数字,那a就取2。b表示移位,如果上例中要用1和2表示硬币的正反面,则原创 2008-06-12 11:28:00 · 1643 阅读 · 0 评论 -
GetClientRect 函数
该函数获取窗口客户区域的坐标。客户区坐标指定客户区的左上角和右下角。由于客户区坐标是相对子窗口客户区的左上角而言的,因此左上角坐标为(0,0)。 定义BOOL GetClientRect(HWND hWnd, LPRECT lpRect); 参数 hWnd 窗口句柄。 lpRect转载 2008-07-26 20:45:00 · 1669 阅读 · 0 评论 -
AfxGetApp()的使用
AfxGetApp( )是全局的。AfxGetApp( )这个函数可以得到当前应用进程的指针,是CWinApp*类型的,通过这个指针可以访问到这个进程中的对象。比如在全局函数中要向对话框中的列表写数据。void writeString(char* pString){ CWnd* pWnd = AfxGetApp()->GetMainWnd(); CMyDlg * pDlg;转载 2008-07-26 20:33:00 · 7720 阅读 · 3 评论 -
CListCtrlEx:一个支持文件拖放和实时监视的列表控件
一、需求无论何时,当你在Explorer窗口中创建、删除或重命名一个文件夹/文件,或者插入拔除移动存储器时,Windows总是能非常快速地更新它所有的视图。有时候我们的程序中也需要这样的功能,以便当用户在Shell中作出创建、删除、重命名或其他动作时,我们的应用程序也能快速地随之更新。二、原理Windows内部有两个未公开的函数(注:在最新的MSDN中,已经公开了这两个转载 2010-01-06 09:45:00 · 656 阅读 · 0 评论