0

偶数処理に最小化と復元のケースを追加しましたが、ヒットしないことがわかりました。

プログラムの起動時にのみ、Size_Minimizedがヒットします。その後、最小化ケースは発生しません。
Size_Restoreケースも発生しません

プログラムの起動時にのみ、Size_Minimize で停止するデバッグ:
画像

私の他のケースは機能するので、最小化と復元がコードやブレークポイントをトリガーしない理由がわかりません。Size_MinimizedSize_Restore
は、必要なものとは関係がない と結論付けています。

最小化/復元を処理するために知っておく必要があることは何ですか?

私が間違っていた場合のコード:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
    PAINTSTRUCT ps;
    HDC hdc;



    switch(message){
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;

    case SIZE_MINIMIZED:
        break;

    case SIZE_RESTORED:
        break;

    case WM_SIZING:
    case WM_SIZE:
        if(engine.isReady()) engine.resizeDevice();
        if(engine.isReady()) engine.draw();
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }

    return 0;
}
4

1 に答える 1

1

SIZE_MINIMIZEDメッセージをSIZE_RESTORED介して渡される定数です。WM_SIZEウィンドウメッセージではありません。SIZE_MINIMIZEDウィンドウがおよび/またはと同じIDのウィンドウメッセージを受信するたびに、ブレークポイントがヒットしますSIZE_RESTORED

コードを次のようにする必要があります。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
    PAINTSTRUCT ps;
    HDC hdc;
    switch(message){
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;


    case WM_SIZE:
        switch(wParam) {
        case SIZE_MINIMIZED:
          // Do whatever
          break;
        case SIZE_RESTORED:
          // Do whatever
          break;
        }
    case WM_SIZING:
        if(engine.isReady()) engine.resizeDevice();
        if(engine.isReady()) engine.draw();
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        break;

    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }

    return 0;
}
于 2012-11-27T06:23:33.797 に答える