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 では中途半端に動いてしまっているという状態・・・。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です