2014-04-11 3 views
0

터치 입력을 마우스 입력으로 변환하려고했습니다. 하지만 지금은 이상한 문제가 있습니다. ShowCursor 함수는 무작위로 작동합니다. 여기마우스 커서가 움직일 때 사라집니다.

내 코드

case ETouchMove: 
    if (mInMove) 
    { 
     int X = Point->Move.X; 
     int Y = Point->Move.Y; 
     mCursor.X = ((mCursorBak.X + mSpeed*X) < GetSystemMetrics(SM_CXSCREEN) 
        && (mCursorBak.X + mSpeed*X) >0) 
        ? mCursorBak.X + mSpeed*X : 0; 
     mCursor.Y = ((mCursorBak.Y + mSpeed*Y) < GetSystemMetrics(SM_CXSCREEN) 
        && (mCursorBak.Y + mSpeed*Y) >0) 
        ? mCursorBak.Y + mSpeed*Y : 0; 

     SetCursorPos(mCursor.X, mCursor.Y); 
     SetPhysicalCursorPos(mCursor.X, mCursor.Y); 
     ShowCursor(true); 
    } 
    break; 

그것은 언젠가 작동의 일부이지만, 대부분의 시간은 커서는 이동하는 동안 표시되지 않습니다. 나는 MSDN 페이지에서이 함수가 같은 스레드에 의해 생성 된 윈도우에서만 작동한다고 말했다. 그러나 노력 후 아무런 차이가없는 것 같습니다.

win8에서 새로운 CURSOR_SUPPRESSED를 계속받는 것 같습니다. 어쨌든 언젠가는 여전히 작동하기 때문에 억압받지 않는가? 나는 또한 stackoverflow를 통해 검색했지만 아직 아무 대답을 줄 수있는 사람이 줄 수있는 조언? 사전에 감사드립니다.

마우스 win8.1 비주얼 스튜디오 해결

답변

2

2013없이 태블릿 작업, 다른 사람이 도움이 찾을 수 있습니다.

  1. 정지 설정 POS 기능
  2. 사용 이동

    //SetCursorPos(mCursor.X, mCursor.Y); 
        //SetPhysicalCursorPos(mCursor.X, mCursor.Y); 
        //ShowCursor(true); 
    
        INPUT Command = { 0 }; 
        Command.type = INPUT_MOUSE; 
        Command.mi.time = 0; 
        Command.mi.dx = (mCursor.X * 65536)/GetSystemMetrics(SM_CXSCREEN); 
        Command.mi.dy = (mCursor.Y * 65536)/GetSystemMetrics(SM_CYSCREEN); 
        Command.mi.mouseData = 0; 
        Command.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE; 
        SendInput(1, &Command, sizeof(INPUT)); 
    
SendInput을 를 사용
관련 문제