VB6 Outlook的XP外观属性页?

VB6 Outlook的XP外观属性页?,vb6,outlook,Vb6,Outlook,我正在使用VB6为Outlook编写一个PropertyPage。这是作为VB6 OCX实现的 在XP(或更高版本)上运行较新版本的Outlook(如2007)时,我的对话框看起来很奇怪,因为它没有XP外观。有办法做到这一点吗 最好不要为Outlook.exe添加清单文件。我认为您无法在VB6中完成此操作。。。这些控件将看起来像它们的样子。但是,您可以使用Visual Studio.NET和Visual Basic.NET创建属性页,并获得XP、2007和Vista的外观。这与您正在做的有点不同

我正在使用VB6为Outlook编写一个PropertyPage。这是作为VB6 OCX实现的

在XP(或更高版本)上运行较新版本的Outlook(如2007)时,我的对话框看起来很奇怪,因为它没有XP外观。有办法做到这一点吗


最好不要为Outlook.exe添加清单文件。

我认为您无法在VB6中完成此操作。。。这些控件将看起来像它们的样子。但是,您可以使用Visual Studio.NET和Visual Basic.NET创建属性页,并获得XP、2007和Vista的外观。这与您正在做的有点不同,但无论如何,您都落后于使用VB6开发的时代。有关如何执行此操作的更多详细信息以及。

我认为您无法在VB6中执行此操作。。。这些控件将看起来像它们的样子。但是,您可以使用Visual Studio.NET和Visual Basic.NET创建属性页,并获得XP、2007和Vista的外观。这与您正在做的有点不同,但无论如何,您都落后于使用VB6开发的时代。有关如何执行此操作的更多详细信息以及。

我不知道如何使用VB6

如果您可以使用.NET,一种方法是WPF。我在前面看到了一个关于代码项目的示例。


编辑:还有另一个辅助工具

我不知道如何使用VB6

如果您可以使用.NET,一种方法是WPF。我在前面看到了一个关于代码项目的示例。


编辑:还有另一个辅助工具

我认为您避免使用清单是正确的。不幸的是,众所周知的支持VB6中XP主题的方法依赖于清单。上的这篇MSDN文章警告说,为Outlook 2007提供自己的清单可能会导致其挂起

我认为你避免使用清单是对的。不幸的是,众所周知的支持VB6中XP主题的方法依赖于清单。上的这篇MSDN文章警告说,为Outlook 2007提供自己的清单可能会导致其挂起

这是我在所有VB6应用程序中所做的,只在独立的EXE中测试过,所以不确定它是否可以作为OCX使用

Private Type tagInitCommonControlsEx
   lngSize As Long
   lngICC As Long
End Type
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" _
   (iccex As tagInitCommonControlsEx) As Boolean
Private Const ICC_USEREX_CLASSES = &H200

Public Function InitCommonControlsVB() As Boolean
   On Error Resume Next
   Dim iccex As tagInitCommonControlsEx
   ' Ensure CC available:
   With iccex
       .lngSize = LenB(iccex)
       .lngICC = ICC_USEREX_CLASSES
   End With
   InitCommonControlsEx iccex
   InitCommonControlsVB = (Err.Number = 0)
   On Error Goto 0
End Function

Public Sub Main()
   InitCommonControlsVB

   '   
   ' Start your application here:
   ' 

End Sub
创建类似以下内容的文件:

然后将清单文件作为类型RT\U清单(24)添加到资源文件中

我不太记得这是否就是你需要做的全部,因为我现在总是使用相同的pre-make.res文件


来源:

这是我在所有VB6应用程序中所做的,仅在独立的EXE中进行过测试,因此不确定它是否能作为OCX工作

Private Type tagInitCommonControlsEx
   lngSize As Long
   lngICC As Long
End Type
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" _
   (iccex As tagInitCommonControlsEx) As Boolean
Private Const ICC_USEREX_CLASSES = &H200

Public Function InitCommonControlsVB() As Boolean
   On Error Resume Next
   Dim iccex As tagInitCommonControlsEx
   ' Ensure CC available:
   With iccex
       .lngSize = LenB(iccex)
       .lngICC = ICC_USEREX_CLASSES
   End With
   InitCommonControlsEx iccex
   InitCommonControlsVB = (Err.Number = 0)
   On Error Goto 0
End Function

Public Sub Main()
   InitCommonControlsVB

   '   
   ' Start your application here:
   ' 

End Sub
创建类似以下内容的文件:

然后将清单文件作为类型RT\U清单(24)添加到资源文件中

我不太记得这是否就是你需要做的全部,因为我现在总是使用相同的pre-make.res文件


来源:

MSDN文章警告此方法可能导致Outlook 2007挂起:MSDN文章警告此方法可能导致Outlook 2007挂起:好主意。这个特定的客户不想处理跨其所有端点安装.NET运行时的麻烦,因此.NET解决方案适合我。好主意。这个特定的客户不想处理跨所有端点安装.NET运行时的麻烦,因此.NET解决方案适合我。