向  AdamBear (学习再学习)  兄学习!!!

解决方案 »

  1.   

    老兄,不管ACPTVB是否回答,可否把你自己的研究结果先贴出来?
    大家一起进步么。
      

  2.   


    关注。
    (我试着解释第4个问题可以吗?)
    CopyMemroy实际是RtlMoveMemory的别名,而RtlMoveMemroy是MS的未公开API。
    (据说这样,错了请指正)
      

  3.   

    rushing(勇敢的心):被黑心版主把帖子转到非技术区后就这样了.
      

  4.   

    不如AdamBear (学习再学习)贴出自己的解释给大家看看 :-)
      

  5.   

    太棒了!!!!!
    to: AdamBear (学习再学习)  
    什么时间可以看到
    <<真是想不到>>继续关注
      

  6.   

    去OFFICE应用看看,他也是哪里的斑竹
      

  7.   

    我是96,的情况是这样的:发了个问题在技术区,想看看能否转到高手区(使用说明里讲可以的),但试了一下不行,
    我松开鼠标,帖子突然转到了Delphi区里面去(可能SelectItem刚好在istBox的Delphi上),
    我把它转回了VB区,想再看一看确认一下,就又Click了那个转帖的ListBox,并习惯性地转了一下鼠标滚轮,
    结果帖子立刻到了非技术区,并且把分扣光了,还扣了3分信誉分!
    搞得我现在都不敢去试转帖然后我就发了个帖子,询问斑竹情况,第二天就被转到了非技术区,又扣掉3分信誉分,并且对我的问题置之不理!
    http://www.csdn.net/expert/topic/524/524992.xml
    后来我又给他留了言,问他怎么回事(既然转帖扣分,说明已经看过贴了,为什么不回复我),可还是没人理我!这方面C++的斑竹作风就好多了,在高手区放了通告,反复提醒大家注意,而且改版前的帖子都不转的。
      

  8.   

    我的第一篇文章《VB到底为我们做了什么》已经发给了CSDN文档,已经
    两天了,还在审核中,不知是不是他们认为我的结论有问题。
        文章有8000字,所以不好在这里贴。
        只有继续等,想先看看的人,留下你们的Mail,给你们发。
        第二篇《API和COM,文档里不清楚的问题》正在写,东西在我脑子里,
    不过,我想用实例和实验来说明问题,所以还要准备一些代码。
        因为写东西,所以比较忙,只能断断续续来看看CSDN的贴子了。
        下面这个贴子刚更新过,内存共享和进程通讯的新版本,前天刚加上的。
    我曾说这是这方面最快的方法,但在那个VC的DLL代码中有个位置我说错了,
    我在VC中用了ASNI和Unicode的转换,我说要避免这种转换只有什么Variant或
    Byte Array, 实际上就用BSTR也可以不转换,我是在写API调用的问题时突然
    意识到这个问题的,不过技术本身上应该还是最快的。
    你们可以看看下面的贴子中我的更新部分:
       http://www.csdn.net/Expert/Topicview.asp?id=516072    我也知道acptvb不好回答我这些问题,不过我们应该强烈要求他回答。我可以先告诉大家,由第1个问题而来的惊人猜想,我会在第一篇和第二篇文章
    里用实验来证明我的猜想,这个猜想就是凡是能够被重新定义的VBA函数在效率
    上就还有提高的必要。甚至就在VB中自己写也能写出比VBA函数更快的函数(如
    果你不怕可能产生的问题的话),当然VB已经对绝大部分计算相关的函数进行了
    优化,但仍有不少漏掉了,比如Rnd。Bruce是我佩服的一位大师,不是因为他的技术有多么历害,而是因为他的研究和
    创新精神,现在我把他的《VB核心编程》中关于CopyMemory的部分拿出给大家看看,
    让我们不能不佩服Bruce:
    同时也to Chice_wxg(我怕谁?我是谁!我是流氓我最贼。):【CopyMemory:一个奇怪而可怕的传奇】
        关于这个用于复制内存内容的WIN32函数为什么叫CopyMemory,有一个很长的奇怪故事,尽管Visual Basic和Windows API中没有这种函数。
        最开始是我想要查找WIN16 hmemcpy函数的WIN32等价函数,以用于VisualBasic 4.0版中。没有这个函数,哪怕是一个说明这个函数已经废弃的注释也没有。
        最后我可提出的一个最接近的函数,CopyMemory函数,它与hmemcpy有着相同的参数,并且其文档也相同。不幸的是,不管你在WIN32文档中读过什么,其中没有像CopyMemory这样的东西。你可以使用DumpBin实用程序来搜索所有32位DLL,但是你将不会找到有任何DLL包含有CopyMemory。
        如果你仔细地搜索WIN32的C包含文件,你将会在WINBASE.H中发现如下内容:
    #define CopyMemory RtlCopyMemory
    #define MoveMemory RtlMoveMemory
    #define ZeroMemory RtlZeroMemory
        它指示CopyMemory是名为RtlCopyMemory的函数的另一个名称。不要问为什么;只需要在KERNEL32.DLL中查找RtlCopyMemory。同样,没有。WIN32包含文件中的其他跟踪显示了其原因:在WINNT.H中包含有类似于如下的内容:
    #define RtlCopyMemory(dst, src, len) memcpy(dst, src, len)
        也就是说,RtlCopyMemory是C语言memcpy函数的一个别名,但是你不能在Basic中使用memcpy或其他任何C语言库函数。文档中声称CopyMemory是一个Windows函数而不是一个C语言函数,显然它是在说谎。如果它不是从一个DLL中输出,则你不能调用它。KERNEL32.DLL确实包含有一个用于RtlCopyMemory的项。如果你查看WIN32文档,你将看到MoveMemory与CopyMemory做相同的事情,除了它们处理重叠内存的方式不同之外。我不能想像这样一种情况,一个Basic程序将会去复制重叠的内存。没有理由不使用MoveMemory来代替它。名称CopyMemory看起来比hmemcpy或MoveMemory更智能一些,因此我对于16位和32位版本都使用这个别名:
    #If Win32 Then
      Declare Sub CopyMemory Lib "KERNEL32" Alias "tlMoveMemory"(_lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
    #else
      Declare Sub CopyMemroy Lib "KERNEL" Alias "memcpy" ( _lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
    #End If
        Windows API类型库具有一个CopyMemory函数的等价(或者几乎是等价)。上面解释了我为什么使用CopyMemory,但是为什么其他每一个人都使用CopyMemory呢?因为我把一份拷贝发送到了Microsoft的一个内部别名,并且某个读到它的人决定它应该成为一篇很好的Knowledge Base文章。我同意了,但条件是他们在提到这一段时说明这是摘录我的书。我认为这是一个好广告。自那以后,我读到了一些文章,在VBITS会议上听到一些人谈论CopyMemory,仿佛它真正存在一样。但是他们没有提到本书才是它的源来。因此不要被错误的广告所蒙蔽。如果他们谈论RtlMoveMemory,则他们是自己想出来的。如果他们谈论CopyMemory,则他们是从我这里得到的(或许他们自己还不知道)。
        
        嘿嘿,怎么样,Bruce Mckinney酷!
      

  9.   

    怎么样,佩服吧!Bruce还说他曾把一个Win32 API类型库给了微软,
    这个类型库非常好用,你几乎不用再用API Viewer了来找声明了,我们
    可以象在VC里一样直接用API了,这样做的好处和坏处,我会在我的文章
    中用实验来分析,算是对几位大师的一点补充和更正。我想向acptvb问问
    是不是有这回事,为什么不在VB里提供它,却又偷偷把它放在了Win98 Resoure Kit
    里?我不为什么,只是想帮Bruce大师说几句话。
        我佩服Bruce的另一个原因是他很有共享精神,他把他的代码公布了,
    虽然他诅咒所有没买他的书的人用它的东西。我很想买他的书,不过MSDN
    已经有,而且我不知哪儿买。
        我也会把我的研究和代码公布,我也诅咒那些用我的东西却没有留下
    我名字的人。我诅咒!我在《电脑报》2000年第44期发表的《如何防范危险
    邮件》一文,被一个叫杨书琴的人偷了,而且一稿多投,分别在《黑客防线》
    2002年第一期和《电脑爱好者》2002年第2期上发表成《需要防范的几个危险
    文件》,文章中连我的错误一起偷了去,让我很是气愤,大家帮我一起骂骂他。
    我给这两家杂志,反应问题却没有回复。又写篇《防微杜渐》用来更正原《防》
    文的错误并提出新的方法,可是也没有回复,这种态度让我再也不想给这些杂志
    写文章,这篇文章我准备在CSDN文档里公布,以后写文章就到CSDN来写,虽然
    我还没有满意的工作(只要能让我写程序研究技术并且不饿死,我就很满意),
    虽然现在我一个月不到1k, 但我绝不是要靠那点稿费生活,我写文章说高尚点
    是为了中国计算机技术的发展,说低点是为了满足自己的虚荣心。
        真的,我非常喜欢有人吹捧,呵呵,来吹我吧,我给分。
      

  10.   

    对了,我可不敢给向acptvb (微软全球技术中心 VB技术支持)发短消息,
    怕他扁我,大家可以帮帮我的忙,把他请出来说几句话。
      

  11.   

    高!up!
    想读一下《VB到底为我们做了什么》
    [email protected]
    thanks.
      

  12.   

    想读一下《VB到底为我们做了什么》
    [email protected]
      

  13.   

    学习你的文章。
    [email protected]
      

  14.   

    在发表意见之前,最想看,《VB到底为我们做了什么》
    [email protected](学习再学习) :
    说实在的,用API的人都知道那样的类型库,有多重要。
    对于《黑客防线》和《电脑爱好者》这样不负责的杂志,最好大家在各个网站上
    发表建议;还要提高自己的水平,最好搞一个我们自己的,来为我们自己说话。
    关于微软的一些,我认为微软的目标是:VB只是一种针对普通代码开发者的工具,
    其实再深下去,还不如直接用VC,BCB,方便,所以真正写代码的人,谁会说自己对C一点都不懂,对VC中的各种机制都不懂,在写代码的时候,很多在VB里没有办法做的,我都是仿对VC中的机制来解决的,比如:消息映射。微软的东西,整体是不错,有些地方很精彩;总之,我们要多学了。且不管微软的是什么态度吧,反正,以后我会为LINEX及WINDOWS,开发软件,很想有一个(唉,以后要学的东西很多)对于acptvb (微软全球技术中心 VB技术支持),我给他发消息好了,是需要解释一下,如果连解释都要扁,就扁吧,大不了封我账号。
      

  15.   

    to hx(乱云山风):
       说得好,我也用VC,不过我觉得还是VB亲切。
       我不会再给杂志投搞,又慢。
       对于这些问题,无论有没有回答,我都会在今天晚上给大家一个答案。
       我的文章CSDN要是再不发,我就把它一点点贴出来!!!
      

  16.   

    支持。
    给我一份
    [email protected]
      

  17.   

    《VB到底为我们做了什么》[email protected]
      

  18.   


    《VB到底为我们做了什么》[email protected]
      

  19.   

    《VB到底为我们做了什么》[email protected] :-)
      

  20.   


    《VB到底为我们做了什么 》
    [email protected]
      

  21.   

    《VB到底为我们做了什么》
    [email protected]
    ^-^
    这里有好多大师,我要虚心学习
    ^-^
      

  22.   

    TO hx(乱云山风) 
    完全同意,学习VC更有利于学习VB
    TO : AdamBear(学习再学习)CSDN里让我佩服的人很少,不过您就是一位,呵呵
    (让我佩服的人:starfish, wwwunix,也有那么许多吧,其他人名单暂时不公布了 ^_^)平时虽然少见发言,但也很有深度。
    我也对现在的杂志很反感,所以很少买杂志了,不过为了需要,我还是定了《电脑编程技巧与维护》(虽然也有许多抄袭的东西,但感觉比其他杂志好)。原来我在电脑爱好者上也投过稿,顺便得到一份杂志(因为我没定,也不想买),而就是这份杂志,上面就有两篇网上已经抄烂了的文章。气的我把书扔了,懒的再看。
    哎!中国现在版权问题太严重了。
    还有,Bruce大师是不是写了 win32.tlb,引用后可以直接使用API?