Windows 2000で Photo Gallery が動かない理由はMicrosoft の手抜きが原因?
Windows 2000で Windows Live Photo Gallery がどうしてもうごかなかったのですが、
その原因を調べてみました。
63CD06B6 L63CD06B6: 63CD06B6 8975FC mov [ebp-04h],esi 63CD06B9 FF7534 push [ebp+34h] 63CD06BC FF7530 push [ebp+30h] 63CD06BF FF752C push [ebp+2Ch] 63CD06C2 FF7528 push [ebp+28h] 63CD06C5 FF7524 push [ebp+24h] 63CD06C8 FF7520 push [ebp+20h] 63CD06CB FF751C push [ebp+1Ch] 63CD06CE FF7518 push [ebp+18h] 63CD06D1 FF7514 push [ebp+14h] 63CD06D4 FF7510 push [ebp+10h] 63CD06D7 FF750C push [ebp+0Ch] 63CD06DA FF7508 push [ebp+08h] 63CD06DD FF158C16C963 call [USER32.dll!CreateWindowExW] 63CD06E3 8945E4 mov [ebp-1Ch],eax 63CD06E6 C745FCFEFFFFFF mov dword ptr [ebp-04h],FFFFFFFEh 63CD06ED E80D000000 call SUB_L63CD06FF 63CD06F2 8B45E4 mov eax,[ebp-1Ch] 63CD06F5 L63CD06F5: 63CD06F5 E897721400 call SUB_L63E17991 63CD06FA C23000 retn 0030h |
原因は CreateWindowExW で失敗してるからなんですが
Window ハンドルはNULLで返ってこないものの GetLastError の値は 0!
CreateWindowEx() returns NULL, GetLastError() returns 0???
If your callback fails, it's your responsibility to set the error code - The Old New Thing - Site Home - MSDN Blogs
要するに Windows の作成には成功しているけど、ちゃんと Window プロシージャーコールをクラス内で定義していなかったため、 Windows 2000ではエラーになってしまっているけど、 Windows XP では中途半端に動いてしまっているという状態・・・。
Comments