Я читаю некоторые примеры кодирования от Microsoft. И запутайтесь в этой комбинированной части клавиш.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_SYSKEYDOWN:
if (wParam == VK_RETURN && (lParam & 0x60000000) == 0x20000000)
{
//Do something
}
}
}
Вот чего я не понимаю, этот код предназначен для переключения приложения между полноэкранным и оконным режимами при нажатии Alt + Enter. Я понимаю, что WM_SYSKEYDOWN удерживает Alt, а VK_RETURN нажимает Enter. Итак, когда они собираются вместе, это означает нажатие Enter, удерживая Alt, но как работают эти два параметра? Почему Enter находится в wParam и что означает часть lParam справа? Что представляет собой значение lParam? Пожалуйста, помогите.
У меня есть еще один вопрос, который я хотел бы спросить.
Почему он использует 0x60000000? Это 31 бит, начинающийся с 2 "1", за которыми следуют 29 "0". Из документа, предоставленного tkausl, 31-й бит WM_SYSKEYDOWN всегда равен 0, поэтому с оператором «&» не должно быть никакого способа, чтобы выходные данные имели «1» в этом бите, так почему бы просто не использовать 0x20000000, который должен дать точно такой же результат?