はい、

nomina.browser 0.0.038 alpha3
さっきのbugをつぶしました。
こんな、感じ。

  • nomina.browser.bug.20070414.2146.1
    • [所見] サイズ変更などでしばらく処理が戻ってこないbugのようである
    • [検査] nmnWebBrowserControl::WndProcにおけるMessageの追跡など
    • [診断1] WM_SIZE時におけるなんらかの不具合
    • [処置1] コード1のl.11-13をコメントアウトした
    • [結果1] 症状に変化なし
    • [診断2] WM_PAINT時におけるなんらかの不具合
    • [処置2] コード1のl.14-16をコメントアウトした
    • [結果2] 症状が改善した
    • [処置3] コード1をコード2に修正。WM_PAINTでDefWindowProcを呼ぶようにした
    • [結果3] 症状が改善した
    • [確定診断] WM_PAINT時にDefWindowProcを呼ばずに0Lを返していたことによるbug


試験前ということもあり、体裁だけでもそれっぽくw
しかし、まだまだ基本がなってないのですなぁ…
こんなやつがブラウザを創っているとはorz

コード1(修正前)

LRESULT nmnWebBrowserControl::WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
        case WM_CREATE:
            return OnCreate(wparam, lparam);
            break;
        case WM_DESTROY:
            return OnCreate(wparam, lparam);
            break;
        case WM_SIZE:
            return OnSize(wparam, lparam);
            break;
        case WM_PAINT:
            return OnPaint(wparam, lparam); //ここ
            break;
        default:
            return ::DefWindowProc(hwnd, msg, wparam, lparam);
    }
    return 0L;
}

コード2(修正後)

LRESULT nmnWebBrowserControl::WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch(msg)
    {
        case WM_CREATE:
            return OnCreate(wparam, lparam);
            break;
        case WM_DESTROY:
            return OnCreate(wparam, lparam);
            break;
        case WM_SIZE:
            return OnSize(wparam, lparam);
            break;
        case WM_PAINT:
            OnPaint(wparam, lparam);
            return ::DefWindowProc(hwnd, msg, wparam, lparam);  //こうした
            break;
        default:
            return ::DefWindowProc(hwnd, msg, wparam, lparam);
    }
    return 0L;
}