随笔分类 -  VC++

摘要:MFC框架由于古老,其与模板的结合比ATL/WTL差远了,其中一大原因就是因为宏的大量使用。最近封装MFC窗口类(CWnd)时,实在不想机械性地使用虚函数机制了,就想试试通过模板的手法实现代码的复用性。真的动起手来,其实发现也没那么麻烦。 阅读全文
posted @ 2010-11-14 11:43 孤竹君 阅读(772) 评论(0) 推荐(0)
摘要:在VC中加载Flash动画,一种很方便的方式就是在IDE的类向导生成一个IShockwaveFlash接口的包装类。但小弟十分不喜欢VC的可视化向导,几乎很少用,总是喜欢直接拿代码说话。 下面写段播放Flash的简单代码: 阅读全文
posted @ 2010-10-16 01:18 孤竹君 阅读(4208) 评论(1) 推荐(0)
摘要:一般Windows下的系统文件(夹)只让受限帐户读取而不让写入和修改。如果要开启写操作权限就需要手动修改文件(夹)的用户帐户安全权限(这操作当然要在管理员帐户下执行). 阅读全文
posted @ 2010-05-06 09:04 孤竹君 阅读(1037) 评论(0) 推荐(0)
摘要:每次分配内存系统都会分配一个内存序列标志,通过_CrtIsMemoryBlock函数可以获取这个序列标志值以及分配的文件名和行号位置 阅读全文
posted @ 2010-03-23 15:48 孤竹君 阅读(4723) 评论(0) 推荐(0)
摘要:[代码] 阅读全文
posted @ 2009-12-31 18:44 孤竹君 阅读(1150) 评论(0) 推荐(0)
摘要:内联挂钩API原理在于用JMP指令替换目标函数地址的前几个字节,当程序运行到这里就JMP到自己的函数中.需要注意的是自己的函数和目标函数的调用规范、参数、返回值都要一致以保持堆栈平衡. 阅读全文
posted @ 2009-08-28 16:58 孤竹君 阅读(611) 评论(0) 推荐(0)
摘要:利用全局钩子可以注入DLL到当前的所有进程,若要注入到特定的进程中可用CreateRemoteThread函数. 阅读全文
posted @ 2009-08-19 17:34 孤竹君 阅读(523) 评论(0) 推荐(0)
摘要:我以前用Spy++能轻易捕捉360软件界面,除了一些应用DHTML制作的窗体.昨天我再用Spy++捕捉的时候捕捉不到了,甚至连最外围的对话框都捕捉不到,显然是做了类似拦截API的处理.下面我也模拟一下这种效果,让自己的程序窗口不能被捕捉. 阅读全文
posted @ 2009-08-15 16:44 孤竹君 阅读(3627) 评论(7) 推荐(0)
摘要:小弟之前有篇关于监控文件(夹)的文章,利用的是API函数ReadDirectoryChangesW,当时图方便啊,使用ReadDirectoryChangesW进行同步监控文件(夹),现在突然发现自己居然没有手段让运行阻塞的ReadDirectoryChangesW函数的线程正常地退出,继而导致很多资源无法释放,恼火了.无奈之下只好又写了异步的版本。思考再三,由于监控过程不存在可收缩性的考虑,也就没有使用完成端口模型,使用重叠I/O模型就足够了。 阅读全文
posted @ 2009-08-03 18:59 孤竹君 阅读(1799) 评论(1) 推荐(0)
摘要:MFC类CAsyncMonikerFile可以用来从Internet上下载文件,其原理在于利用了COM对象Moniker. 阅读全文
posted @ 2009-07-30 09:13 孤竹君 阅读(606) 评论(0) 推荐(0)
摘要:利用IOCP模型编写一个服务器模型示例 阅读全文
posted @ 2009-07-15 13:45 孤竹君 阅读(1023) 评论(1) 推荐(0)
摘要:每次分配、重新分配或释放内存时都会调用分配挂钩函数,这个挂钩函数可以通过_CrtSetAllocHook函数来设置. 阅读全文
posted @ 2009-07-03 11:25 孤竹君 阅读(1865) 评论(1) 推荐(0)
摘要:在MFC开发环境中,当运行退出了,Visual Studio会在输出窗口提示是否有内存泄漏。也可以借助MFC类CMemoryState动态地检测并输出内存泄漏信息. 在非MFC框架中,需要借助CRT函数实现这些功能. 阅读全文
posted @ 2009-07-02 19:06 孤竹君 阅读(582) 评论(0) 推荐(0)
摘要://枚举所有桌面BOOL EnumDesktops( HWINSTA hwinsta, DESKTOPENUMPROC lpEnumFunc, LPARAM lParam);//打开获取用户输入的桌面窗口HDESK OpenInputDesktop( DWORD dwFlags, BOOL fInherit, ACCESS_MASK dwDesiredAccess );如:HDESK hOrigi... 阅读全文
posted @ 2009-05-29 20:11 孤竹君 阅读(506) 评论(0) 推荐(0)
摘要:Windows API经常需要回调函数,而在C++开发中面向对象当行其道,若能让C++类的成员函数成为回调函数,简直就是大善! 阅读全文
posted @ 2009-05-25 11:04 孤竹君 阅读(2703) 评论(3) 推荐(0)
摘要:使用MFC开发,当程序退出时,Visual Studio会在输出窗口提供关于内存泄漏信息的提示,但也仅仅是在退出后才给出提示,如果想在运行过程中在输出窗口看到关于当前内存泄漏的信息,就需要借助MFC类CMemoryState. 阅读全文
posted @ 2009-05-19 16:21 孤竹君 阅读(905) 评论(0) 推荐(0)
摘要:__FILE__和__LINE__对于我们调试程序非常有用,__FILE__定义为字符串表示,__LINE__定义为数字表示,编写一函数封装一下,用%s和%d格式化为字符串是相当地简单,但是如果定义一个宏来表示就有点麻烦了.借鉴《Windows核心编程》里的例子,先来一实验:#pragma message(__FILE__"("#__LINE__"):字符串!")可惜编译不过,编译器不接受"#"符... 阅读全文
posted @ 2009-05-18 17:33 孤竹君 阅读(592) 评论(0) 推荐(0)
摘要:用代码模拟键盘鼠标操作,主要用到keybd_event/mouse_event或者SendInput API函数. 阅读全文
posted @ 2009-04-24 16:00 孤竹君 阅读(1589) 评论(0) 推荐(0)
摘要:用SetWindowsHookEx可以截获Windows中的消息,然而对于更高级一点的Windows事件(如:弹出菜单事件、ATL+TAB切换事件等等),可以用SetWinEventHook来截获. 阅读全文
posted @ 2009-04-22 17:48 孤竹君 阅读(3618) 评论(0) 推荐(0)
摘要:字符串的ASCII和UNICODE之间的转换很常用,Win32提供了API函数MultiByteToWideChar和WideCharToMultiByte来提供这种功能。但凡Win32的API,参数调用都不会少,因此使用起来也就觉得有点繁琐。ATL3中提供了字符串转换宏,如T2W、A2T等,不过使用它们需要借助本地变量,因此在使用之前需要声明USES_CONVERSION宏来声明本地变量.而且还有个很大的缺陷:转换宏总是使用栈存储,它们在运行时调用_alloca在本地栈上分配额外的空间,如果在函数中循环地进行转换,很可能因为栈空间用尽而崩溃,因为栈空间在函数退出后才能释放。还有个很严重的问题:若在C++ catch块中使用转换宏,_alloca调用会搅乱栈上的异常跟踪信息而使程序崩溃。 阅读全文
posted @ 2009-04-20 10:29 孤竹君 阅读(1916) 评论(0) 推荐(0)