Calling SetGestureConfig method affects onmousemove override of control











up vote
0
down vote

favorite












To handle touch gestures like pinching, I am calling the SetGestureConfig method in WndProc override method available in control.



I would like to use this method only for pinching gesture instead of GC_ALLGESTURES.



Here is the code



            switch (m.Msg)
{
case WM_GESTURENOTIFY:
{
GESTURECONFIG gc = new GESTURECONFIG();
gc.dwID = 0;
gc.dwWant = GC_ALLGESTURES;
gc.dwBlock = 0;

bool result = SetGestureConfig(
handle,
0,
1,
ref gc,
_gestureConfigSize
);

if (!result)
{
throw new Exception("Error in execution of SetGestureConfig");
}
}
break;
//... other codes if any
}


Before using this code, when I touch and move fingers on the control, OnMouseMove override method of the control will be called. But after using this code, it is not the case.



I am handling gesture related functionalities like pinching, panning, etc separately and it is working fine.



Panning should happen only after pinching gesture. If pinching gesture is performed on the control, then panning should be performed on touch move. If pinching gesture is not performed on the control, then I am expecting the default mouse move event to trigger during touch move



But calling the SetGestureConfig method, does not trigger the default mouse move event.



Should I manually call OnMouseMove during pan gesture that occurs without pinching ? Or is there any modification should be made in call to the SetGestureConfig method to avoid blocking the OnMouseMove during pan gesture.










