DragAcceptFiles APIは親ウインドウに対して実行しないとファイルをドラッグしたときにカーソルの形は変わるが、ファイルを受け取って何かをすることはできない。
考えてみれば、ウインドウプローシジャは親ウインドウに起きたイベントに対するものなので親ウインドウに設定しないといけないというのはまあ納得である。
Unicode版のアプリケーションで非Unicodeのiniファイルを読み込んだ場合、地域コントロールパネルの「管理」タブの「Unicode対応でないプログラムの現在の言語」に従ってiniファイルのマルチバイトの文字列をUnicodeに変換している。
よって、iniファイルを多言語表示に使う場合はUnicodeのiniファイルを使うか、ユーザーに言語コントロールパネルの「言語の設定の変更」で設定する表示する言語と「Unicode対応でないプログラムの現在の言語」を合わせてもらうことになる。
アクセス先にアクセスできない場合にWindows XPとVista以降でAPIから戻る時間が異なる。
Windows XPではそれほど時間を置かずにAPIから戻るのに対し、Vista以降では数秒経ってからAPIから戻る。
(2014/03/09)
Windows Meでファイル名8文字+拡張子3文字の形式にファイル名が収まる場合は第一引数lpFileNameで指定するファイル名をすべて大文字にしないと正常に検索されないことがあるようだ。
Unicode版のAPIを使ってパス名の頭に"\\?\"を付けることで作ることはできるが使い物にはならなそうだ。
詳しくはあなたの知らない259文字越えの世界で。
一旦GetDesktopWindowで得られるデスクトップを親にしたWindowsをSetParentで他のウインドウの子ウインドウにするプログラムを組むとWindows 7のXP Modeのアプリケーションモード(アプリケーションのウインドウだけが表示されるほう)で奇妙な現象が起こる。
Windows 7のXP Modeのアプリケーションモードでプログラムを起動すると、Windows 7のタスクバーに他のウインドウの子ウインドウにしたウインドウが残り、プログラムを終了しても他のウインドウの子ウインドウにしたウインドウがタスクバーに残り続けるという現象が発生する。
よって、子ウインドウを作るときは、最初から親ウインドウを指定する必要がある。