Попробуйте ввести вспомогательную функцию следующим образом:
template <typename T>
T zeroIfLess(T val, T base)
{
return val < base ? T(0) : val;
}
Затем напишите ваше состояние как:
if (WORD wNotifyCode = zeroIfLess(HIWORD(wparam), 2))
Это вернет ноль - или, если вы предпочитаете, false - если первое предоставленное значение меньше второго; в противном случае он возвращает значение. Принимая во внимание, что трудно определить имя функции, а также то, должна ли она работать с включающим или исключительным минимумом, то, что она работает здесь, не умаляет ее как странного хака.
Как и другие рекомендовали, я тоже предпочитаю ваше первое предложение после «И это можно сделать» - отдельное заявление о декларации и инициализации, за которым следует условное утверждение. Я думаю, что это просто естественный способ сделать это в C ++.