Declarar variáveis no topo da função ou em escopos separados?

Qual é o preferido, método 1 ou método 2?

Método 1:
LRESULT CALLBACK wpMainWindow(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch (msg)
    {
        case WM_PAINT:
        {
            HDC hdc;
            PAINTSTRUCT ps;

            RECT rc;
            GetClientRect(hwnd, &rc);           

            hdc = BeginPaint(hwnd, &ps);
            // drawing here
            EndPaint(hwnd, &ps);
            break;
        }
        default: 
            return DefWindowProc(hwnd, msg, wparam, lparam);
    }
    return 0;
}
Método 2:
LRESULT CALLBACK wpMainWindow(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rc;

    switch (msg)
    {
        case WM_PAINT:
            GetClientRect(hwnd, &rc);

            hdc = BeginPaint(hwnd, &ps);
            // drawing here
            EndPaint(hwnd, &ps);
            break;

        default: 
            return DefWindowProc(hwnd, msg, wparam, lparam);
    }
    return 0;
}

No método 1, se msg = WM_PAINT quando a função wpMainWindow é chamada, ele aloca memória para todas as variáveis na pilha no início? ou somente quando ele entra no escopo WM_PAINT?

O método 1 usaria apenas a memória quando a mensagem é WM_PAINT, e o método 2 usaria a memória, independentemente da quantidade de mensagens igualada?

questionAnswers(9)

yourAnswerToTheQuestion