A partir do Windows Me e Windows 2000, a estrutura do OpenFileName de getOpenFileName () e GetSAveFileName () adicionam três novos elementos. Vamos dar uma olhada primeiro:
Digite OpenFileName
lStructSize tanto tempo
HWNDowner tanto tempo
Hinstance por tanto tempo
lpstrfilter como string
lpstrcustomfilter como string
nmaxcustfilter tanto tempo
nfilterIndex tanto tempo
lpstrfile como string
NmaxFile por tanto tempo
lpstrfiletital como string
nmaxfiletital por tempo
lpstrinitialDir como string
lpstrtital como string
Bandeiras tanto tempo
NFILEOFFSET COMO INTEIRO
NFILEEXTENSÃO COMO INTEIRO
Lpstrdext como string
Lcustdata tanto tempo
LPFNHOOK tanto tempo
Lptemplename como string
'#if (_win32_winnt> = 0x0500)
pvreserved tanto tempo
DRERAVERADO TOR NO TEMPO
Flagsex tanto tempo
'#endif // (_win32_winnt> = 0x0500)
Tipo final
Não é difícil ver que os novos elementos pvReserved e Dwreserved são mantidos. . Configure este rótulo de bits para desligar a barra rápida no lado esquerdo do Windows 2000 (ou Windows Me) "Abra o arquivo" Caixa de diálogo. Esta barra de atalho pode armazenar um total de cinco atalhos, que podem especificar seu próprio atalho modificando o registro. Quanto a como modificar, não é o nosso tópico hoje, por isso não discutiremos isso por enquanto. No entanto, no uso real, descobri um problema: os procedimentos usando essa nova estrutura não podem ser executados no Windows 98/95/NT4. O motivo pode ser que, ao definir o LStructSize, os novos três membros são calculados, resultando em um aumento de 12 bytes no comprimento da estrutura, e a versão antiga do COMDLG32.dll não pode ser identificada e o comprimento da estrutura é equivocado. O resultado final é que o "arquivo aberto" e a caixa de diálogo "Salvar arquivo" não podem ser exibidos.
Em vista desse problema, usamos as seguintes idéias para resolver: use a função getversion () para detectar a versão do Windows. () e, em seguida, atribua um valor ao lStructSize. Dessa forma, a versão do COMDLG32.DLL ignorará os três novos elementos. Após a prática, prova que esse método é viável.
Obviamente, também consideramos que pode haver uma nova versão da nova versão do COMDLG32.DLL devido à instalação de determinado software devido à instalação de determinado software, para que os novos recursos possam ser usados. Portanto, a melhor maneira é detectar a versão do próprio COMDLG32.DLL e determinar se o comprimento da estrutura do nome do OpenFileName deve ignorar o comprimento dos novos três elementos.
O maior centro de demonstração da estação legal da China!