Sudah lama ada diskusi di Internet tentang penerapan gaya XP melalui pemrograman, namun belum ada solusi yang tepat untuk mengimplementasikan gaya XP melalui pemrograman VB. Penulis akhirnya mengungkap rahasianya melalui N hari malam belajar keras. Berikut ini dibagi menjadi tiga aspek untuk dibagikan kepada Anda.
Klik untuk mengunduh file kode sumber
satu. Menggunakan file manifes untuk mencapai gaya XP
Dalam keadaan normal, dalam sistem Windows XP, hanya bilah judul jendela aplikasi yang dikembangkan dengan VB6 yang memiliki gaya XP, dan tombol, kotak teks, dan kontrol lain pada formulir masih menampilkan gaya Windows tradisional. Seperti yang ditunjukkan pada Gambar 1:
Dengan membaca bab Gaya Visual di MSDN, kita mengetahui bahwa Windows XP menggunakan Comctl32.dll (versi 6) untuk memuat komponen dengan gaya XP, dan aplikasi memberi tahu sistem untuk melakukan ini melalui file sumber daya XML. Isi file XMLnya adalah sebagai berikut:
<?xml versi=1.0 pengkodean=UTF-8 mandiri=ya?>
<perakitan xmlns=urn:schemas-microsoft-com:asm.v1 manifestVersion=1.0>
<assemblyIdentity
nama=manifes gaya XP
arsitektur prosesor=x86
versi=1.0.0.0
ketik=win32/>
<ketergantungan>
<Perakitan Bergantung>
<assemblyIdentity
ketik=win32
nama=Microsoft.Windows.Kontrol Umum
versi=6.0.0.0
arsitektur prosesor=x86
publicKeyToken=6595b64144ccf1df
bahasa=*
/>
</dependentAssembly>
</ketergantungan>
</perakitan>
Asumsikan bahwa nama program kompilasi terakhir Anda adalah abc.exe, dan direktori kerjanya adalah d:/vbxp. Salin konten XML di atas dan simpan sebagai file teks. Kemudian ganti nama file abc.exe.manifest (perhatikan bahwa ekstensi .txt harus dihapus). Dalam program VB, kita perlu memanggil fungsi InitCommonControlsEx untuk menginisialisasi kelas komponen dari comctl32.dll (versi 6) sebelum semua formulir dimuat. Fungsi API InitCommonControlsEx dan konstanta serta tipe data terkait dideklarasikan sebagai berikut:
Fungsi Deklarasi Pribadi InitCommonControlsEx Lib comctl32.dll _
(iccex Sebagai tagInitCommonControlsEx) Sebagai Boolean
Tag Tipe PribadiInitCommonControlsEx
lngUkuran Selama
lngICC Selamanya
Tipe Akhir
Konst Pribadi ICC_USEREX_CLASSES = &H200
Di sini kita menulis fungsi untuk merangkum operasi inisialisasi:
Fungsi Publik InitCommonControlsVB() Sebagai Boolean
Pada Kesalahan Lanjutkan Berikutnya
Redupkan iccex Sebagai tagInitCommonControlsEx
Dengan ICCEX
.lngUkuran = LenB(iccex)
.lngICC = ICC_USEREX_CLASSES
Akhiri Dengan
InitCommonControlsEx iccex
InitCommonControlsVB = (Err.Nomor = 0)
Pada Kesalahan Goto 0
Fungsi Akhir
Perhatikan bahwa tindakan inisialisasi harus diselesaikan sebelum semua formulir dimuat, sehingga pernyataan yang relevan harus ditempatkan di Sub Main(), dan proyek harus dimulai dari Sub Main(). Kodenya adalah sebagai berikut:
Sub Utama()
InitCommonControlsVB
Formulir1.Tampilkan
Akhiri Sub
Pada titik ini, abc.exe yang Anda kompilasi akan memiliki gaya XP, seperti yang ditunjukkan pada Gambar 2: