Я работаю над C ++ CLI-приложением и испытываю трудности с событиями. Мне интересно, могу ли я запускать события, пока нажата кнопка мыши. Например, я хочу проверить, переместилась ли мышь к следующему квадрату, только если она нажата мышью. То есть, если они щелкают по квадрату 1, они должны удерживать этот щелчок и перемещать квадрат 2 и моя программа распознает это.
Я запустил несколько различных событий для мыши, в том числе событие «Щелчок», но ни нажатие кнопки ни мыши, ни ввод мыши, ни нажатие кнопки не запускаются. Событие MouseClick, которое делает то же самое. Я попытался использовать только событие mouseDown, но это не позволяет сработать другому событию mouseDown, вводу мыши или событию hover.
Кроме проверки положения мыши, я не знаю, что я могу сделать. Я бы не хотел проверять положение мыши.
Если у кого-то есть идеи, они будут очень благодарны.
Очевидно, вы захотите обратить внимание на событие MouseMove, чтобы вы могли видеть, как мышь перемещается в другой квадрат. Грубо говоря:
void panel1_MouseMove(Object^ sender, MouseEventArgs^ e) {
if ((e->Button & System::Windows::Forms::MouseButtons::Left) ==
System::Windows::Forms::MouseButtons::Left) {
int square = MapPosToSquare(e->Location);
if (square != currentSquare) {
currentSquare = square;
OnSquareClicked(currentSquare);
}
}
}
Если эти «квадраты» на самом деле являются элементами управления, то у вас другая проблема. Вы должны установить для свойства элемента управления Capture значение false в обработчике события MouseDown, чтобы он не захватывал мышь.
Других решений пока нет …