as long as there are different variables types with different sizes why windows maps 2 values in one variable using macros and shift operator eg:

this is a sample of win32 windows procedure:

```
//...
case WM_COMMAND:
{
    switch(LOWORD(wParam))
    {
        case IDC_LISTBOX:
        {
            switch(HIWORD(wParam))
            {
                //handle message
            }
        }
        break;
    }
}
break;

```

simply why windows doesn't use two variable of type short instead?
or does this has some privileges?

thank you guys