share|improve this question




























    up vote
    0
    down vote

    favorite












    To handle touch gestures like pinching, I am calling the SetGestureConfig method in WndProc override method available in control.



    I would like to use this method only for pinching gesture instead of GC_ALLGESTURES.



    Here is the code



                switch (m.Msg)
    {
    case WM_GESTURENOTIFY:
    {
    GESTURECONFIG gc = new GESTURECONFIG();
    gc.dwID = 0;
    gc.dwWant = GC_ALLGESTURES;
    gc.dwBlock = 0;

    bool result = SetGestureConfig(
    handle,
    0,
    1,
    ref gc,
    _gestureConfigSize
    );

    if (!result)
    {
    throw new Exception("Error in execution of SetGestureConfig");
    }
    }
    break;
    //... other codes if any
    }


    Before using this code, when I touch and move fingers on the control, OnMouseMove override method of the control will be called. But after using this code, it is not the case.



    I am handling gesture related functionalities like pinching, panning, etc separately and it is working fine.



    Panning should happen only after pinching gesture. If pinching gesture is performed on the control, then panning should be performed on touch move. If pinching gesture is not performed on the control, then I am expecting the default mouse move event to trigger during touch move



    But calling the SetGestureConfig method, does not trigger the default mouse move event.



    Should I manually call OnMouseMove during pan gesture that occurs without pinching ? Or is there any modification should be made in call to the SetGestureConfig method to avoid blocking the OnMouseMove during pan gesture.










    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      To handle touch gestures like pinching, I am calling the SetGestureConfig method in WndProc override method available in control.



      I would like to use this method only for pinching gesture instead of GC_ALLGESTURES.



      Here is the code



                  switch (m.Msg)
      {
      case WM_GESTURENOTIFY:
      {
      GESTURECONFIG gc = new GESTURECONFIG();
      gc.dwID = 0;
      gc.dwWant = GC_ALLGESTURES;
      gc.dwBlock = 0;

      bool result = SetGestureConfig(
      handle,
      0,
      1,
      ref gc,
      _gestureConfigSize
      );

      if (!result)
      {
      throw new Exception("Error in execution of SetGestureConfig");
      }
      }
      break;
      //... other codes if any
      }


      Before using this code, when I touch and move fingers on the control, OnMouseMove override method of the control will be called. But after using this code, it is not the case.



      I am handling gesture related functionalities like pinching, panning, etc separately and it is working fine.



      Panning should happen only after pinching gesture. If pinching gesture is performed on the control, then panning should be performed on touch move. If pinching gesture is not performed on the control, then I am expecting the default mouse move event to trigger during touch move



      But calling the SetGestureConfig method, does not trigger the default mouse move event.



      Should I manually call OnMouseMove during pan gesture that occurs without pinching ? Or is there any modification should be made in call to the SetGestureConfig method to avoid blocking the OnMouseMove during pan gesture.










      share|improve this question















      To handle touch gestures like pinching, I am calling the SetGestureConfig method in WndProc override method available in control.



      I would like to use this method only for pinching gesture instead of GC_ALLGESTURES.



      Here is the code



                  switch (m.Msg)
      {
      case WM_GESTURENOTIFY:
      {
      GESTURECONFIG gc = new GESTURECONFIG();
      gc.dwID = 0;
      gc.dwWant = GC_ALLGESTURES;
      gc.dwBlock = 0;

      bool result = SetGestureConfig(
      handle,
      0,
      1,
      ref gc,
      _gestureConfigSize
      );

      if (!result)
      {
      throw new Exception("Error in execution of SetGestureConfig");
      }
      }
      break;
      //... other codes if any
      }


      Before using this code, when I touch and move fingers on the control, OnMouseMove override method of the control will be called. But after using this code, it is not the case.



      I am handling gesture related functionalities like pinching, panning, etc separately and it is working fine.



      Panning should happen only after pinching gesture. If pinching gesture is performed on the control, then panning should be performed on touch move. If pinching gesture is not performed on the control, then I am expecting the default mouse move event to trigger during touch move



      But calling the SetGestureConfig method, does not trigger the default mouse move event.



      Should I manually call OnMouseMove during pan gesture that occurs without pinching ? Or is there any modification should be made in call to the SetGestureConfig method to avoid blocking the OnMouseMove during pan gesture.







      c# winforms onmousemove






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 13 at 6:20

























      asked Nov 13 at 5:14









      Kira

      855831




      855831
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote



          accepted










          It looks like we can control the gesture we want to listen. Referred remarks section of https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setgestureconfig



          In the above code, I just need to make the following change to listen only to the pinching gesture and panning(only after pinching is performed). Changes are explained through comments



                      switch (m.Msg)
          {
          case WM_GESTURENOTIFY:
          {
          GESTURECONFIG gc = new GESTURECONFIG();

          //Listen to required gestures here
          //If 0, all gestures like pinching, panning, etc will be listened
          //If GID_ZOOM, only pinching gesture will be listened
          gc.dwID = IsPinchingPerformed ? 0 : GID_ZOOM;


          gc.dwWant = GC_ALLGESTURES;
          gc.dwBlock = 0;

          bool result = SetGestureConfig(
          handle,
          0,
          1,
          ref gc,
          _gestureConfigSize
          );

          }
          break;

          //... other codes if any
          }





          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53274234%2fcalling-setgestureconfig-method-affects-onmousemove-override-of-control%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote



            accepted










            It looks like we can control the gesture we want to listen. Referred remarks section of https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setgestureconfig



            In the above code, I just need to make the following change to listen only to the pinching gesture and panning(only after pinching is performed). Changes are explained through comments



                        switch (m.Msg)
            {
            case WM_GESTURENOTIFY:
            {
            GESTURECONFIG gc = new GESTURECONFIG();

            //Listen to required gestures here
            //If 0, all gestures like pinching, panning, etc will be listened
            //If GID_ZOOM, only pinching gesture will be listened
            gc.dwID = IsPinchingPerformed ? 0 : GID_ZOOM;


            gc.dwWant = GC_ALLGESTURES;
            gc.dwBlock = 0;

            bool result = SetGestureConfig(
            handle,
            0,
            1,
            ref gc,
            _gestureConfigSize
            );

            }
            break;

            //... other codes if any
            }





            share|improve this answer

























              up vote
              0
              down vote



              accepted










              It looks like we can control the gesture we want to listen. Referred remarks section of https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setgestureconfig



              In the above code, I just need to make the following change to listen only to the pinching gesture and panning(only after pinching is performed). Changes are explained through comments



                          switch (m.Msg)
              {
              case WM_GESTURENOTIFY:
              {
              GESTURECONFIG gc = new GESTURECONFIG();

              //Listen to required gestures here
              //If 0, all gestures like pinching, panning, etc will be listened
              //If GID_ZOOM, only pinching gesture will be listened
              gc.dwID = IsPinchingPerformed ? 0 : GID_ZOOM;


              gc.dwWant = GC_ALLGESTURES;
              gc.dwBlock = 0;

              bool result = SetGestureConfig(
              handle,
              0,
              1,
              ref gc,
              _gestureConfigSize
              );

              }
              break;

              //... other codes if any
              }





              share|improve this answer























                up vote
                0
                down vote



                accepted







                up vote
                0
                down vote



                accepted






                It looks like we can control the gesture we want to listen. Referred remarks section of https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setgestureconfig



                In the above code, I just need to make the following change to listen only to the pinching gesture and panning(only after pinching is performed). Changes are explained through comments



                            switch (m.Msg)
                {
                case WM_GESTURENOTIFY:
                {
                GESTURECONFIG gc = new GESTURECONFIG();

                //Listen to required gestures here
                //If 0, all gestures like pinching, panning, etc will be listened
                //If GID_ZOOM, only pinching gesture will be listened
                gc.dwID = IsPinchingPerformed ? 0 : GID_ZOOM;


                gc.dwWant = GC_ALLGESTURES;
                gc.dwBlock = 0;

                bool result = SetGestureConfig(
                handle,
                0,
                1,
                ref gc,
                _gestureConfigSize
                );

                }
                break;

                //... other codes if any
                }





                share|improve this answer












                It looks like we can control the gesture we want to listen. Referred remarks section of https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setgestureconfig



                In the above code, I just need to make the following change to listen only to the pinching gesture and panning(only after pinching is performed). Changes are explained through comments



                            switch (m.Msg)
                {
                case WM_GESTURENOTIFY:
                {
                GESTURECONFIG gc = new GESTURECONFIG();

                //Listen to required gestures here
                //If 0, all gestures like pinching, panning, etc will be listened
                //If GID_ZOOM, only pinching gesture will be listened
                gc.dwID = IsPinchingPerformed ? 0 : GID_ZOOM;


                gc.dwWant = GC_ALLGESTURES;
                gc.dwBlock = 0;

                bool result = SetGestureConfig(
                handle,
                0,
                1,
                ref gc,
                _gestureConfigSize
                );

                }
                break;

                //... other codes if any
                }






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 13 at 6:19









                Kira

                855831




                855831






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53274234%2fcalling-setgestureconfig-method-affects-onmousemove-override-of-control%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                    ComboBox Display Member on multiple fields

                    Is it possible to collect Nectar points via Trainline?