(Пожалуйста, позвольте мне вызывать эти события Mouse Up и Mouse Down. Мой MFC немного ржавый. И есть этот материал под названием .NET, который в последнее время портит мою терминологию; -)
Короткая история : Вы просто не хотите знать о щелчке мыши. Вам нужно больше.
Длинная история :
Хотя это нелогично, похоже, что просто щелкнуть мышью довольно редко. Чаще всего вам нужно выполнить некоторую обработку с помощью Mouse Down и выполнить дополнительную обработку с помощью Mouse Up. Хитрость в том, что простого отслеживания сообщений Mouse Up недостаточно: Mouse Down, возможно, не произошло в вашем окне. Считаете ли вы это действительным кликом тогда? Особенно если учесть, что обработка Mouse Down (например, выбор элемента) не выполнялась.
Продвигаясь дальше рассуждений, вы не должны полагаться на получение Mouse Up после того, как обработали Mouse Down: возможно, пользователь переместил мышь и отпустил кнопку в другом месте (например, drag'n'drop), в этом случае вы не получайте событие MouseUp ... если только вы не захватите мышь на MouseDown, чтобы убедиться, что вы получаете событие мыши вплоть до Mouse Up, даже если мышь покинула ваше окно.
В итоге вы отслеживаете Mouse Down, захватываете мышь и, когда получаете Mouse Up, просто проверяете, владеете ли вы захватом. Если нет, то мышь была либо дважды нажата (без 2-й мыши), либо «Мышь вниз» произошла где-то еще, поэтому вам, скорее всего, не безразлична эта «мышь вверх».
В заключение : сообщения MouseClick нет, просто потому, что вы не слишком далеко зайдете: вам нужно обрабатывать больше сообщений и в любом случае реализовывать больше механики.
Oh! И если вы имеете дело с существующим элементом управления, который уже обрабатывает все эти элементы и элементы выбора, такие как просмотр списка, скорее всего, он предоставит аналогичное настраиваемое уведомление, такое как «Активация элемента» или «Изменение выбора элемента».