JoypadとPopupMenuの干渉? - どことなく技術屋な日々でポップアップメニューとジョイパッドが干渉していたのは、ジョイパッドを読み出す関数 joyGetPosEx() の引数に事前に値をセットしていなかったからだった。
初期化していない dwSize にたまたま大きな値が入っていて、それを渡された joyGetPosEx() がジョイパッドの情報の外側のメモリ領域にアクセスしていたと思われる。そのときにポップアップメニューのメモリ領域に干渉したのだろう。
JOYINFOEX newStatus; newStatus.dwSize = sizeof(JOYINFOEX); //これが抜けてた newStatus.dwFlags = JOY_RETURNALL; //これも抜けてた if (JOYERR_NOERROR == ::joyGetPosEx(JOYSTICKID1, &newStatus)) { //JoyPad入力の処理... }
よく見れば joyGetPosEx の解説サイトにはちゃんと事前にセットする必要があることも書かれている。なのになんでか数日間気がつかなかった。疲れてる?