Win32 API memo

DragAcceptFiles

 DragAcceptFiles APIは親ウインドウに対して実行しないとファイルをドラッグしたときにカーソルの形は変わるが、ファイルを受け取って何かをすることはできない。
考えてみれば、ウインドウプローシジャは親ウインドウに起きたイベントに対するものなので親ウインドウに設定しないといけないというのはまあ納得である。

GetPrivateProfileString

 Unicode版のアプリケーションで非Unicodeのiniファイルを読み込んだ場合、地域コントロールパネルの「管理」タブの「Unicode対応でないプログラムの現在の言語」に従ってiniファイルのマルチバイトの文字列をUnicodeに変換している。

 よって、iniファイルを多言語表示に使う場合はUnicodeのiniファイルを使うか、ユーザーに言語コントロールパネルの「言語の設定の変更」で設定する表示する言語と「Unicode対応でないプログラムの現在の言語」を合わせてもらうことになる。

WNetAddConnection2

 アクセス先にアクセスできない場合にWindows XPとVista以降でAPIから戻る時間が異なる。
 Windows XPではそれほど時間を置かずにAPIから戻るのに対し、Vista以降では数秒経ってからAPIから戻る。
(2014/03/09)

FindFirstFile

 Windows Meでファイル名8文字+拡張子3文字の形式にファイル名が収まる場合は第一引数lpFileNameで指定するファイル名をすべて大文字にしないと正常に検索されないことがあるようだ。

パス名が259文字を超えるファイル・フォルダ

 Unicode版のAPIを使ってパス名の頭に"\\?\"を付けることで作ることはできるが使い物にはならなそうだ。
 詳しくはあなたの知らない259文字越えの世界で。

SetParent

 一旦GetDesktopWindowで得られるデスクトップを親にしたWindowsをSetParentで他のウインドウの子ウインドウにするプログラムを組むとWindows 7のXP Modeのアプリケーションモード(アプリケーションのウインドウだけが表示されるほう)で奇妙な現象が起こる。
 Windows 7のXP Modeのアプリケーションモードでプログラムを起動すると、Windows 7のタスクバーに他のウインドウの子ウインドウにしたウインドウが残り、プログラムを終了しても他のウインドウの子ウインドウにしたウインドウがタスクバーに残り続けるという現象が発生する。
 よって、子ウインドウを作るときは、最初から親ウインドウを指定する必要がある。

御意見、御感想、御希望等ありましたら何でもE-Mailでどうぞ

Tatsuの開発室に戻る


[Tatsu's room on the Web] This page is presented by Tatsu