VB6 Outlook的XP外观属性页?
我正在使用VB6为Outlook编写一个PropertyPage。这是作为VB6 OCX实现的 在XP(或更高版本)上运行较新版本的Outlook(如2007)时,我的对话框看起来很奇怪,因为它没有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的外观。这与您正在做的有点不同
最好不要为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解决方案适合我。