Comenzando desde Windows yo y Windows 2000, la estructura OpenFileName de getopenfileName () y getSaveFileName () agregan tres elementos nuevos. Echemos un vistazo primero:
Escriba OpenFileName
lestructSize tanto tiempo
hwndowner tan largo
Hinstance tan largo
lpStrfilter como cadena
LPSTRCUSTOMFILTER como cadena
nmaxcustfilter tan largo
nfilterIndex tan largo
lpStrfile como cadena
nmaxfile tan largo
lpStrfiletital como cadena
nmaxfiletital tan largo
lpStrinitialdir como cadena
lpStrtital como cadena
Banderas tanto tiempo
nfileOffset como entero
nfileExtension como entero
LPSTRDEXT como cadena
Lcustdata tan largo
lpfnhook tan largo
Lptemplename como cadena
'#if (_win32_winnt> = 0x0500)
PvReservado tanto tiempo
DWRESERVADO TAN LARGO
Flagsex tanto tiempo
'#endif // (_win32_winnt> = 0x0500)
Tipo final
No es difícil ver que los nuevos elementos PVREServed y Dwreserved sean retenidos. . Configure esta etiqueta de bit para apagar la barra rápida en el lado izquierdo del cuadro de diálogo Windows 2000 (o Windows Me) "Abra el archivo". Esta barra de acceso directo puede almacenar un total de cinco atajos, lo que puede especificar su propio atajo modificando el registro. En cuanto a cómo modificar, no es nuestro tema hoy, por lo que no lo discutiremos por el momento. Sin embargo, en uso real, descubrí un problema: los procedimientos que usan esta nueva estructura no pueden ejecutarse en Windows 98/95/NT4. La razón puede ser que al establecer lstructsize, se calculan los tres nuevos miembros, lo que resulta en un aumento de 12 bytes en la longitud de la estructura, y la versión anterior del Comdlg32.Dll no se puede identificar, y la longitud de la estructura se equivoca. El resultado final es que el cuadro de diálogo "Abrir archivo" y el cuadro de diálogo "Guardar archivo" no se puede mostrar.
En vista de este problema, hemos usado las siguientes ideas para resolver: use la función getVersionEx () para detectar la versión de Windows. (), y luego asigne un valor a lstructsize. De esta manera, la versión del comdlg32.dll ignorará los tres elementos nuevos. Después de la práctica, prueba que este método es factible.
Por supuesto, también consideramos que puede haber una nueva versión de la nueva versión del Comdlg32.Dll debido a la instalación de cierto software debido a la instalación de cierto software, para que se puedan utilizar las nuevas características. Entonces, la mejor manera es detectar la versión del propio Comdlg32.dll, y luego determinar si la longitud de la estructura OpenFileName debe ignorar la longitud de los nuevos tres elementos.
¡El centro de demostración de la estación fría más grande de China!