none
用c#开发的WINFORM程序,不能获取WINDOWS的WM_TOUCH消息 RRS feed

  • 问题

  • 通过WINDOW7的SDK开发,触摸程序,单个的窗口程序可以接受到WM_TOUCH消息。但是将INT的相关组件(Interactive.Carnac.dll)嵌入到UserControl中后,接受不到WM_TOUCH消息,程序的开发用到了很多INT的东西。请问如何解决。

      private cgSimplePlot viewPlot;                 //浏览器使用的plot

    private TouchHandler _touchHandler;

     private void BasemapView_Load(object sender, EventArgs e)
     {
          viewPlot = baseMapViewController.CreateBaseMapPlot(this);
          if (viewPlot != null)
          { 

                  Control panel = CreatePanel(viewPlot);                   
                  this.Controls.Add(panel);
          }

         _touchHandler = Factory.CreateHandler<TouchHandler>(this);   //调用了 RegisterTouchWindow()方法              
      }

     private Control CreatePanel(cgSimplePlot basemapPlot)
            {
                cgControlFactory factory = cgControlFactory.DefaultFactory;
                Control panel = factory.CreateScrollableControl(basemapPlot).Control;
                panel.Dock = DockStyle.Fill;
                panel.BackColor = Color.White;
                return panel;
            }  

          将CreateScrollableControl()方法产生的Control控件,添加到UserContrl(BasemapView)后,就接受不到WM_TOUCH消息,若不添加可以接受到。整个程序的实现都是在INT中实现。

    2013年4月18日 0:30

答案