我采用的是vbAccelerator中的SubClass进行消息捕获,如果在IDE环境中就正常,一旦直接引用我的控件就会在退出时导致VB崩溃!有没有高手指点一下,加我的QQ:30925708非常感谢!~

解决方案 »

  1.   

    进行反汇编,停在这个位置:
    002D5483  mov         dword ptr [ebp-0Ch],eax 
    002D5486  or          eax,eax 
    002D5488  je          002D54C3 
    002D548A  mov         eax,0D000000h 
    002D548F  mov         ecx,dword ptr [ebp+0Ch] 
    002D5492  mov         dword ptr [eax],ecx 
    002D5494  push        4    
    002D5499  push        0    
    002D549E  add         byte ptr [eax],al 
    002D54A0  cli              
    002D54A1  pushfd           
    002D54A2  mov         esp,0B5C26Eh 
    002D54A7  db          08h  
    002D54A8  lds         eax,fword ptr [ecx]              <停在这个位置>
    002D54AA  enter       80h,0 
    002D54AE  add         byte ptr [eax],al 
    002D54B0  add         al,0 
    002D54B2  leave            
    002D54B3  add         byte ptr [ebx+4E00B600h],cl 
    002D54B9  add         byte ptr [eax],al 
    002D54BB  add         byte ptr [eax],al 
    002D54BD  add         byte ptr [edx],bh 
    002D54C0  ins         byte ptr es:[edi],dx 
    002D54C1  add         byte ptr [edx],dl 
    002D54C4  imul        eax,dword ptr [eax],680063h 
    002D54CA  inc         ebp  
    002D54CB  add         byte ptr [eax+eax+69h],ah 
    002D54CF  add         byte ptr [eax+eax+6Fh],dh 
    002D54D3  add         byte ptr [edx],dh 
    002D54D6  add         byte ptr [eax],al 
    002D54D8  db          ffh  
    002D54D9  jg          002D54DB 
    002D54DB  add         byte ptr [eax],al 
    002D54DD  add         byte ptr [eax],al
      

  2.   

    大家有没有比较稳定的子类化方法呢?我感觉VBAccelerator中的SubTmr.dll已经非常完善了,不过还是有问题(但是它的例子却没有问题)。叶帆的无崩溃子类技术的示例,结果一点就崩溃,不知道怎么搞得!~
      

  3.   

    "在退出时导致VB崩溃"
    你是不是退出的时候没有卸掉subclass?还有就是你是怎么样退出的?
      

  4.   

    我估计是引用的TLB文件版本原因,我换了种方式,现在可以了
      

  5.   

    //我估计是引用的TLB文件版本原因,我换了种方式,现在可以了恩,这种问题我以前也遇到过
      

  6.   

    to rainstormmaster(暴风雨 v2.0):
     请问老大,还有没有比较稳定和简洁的子类化方法呢?
      

  7.   

    地址为ECX的变量的类型长度小于6个字节   产生访问错误