找到一段代码,
#If (WIN32_IE >= &H400) Then
    Case SHCNE_EXTENDED_EVENT: sEvent = "SHCNE_EXTENDED_EVENT" 
#End If     ' WIN32_IE >= &H0400但整个程序中却找不到WIN32_IE的定义和声明,程序运行也未见报错

解决方案 »

  1.   

    #If...Then...#Else 指令
          条件编译已选择的 Visual Basic 代码块。语法#If expression Thenstatements[#ElseIf expression-n Then[elseifstatements]][#Else[elsestatements]]#End If#If...Then...#Else 指令的语法具有以下几个部分:部分 描述 
    expression 必要。包含一个或多个条件编译常数、文字与运算符的任何表达式,其值为 True 或 False。 
    statements 必要。Visual Basic 程序行或编译指令,如果关联的表达式为 True,则运行它们。 
    expression-n 可选。由一或多个条件编译常数、文字和运算符组成的任何一个表达式,其值为 True 或 False。 
    elseifstatements 可选。一个或多个程序行或编译命令,如果 expression-n 为 True,则运行它们。 
    elsestatements 可选。一个或多个程序行或编译命令,如果以前的expression 或 expression-n 中没有一个为 True,则运行它们。 
    说明#If...Then...#Else 指令的作用与 If...Then...Else 语句相同,其差异在于 #If、#Else、#ElseIf,及 #End If 指令没有单独成行的形式,也就是说,在指令所在的那一行,不能有其他代码出现。条件编译通常用来编译不同平台上的同一个程序。也可以用来避免调试程序代码出现在可执行程序中。条件编译时被排除的程序代码在最后的可执行文件中被完全略去,所以不会对程序的大小或功能有任何影响。无论结果如何,都要计算所有表达式。所以,在表达式中用到的所有常数都必须加以定义— 任何未定义的常数都会被当作 Empty 来计算取值。注意   Option Compare 语句不会影响 #If 及 #ElseIf 语句中的表达式。条件编译指令中的表达式总是用 Option Compare Text 计算值。
      

  2.   

    要有条件地编译代码的某一部分,应将该部分代码封闭在 #If...Then 和 #EndIf 语句之间,使用一个布尔常数作为分支检测。要编译被封闭的代码,可将该布尔常数设置为 -1 (True)。例如,要从同一份源代码创建同一个应用程序的法语版本和德语版本,可使用预定义常数 conFrenchVersion 和 conGermanVersion 将与平台有关的代码部分嵌入 #If...Then 语句之间。#If conFrenchVersion Then
       '<适用于法语版本的代码>。
    #ElseIf conGermanVersion then   
       '<适用于德语版本的代码>。
    #Else
       '<适用于其它版本的代码>。
    #End If如果在编译时常数 conFrenchVersion 的数值被设置为 True,则适用于法语的代码将被编译。如果常数 conGermanVersion 的数值被设置为 True,则编译器使用适用于德语版本的代码。声明条件编译常数
    设置条件编译常数有三种方法:在“工程属性”对话框的“制作”选项卡的“条件编译参数”字段设置条件编译常数、在命令行或在代码中设置条件编译常数。条件编译常数有特别的作用范围,不能从标准代码中访问。如何设置条件编译常数可能取决于希望常数具有怎样的作用范围。如何设置 范围 
    “工程属性”对话框 Public 作用于工程中的所有模块 
    命令行 Public 作用于工程中的所有模块 
    代码中的 #Const 语句 Private 仅作用于声明该常数的模块 
    在“工程属性”对话框中设置常数
    在创建可执行文件前,从“工程”菜单选择“工程属性”,单击“工程属性”对话框中的“生成”选项卡,在“条件编译参数”字段中键入一个参数,例如 conFrenchVersion = –1(如果希望将应用程序编译成法语版本的话)。当程序被编译时,该参数将满足 #If...Then 的条件,处于 #If...Then 和 #EndIf 之间的代码将包含进编译后的程序中。如果是包含一个或多个 #ElseIf 语句的复杂 #If...Then 语句,则需要设置另外的常数。可参照以下示例通过冒号间隔来设置多个常数:conFrenchVersion=-1:conANSI=0在命令行设置常数
    如果要从命令行启动编译,可以使用 /d 开关键入条件编译常数,如下所示:vb.exe /make MyProj.vbp /d conFrenchVersion=–1:conANSI=0在 /d 开关与第一个常数之间不需要空格。命令行的常数声明将覆盖在“工程属性”对话框中键入的常数声明,但并不清除它们;在“工程属性”对话框中设置的参数对后续的编译保持有效。详细信息 请参阅“#If…Then_#Else 伪指令”和“#Const 语句”。