2009-06-24 5 views
1

J'écris une PropertyPage pour Outlook en utilisant VB6. Ceci est implémenté en tant que VB6 OCX. Lors de l'exécution d'une version plus récente d'Outlook (comme 2007) sur XP (ou plus récent), ma boîte de dialogue semble bizarre car elle n'a pas l'aspect et l'impression d'XP. Y a-t-il un moyen de faire cela?XP Look-and-feel pour la page de propriétés Outlook VB6?

De préférence sans ajouter de fichier manifeste pour Outlook.exe.

Répondre

1

Je pense que vous avez raison de ne pas utiliser un manifeste. Malheureusement, le standard bien connu hacks pour soutenir les thèmes XP de VB6 s'appuyer sur des manifestes. Cet article MSDN sur developer solutions for Outlook 2007 avertit que la fourniture de votre propre manifeste pour Outlook 2007 peut provoquer son blocage.

0

Je ne pense pas que vous pouvez le faire en VB6 ... ces contrôles vont ressembler à quoi ils ressemblent. Vous pouvez cependant créer vos pages de propriétés avec Visual Studio .NET et Visual Basic .NET et obtenir l'aspect et la convivialité de XP, 2007 et Vista. C'est un peu un changement par rapport à ce que vous faites, mais vous êtes vraiment en retard sur le développement de VB6 de toute façon. Plus de détails sur la façon de le faire sont here et le office developer center.

+0

Bonne idée. Ce client particulier ne veut pas faire face à la difficulté d'installer le runtime .NET sur tous ses points de terminaison, donc la solution .NET est pour moi. –

0

Pas que je sache d'utiliser VB6

Si vous pouvez utiliser .NET à la place - est une façon WPF. J'ai vu plus tôt un exemple sur code-projet. Here's the link

Edit: Et un autre outil pour aider here

0

C'est ce que je fais dans toutes mes applications VB6, seulement jamais testé dans un EXE autonome, donc je ne sais pas si cela fonctionnera comme un 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

Créez un fichier similaire à ceci: http://pastebin.com/f689388b2

vous ajoutez ensuite le fichier manifest à votre fichier de ressources en tant que type RT_MANIFEST (24)

Je ne peux pas me souviens plus si c'est tout ce que vous avez besoin faire comme je toujours utilise le même fichier .res pré-fait maintenant.

Source: http://www.vbaccelerator.com/home/vb/code/libraries/XP_Visual_Styles/Using_XP_Visual_Styles_in_VB/article.asp

+1

article MSDN avertissement que cette approche peut provoquer le blocage d'Outlook 2007: http://msdn.microsoft.com/en-us/library/bb176908.aspx – MarkJ

Questions connexes