Molts articles ens parlen sobre com aconseguir que les velles aplicacions VB6 tinguin un aspecte XP. De fet, tenint l'arxiu
Project1.exe, només cal crear l'arxiu
Project1.exe.manifest amb el següent contingut:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Microsoft.VB6.VBnetStyles"
type="win32"
/>
<description>VBnet Manifest for VB6 IDE</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Cal tenir en compte, però, el següent:
No posar directament controls sobre els Frames. Cal situar un PictureBox en el frame i situar-hi els controls sobre aquest. Sino apareixen de manera errònia.
He notat que el rendiment cau notablement en el cas dels controls ComboBox. Si es fa servir el métode .AddItem, per sobre de 2000 elements mateix control mostra comportaments ben diferents si s'executa amb i sense arxiu .manifest. Això es soluciona afegint items directament amb crides a la API:
Private Const CB_ADDSTRING = &H143
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub AddItemToCombo(cmb As ComboBox, str As String)
Call SendMessage(cmb.hwnd, CB_ADDSTRING, 0&, ByVal str)
End Sub