« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
公告 |
本站技术贴除标明为“原创”的之外,其余均为网上转载,文中我会尽量保留原作者姓名,若有侵权请与我联系,我将第一时间做出修改。谢谢!
——既瑜 |
统计 |
blog名称:★既瑜★ 日志总数:183 评论数量:636 留言数量:-25 访问次数:1405916 建立时间:2005年3月12日 |
OICQ:215768265
njucs2001@hotmail.com
erichoo1982@gmail.com |
|
W3CHINA Blog首页 管理页面 写新日志 退出
[【技术文档】]Visual C++ MFC 中常用宏的含义(转贴) |
Visual C++ MFC 中常用宏的含义(转贴)
AND_CATCHAND_CATCH AND_CATCH(exception_class,exception _object_point_name) 说明:
定义一个代码块,它用于获取废除当前TRY块中的附加异常类型。使用CATCH宏以获得一个异常类型,然后使用AND_CATCH宏获得随后的异常处理代码可以访问异常对象(若合适的话)已得到关于异常的特别原因的更多消息。在AND_CATCH块中调用THROW_LAST宏以便把处理过程移到下个外部异常框架。AND_CATCH可标记CATCH或AND_CATCH块的末尾。
注释: AND_CATCH块被定义成为一个C++作用域(由花括号来描述)。若用户在此作用域定义变量,那么记住他们只在此作用域中可以访问。他也用于exception_object_pointer_name变量。 ASSERT ASSERT(booleanExpression) <
|
阅读全文(3008) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]vc中定时器的使用 |
在编程时,会经常使用到定时器。使用定时器的方法比较简单,通常告诉WINDOWS一个时间间隔,然后WINDOWS以此时间间隔周期性触发程序。通常有两种方法来实现:发送WM_TIMER消息和调用应用程序定义的回调函数。
1.1 用WM_TIMER来设置定时器
先请看SetTimer这个API函数的原型
UINT_PTR SetTimer( HWND hWnd, // 窗口句柄 UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器 UINT uElapse, // 时间间隔,单位为毫秒 &nbs
|
阅读全文(7500) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]防输入截取、内容获取的文本框[转] |
防输入截取内容获取的文本框.rar
相信大家对于密码获取早有所闻,也对于密码框如何防盗有些了解。密码获取常用的分两种,一种是通过枚举系统里所有密码框,然后向它发WM_GETTEXT消息得到结果;另一种是通过钩子(如键盘钩子、消息钩子)对系统所有键盘输入或窗体的键盘消息作记录。对于密码框防WM_GETTEXT来获密码的做法一般是加入一层认证,而对于防通过钩子来获取输入的方法介绍很少。所以在这里作了一个CFlatEdit类,它基本上让各种截密码工具无效,至少我现在未发现(当然我现在公布了我的做法,针对它作记录,那还是有机会的。呵呵,我就有方法:),尤其98下,WH_JOURNALRECORD日志钩子做的输入获取我就没办法了)钩子有这样一个特性,不管全局钩子还是线程钩子,谁后设,系统将先调用,而你可以不调用下一个钩子。呵呵,就需要这样!我们为编辑框设个线程键盘钩
|
阅读全文(2894) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]对重要代码的防破解[转载] |
重要代码防破解.rar
开发环境:vc6.0+win2000Professional 工具:UEDIT32,w32Dasm(黄金版)
本例将演示对一个MessageBox的保护,采用了“花指令”、“对代码段动态修改”、“动态生成代码”。通过这种手法可阻拦较大一部分破解者(当然这种方法跟复杂的加密、加壳、反跟踪的软件来说,这对破解高手可能只是小菜一碟!)。如果只是小型软件,那么我们花一点小手段阻拦一部分破解者,那何乐而不为呢?
|
阅读全文(2590) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]1000的阶乘的处理[转载] |
代码:BigDate.rar
上次一位兄弟向我提出了1000的阶乘如何求得。其实这里的难点就在于结果如何保存,以及一个数值如何 与很大的数值相乘。
实现原理:
处理的方法可能有很多种,我下面便是一种平时用笔做乘法的做法。大家先看看这个图:
在程序中我定义一个足够大的unsigned int数组,然后数组中的每一个单元存放0-999,99
|
阅读全文(3014) | 回复(-3) | 编辑 | 精华 | 删除 |
[【技术文档】]4种启动其它程序的方法[转载] |
有时我们的程序需要启动其它程序,可能是为了利用它已有的功能,也可能是为了达到某种需要。那么怎样来启动我们需要的程序呢? 我暂时知道有4种方法: 1、调用API: int system( const char *command ); 你可以传入一命令,启动某个程序。如"ping www.vccode.com", "YourExe"等等 不过这里有几点要值得注意: (1)、他不会立即返回,直到你启动的程序执行完成。 (2)、如果你启动是windows程序,它仍然会启动一个控制台,这就给人感觉太差劲了,但如果本身是控制台的,而且又需要等待它的完成,那这将是比较好的选择。 (3)、它的返回值代表是否执行成功以及程序的退出码。
2、调用API: UINT WinExec( LPCSTR
|
阅读全文(1907) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]内存操作越界略述 |
不知大家遇到过没有,有时候程序莫名其妙地出现众多问题,但经常调试来调试去,都不知原因所在,我曾经就被这类问题害得很惨,大部分都是内存操作越界引起的。现在就我知道的总结如下,我将其分为两类:一类是无明显表现的,只会给程序运行带来其妙的错误(1、2、3),一类调试时有明显表现(4、5)。
1、字符串数组定义长度忘记加+1(结束符)
如: char str[10];
::strcpy(str, "0123456789");
此时将会造成越界,因为strcpy将在str为起始地址的第11个单元写入’0’,这样它将覆盖这个单元的值,对于程序来说,有可能带来灾难性的后果。 但,如果你仅仅作字符串操作,一个一个地存入,此时将不会越界,或者你使用strncpy(str, "0123456789", 10),它也不会越界。不过你得小心,此时将不能使用如:strlen,strcpy等等,它的长度和内容变得完全不确定,如果从str地址起的单元都不为‘’,那么将全看作为它的内容,此时
|
阅读全文(8113) | 回复(0) | 编辑 | 精华 | 删除 |
[【技术文档】]对类成员进行特殊操作(3) |
以下在win2000, vc6中编译通过
介于发现在很多地方Thunk技术比较有用,是实现某些要求的最好途径(如:一个类需要设定时钟,在时钟回调函数里又要调用类的众多方法和属性,并且这个类可能出现众多实例)。
在文章1和文章2中其实都作了较详细的解说,但可能解说不当,很难理解,所以在此专做了一个类(CTempBoard),演示这个类以自已的成员函数作回调函数,并且几个实例同时存在。
如果你只是想用这种方法,那你只要保持原码中CTempBoard类的
|
阅读全文(1888) | 回复(0) | 编辑 | 精华 | 删除 |
|