![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C - Windows
文章平均质量分 72
burningcpu
这个作者很懒,什么都没留下…
展开
-
用消息映射处理消息循环
为一个vc程序添加一个事件,那么平台会自动生成时间处理的函数,我们只需要在里面加代码就可以了。比如添加WM_LButtondown大家都知道windows程序是事件驱动,每一个事件都需要一个函数来与之对应,也就是通过消息循环在消息队列中来检测事件,然后通过回调函数来处理这一事件。 那么MFC是如何链接到这一事件的呢?它是通过消息映射来实现的。 在每个能处理消息的类中,原创 2008-02-20 17:37:00 · 1374 阅读 · 0 评论 -
在vc中自定义事件扩展控件功能
当MFC所提供的控件不能满足我们的要求时,我们需要为控件进行功能扩展,根据需求自定义控件的事件。本文以一个扩展按钮的鼠标按下和鼠标松开的事件为例,其它控件事件扩展可遵照该例。提供源代码,在VC6.0中调试成功。 按钮也是一个窗口,继承自CWND,它其中封装了大量的消息,因此我们之需要继承CButton,然后添加我们需要的事件对控件进行扩展即可。在开发过程中,只需要将标准按钮原创 2008-04-06 14:13:00 · 1907 阅读 · 1 评论 -
使用指针实现进程间通信
使用指针进行进程间通信,大致思想就是,在一个应用程序中获得某个变量的地址,然后在另一个应用程序中通过内存读写来改变这个地址中的值,或者提取这个地址中的值。这就是整个过程,很简单。两个应用程序沟通的桥梁就是某个变量的地址(指针)。 找到进程句柄: 首先在一个应用程序中,找到进程窗口的句柄(FindWindow()), 然后获得进程ID(GetWindowThreadProcessI原创 2008-04-27 21:38:00 · 545 阅读 · 0 评论 -
Sleep(0)及其使用场景
Sleep(n)的作用是让当前线程睡眠n毫秒,以便执行其他线程,如果没有其他线程,那睡眠n毫秒后,继续执行。 而如果n=0,Sleep(0)是指CPU交出当前线程的执行权,让CPU去执行其他线程。也就是放弃当前线程的时间片,转而执行其他线程。 那么,Sleep(0)应该在那种情况下使用? 一般来说,如果当前线程比较耗时比较占CPU资源,可以在结尾处加上Sleep(0),原创 2008-09-20 11:46:00 · 4759 阅读 · 3 评论 -
递归删除文件夹
windows API有一个RemoveDirectory(path)函数,但是必须是该文件夹为空,才能删除。在这个ActiveX中,因为只有3个需要另外存放的DLL,因此我是采用一下代码新建文件夹的: TCHAR csStr[256]; CString sysDirPath; Get原创 2008-09-16 16:28:00 · 922 阅读 · 0 评论 -
继承CWinThread创建UI线程
我们经常在UI线程里面创建一些worker线程来执行一些复杂而冗长的计算任务,也可以创建一个UI线程,比如在点击一个按钮后弹出一个对话框,也可以用一个线程来执行。 只需要继承CWinThread就行了,并重载2个函数:virtual BOOL InitInstance(); virtual int ExitInstance();/代码如下:class CU原创 2008-10-09 15:04:00 · 2041 阅读 · 0 评论 -
一个重绘的ip控件
关键APIFillSolidRect() CPaintDC dc(this); CDC *dc = GetWindowDC(); 未完 待续原创 2009-07-27 15:46:00 · 459 阅读 · 0 评论