2013-07-02 2 views
1

У меня возникли проблемы с пониманием кода ниже. и я не могу оштрафовать его хорошее объяснение. Я оставил комментарии рядом с сегментами кода, на которые у меня есть вопросы.C++ код моделирования щелчка мыши

void LeftClick () 
     { 
      INPUT input = {0}; 

      // left down 
      input.type  = INPUT_MOUSE; 
      input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; 
      ::SendInput(1,&input,sizeof(INPUT)); 

      // left up 
      ::ZeroMemory(&input,sizeof(INPUT)); // why zeroMemory? removing this code changes nothing that i can tell 
      input.type  = INPUT_MOUSE; // why reset this variable? is it not already set? 

      input.mi.dwFlags = MOUSEEVENTF_LEFTUP; 
      ::SendInput(1,&input,sizeof(INPUT)); 
     } 

я получил этот код на http://forums.codeguru.com/showthread.php?377394-Windows-SDK-User-Interface-How-can-I-emulate-mouse-events-in-an-application

+0

Оба ваших предположения вместе создадут лучший код imo. – chris

ответ

4

ZeroMemory функция удаляет все данные в структуры с именем input - вот почему код должен сбросить переменную input.type.

Документация: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366920(v=vs.85).aspx

я на самом деле решил посмотреть на какой-то старый код, который я написал, и я не использовал ZeroMemory макрос на всех. Это действительно не нужно, поскольку оба значения, которые установлены, снова сбрасываются.

Смежные вопросы