做了一个ocx控件,其中有一个方法FTest()的返回值为BOOL,本来BOOL就是一个int类型,可是我在网页上面这样写:
alert(obj.FTest());
弹出来的对话框上面的内容不是true就是false,而且也根本不能和其他的整数进行比较,
if(obj.FTest() != 0)
if(obj.FTest() == 0)
这样的比较语句全部都不成立,为什么会这样??BOOL和int为什么不一样?微软在玩我????

解决方案 »

  1.   

    BOOL型在VC中是:TRUE =非零 FALSE = 零
    在VB中:TRUE = -1,FALSE = 0
      

  2.   

    所以为了通用应该使用返回值为int型的
      

  3.   

    我知道用int是没问题的,我是想问他们是怎么做到这样的,我是在钻牛角尖,
      

  4.   

    #ifndef FALSE
    #define FALSE               0
    #endif#ifndef TRUE
    #define TRUE                1
    #endif
    FALSE是0,TRUE是1而不是非0
      

  5.   

    alert(1);会在对话框上面显示出true,太神奇了,百思不得其解
      

  6.   

    TRUE 是 1 ,FALSE 是 0
    这个是alert函数做的,它不是vc的,alert(),对0,1进行处理了也很正常
      

  7.   

    alert(1);对话框上面显示的是1,alert(0);对话框上面显示的是0而且就算alert函数进行了处理,为什么在if语句里面比较也不能按照整形比较呢?
      

  8.   

    我觉得可能跟IDL语言有关系得吧  会不会是在IDL中 你定义的BOOL 就是bool 而不是VC中的BOOL呢而你的接口使用的是BOOL