哪为大仙有空了指导一下小弟吧,要因为vb疯掉了 
我QQ26164060 MSN [email protected] 

解决方案 »

  1.   

    Declare Function CT_reset Lib "crwicc.dll" (ByVal fd As Long) As Long Dim a As Long 
    a = CT_reset(hPort) 
    MsgBox (a <> &H9000) 单步调试的时候 a的值是36864 为什么跟&H9000做不等比较就是true呢 
      

  2.   


    我倒是有耐心学,可公司不给时间呀,大仙,我是做java开发的,现在公司要我用vb做activeX控件,公司催的要命呀
      

  3.   

    CT_reset在C++的控件里面返回的是什么类型?
      

  4.   

    &H9000表示16进制数,转换成十进制等于36864 所以表达式&H9000 = 36864的值为真
      

  5.   

    你&H9000是多少?根本就和a的值不等
      

  6.   


    vb &H9000 不是表示十六进制的数吗
      

  7.   

    哦,我看飘了。那你这样试试:MsgBox (clng(a) <> &H9000) 
      

  8.   

    哦 呵呵。对了,应该这样:MsgBox (clng(a) <> &H9000&) 
      

  9.   

    因为在VB6里,&H9000被理解成integer类型,双字节的,相当于-28672。你如果希望它表示36864,就要写成&H9000&最后这个&告诉VB,这个数字是long类型,4字节的。
      

  10.   

    我以前问过类似的问题,还是tiger_zhao告诉我的:16进制值本身是无符号的,但是 VB 的 Integer/Long 都是有符号的。在编译常量时,如果没有指定类型,总是用最小的类型来存放。&HFFFF 两字节,就用 Integer 类型存放,所以成了 -1。要定义 65535 就必须用 &HFFFF&,有了后缀 & 就会强制用 Long 存放。http://blog.csdn.net/slowgrace/archive/2009/04/28/4132758.aspx