2003-01-12 119205 [長年日記]

OFN_ALLOWMULTISELECT

OPENFILENAME構造体でOFN_ALLOWMULTISELECTを指定したときのパスの戻され方って変ですね。複数ファイルが指定されている場合には"<dir>\0<file>\0<file>\0\0"のようになりますけど、一つだけファイルが選択された場合には"<path>\0\0"です。しかも、一つだけファイルが選択された場合に最後に二つの\0がつくのは明記されていない気がします。複数選択された場合については明記されているんですけどね。

さらに、ユーザがいくつのファイルを選択するか判断できない関数呼び出し側にバッファを確保させる仕様もおかしいですね。Windows 3.1の頃からOFN_ALLOWMULTISELECTってあった気がするのですが、実はそれ以前は複数選択は不可だったのでその仕様でも問題なかったのが、複数選択を可能にしたらおかしくなってしまったのでしょうか。