Mulai dari Windows Me dan Windows 2000, struktur OpenFileName dari getOpenFileName () dan getSavefileName () Tambahkan tiga elemen baru. Mari kita lihat dulu:
Ketik OpenFileName
LStructSize selama
hwndowner selama
Hinstance selama
LPSTRFILTER sebagai string
LPSTRCUSTOMFILTER sebagai string
nmaxcustfilter selama
nfilterindex selama
LPSTRFILE sebagai string
nmaxfile selama
LPSTRFILETITAL SEBAGAI STRING
nmaxfiletital selama
LPSTRINITIALDIR sebagai string
LPRTTital sebagai string
Bendera selama
nfileOffset sebagai integer
nfileExtension sebagai integer
LPSTRDEXT sebagai string
Lcustdata selama
lpfnhook selama
Ltemplename sebagai string
'#if (_win32_winnt> = 0x0500)
pvreserved selama
Dwreserved selama
FLAGSEX PANJANG
'#endif // (_win32_winnt> = 0x0500)
Tipe akhir
Tidak sulit untuk melihat bahwa elemen -elemen baru PVReServed dan Dwreserved dipertahankan. . Atur label bit ini untuk mematikan bilah cepat di sisi kiri kotak dialog Windows 2000 (atau Windows Me) "buka file". Bilah jalan pintas ini dapat menyimpan total lima pintasan, yang dapat menentukan jalan pintas Anda sendiri dengan memodifikasi registri. Adapun cara memodifikasi, ini bukan topik kita hari ini, jadi kita tidak akan membahasnya untuk saat ini. Namun, dalam penggunaan aktual, saya menemukan masalah: prosedur menggunakan struktur baru ini tidak dapat berjalan pada Windows 98/95/NT4. Alasannya mungkin bahwa ketika menyiapkan lStructSize, tiga anggota baru dihitung, menghasilkan peningkatan 12 byte dalam panjang struktur, dan versi lama comdlg32.dll tidak dapat diidentifikasi, dan panjang struktur keliru. Hasil akhirnya adalah kotak dialog "Open File" dan "Simpan File" tidak dapat ditampilkan.
Mengingat masalah ini, kami telah menggunakan ide -ide berikut untuk dipecahkan: Gunakan fungsi getVersionex () untuk mendeteksi versi Windows. (), dan kemudian berikan nilai ke lStructSize. Dengan cara ini, versi comdlg32.dll akan mengabaikan tiga elemen baru. Setelah latihan, itu membuktikan bahwa metode ini layak.
Tentu saja, kami juga menganggap bahwa mungkin ada versi baru dari versi baru COMDLG32.dll karena instalasi perangkat lunak tertentu karena instalasi perangkat lunak tertentu, sehingga fitur baru dapat digunakan. Jadi cara terbaik adalah dengan mendeteksi versi comdlg32.dll itu sendiri, dan kemudian tentukan apakah panjang struktur nama terbuka harus mengabaikan panjang tiga elemen baru.
Pusat demonstrasi stasiun keren terbesar di Cina!