Windows MeとWindows 2000から始めて、getopenFileName()のOpenFileName構造とgetSaveFileName()は3つの新しい要素を追加します。最初に見てみましょう:
openFileNameを入力します
lStructsizeと同じくらい
hwndodererは長い間
長い間ヒンスタンス
文字列としてのlpsstrfilter
文字列としてのlpsstrcustomfilter
nmaxcustfilterの長い
nfilterindexの長さ
文字列としてのlpsstrfile
nmaxfileと同じくらい
文字列としてのlpsstrfiletital
nmaxfiletital os only
文字列としてのlpsstrinitialdir
文字列としてのlpStrtital
フラグが長い
整数としてのnfileoffset
整数としてのnfileextension
文字列としてのlpsstrdext
lcustdataは長く
lpfnhookと同じくらい
文字列としてのlptemplename
'#if(_win32_winnt> = 0x0500)
長い間存在します
長く居住しています
フラッグセックスは長く
'#endif //(_win32_winnt> = 0x0500)
エンドタイプ
PvreservedとDwreservedが保持されていることを確認することは難しくありません。 。このビットラベルを設定して、Windows 2000の左側にあるクイックバー(またはWindows Me)の「ファイルを開く」ダイアログボックスをオフにします。このショートカットバーは、合計5つのショートカットを保存できます。これにより、レジストリを変更することで独自のショートカットを指定できます。変更する方法に関しては、今日のトピックではないので、当面は議論しません。ただし、実際に使用すると、問題が発見されました。この新しい構造を使用する手順は、Windows 98/95/NT4で実行できません。その理由は、lStructsizeを設定すると、新しい3人のメンバーが計算され、構造長が12バイトが増加し、comdlg32.dllの古いバージョンが識別できず、構造の長さが間違っているためです。最終的な結果は、「オープンファイル」と[ファイルの保存]ダイアログボックスを表示できないことです。
この問題を考慮して、次のアイデアを使用して解決しました。GetSversionEx()関数を使用して、Windows MEとWindows 2000を検出します。 ()、次にlstructsizeに値を割り当てます。このようにして、comdlg32.dllのバージョンは3つの新しい要素を無視します。練習後、この方法が実行可能であることを証明します。
もちろん、特定のソフトウェアのインストールにより特定のソフトウェアのインストールにより、新しいバージョンの新しいバージョンの新しいバージョンがcomdlg32.dllの新しいバージョンが存在する可能性があることも考慮して、新機能を使用できます。したがって、最良の方法は、COMDLG32.DLL自体のバージョンを検出し、OpenFileName構造の長さが新しい3つの要素の長さを無視する必要があるかどうかを判断することです。
中国最大のクールステーションデモンストレーションセンター!