关键字:Qt
保证源码一套。搞了DLL给偶们用。

解决方案 »

  1.   

    不太明白,Qt一点也不了解,好像Qt自己不是开源的吧,我能从Qt中得到我上面的问题吗?估计能得到难度也太大。有鼠标,但是你怎么知道鼠标在移动、鼠标左键铵下、鼠标左键松开呢?不使用Windows的WM_MOUSE类的消息那只能自己去和硬件打交道了啊?
      

  2.   

    小朋友,WINDOWS之前也没有消息,WINDOWS怎么就出来了呢?
    好好学习数据结构
    好好学习基础
    一切都是人造的
      

  3.   

    大概的原理就是:
    操作系统定时的读取串口状态
    (包括键盘和鼠标等输入设备)
    这些输入设备有任何反应,操作系统都会得到相对应的数据
    把这些数据保存到定义好的数据结构
    消息采集就完成了(这其实就是驱动程序的功能)WINDOWS的窗口的是人定义的
    简单的就是大量的矩形区域操作系统把得到的鼠标信息的x,y坐标和窗口链表里的区域一对比
    落那个窗口就清楚了,把对应的消息送给该窗口就结束了
    消息发送完成
      

  4.   


    那如我提问所说的,该作者的界面库说没有使用任何消息,难道他是直接和硬件打交道的吗?我觉得不太可能啊,要考虑不同硬件的兼容性,圆口鼠标、USB鼠标,等等,应该要考虑很多情况,不在可能吧?我主要是想知道该界面库在不使用Windows消息的情况下如何得到鼠标刚好在某个控件上的?如何得到鼠标移动事件的?
      

  5.   

    哎,不学基础,怎么跟你说你都不懂
    消息是什么?
    不都跟你说的很清楚了吗?
    消息就是接受硬件信息的一个数据结构他不用消息,是只的不用WINDOWS的消息格式
    不等于他不用自己定义格式的消息
    他要连自定义的消息都不用,还能用硬件吗?
    你以为作者是谁啊.神仙啊,佛主啊控件是什么呀?
    不都告诉你就是个矩形区域吗?
    一个点(x,y)是不是在某个区域不有现成的数学计算公式的吗?
    真的不要以为混个高中就可以混程序员
    技师工程师的待遇水平虽然一样,但档次是绝对不一样的
      

  6.   


    请看重点:如何获取这个点(x,y) x=? y=? 怎么获取?从哪儿获取?其它的我全会,只有这个不会?
    再请看我的问题:如何得到鼠标移动事件的?
      

  7.   

    我想再描述一遍我的问题,同时想表达出我所想问的问题,请仔细看:其实我想Windows系统应该是这样做的:Windows自己和硬件打交道,自己管理我们创建的各种窗口,当发现鼠标移动动我们所创建的某个窗口上时,就给那个窗口发送鼠标消息WM_MOUSEMOVE,WM_MOUSELEAVE等等各种消息,这样我们就可以根据这些消息来做相应的处理。然后我要自己做界面库,可是我又不能使用这些消息,那么鼠标移动了我的窗口上,我怎么知道呢?在定时器里GetCursorPos ? 应该不合理。即使这样做,我的窗口是不是前台窗口?这个要判断,而Windows自己处理的时候他也会判断,我不是前台窗口,即使鼠标刚好在我的窗口上,他也根本就不把消息发给我等等等等各种问题需要处理,而最难的仍然是:我要实时获取鼠标、键盘、或许还有其它的硬件事件,难道我自己去和鼠标、键盘打交道?我始终觉得应该不用这样做,有没有更好的设计方法,能解决这个问题,我上面所说的那个作者的界面库可能是怎么做到的呢?如果的确需要我自己去和各种硬件打交道,那么首先说鼠标事件,第一:如何“实时”,注意重点在“实时”;第二:如何获取,GetCursorPos ?总感觉不合理。假如上面的第一和第二的确解决了,那么解决的难度有多大,同时鼠标事件我处理完了,还有键盘或者其它硬件,这要全部自己处理完,自己和硬件通信完,要付出多大的工作量呢?如果特别大,那么我就会选择放弃,我估计一般的人(如上面我提到的那个界面库的作者)可能也会放弃。所以我想问:有没有做过这一块内容的人,是否了解有比较好的处理办法或者设计思路,能大致知道我所提到的界面库的作者是如何实现他的界面库的功能的?希望我所说的能描述清楚我的意图。
      

  8.   

    WM_MOUSEMOVE可以是A_MOUSEMOVE/B_MOUSEMOVE/MM_MOUSEMOVE随你喜欢随你定义,反正不是win的你都可以说我没用win消息,如果你想知道硬件信息怎么转化到这个消息,去学驱动吧
      

  9.   

    GetCursorPos
    GetAsyncKeyState
    也并不是完全实现不了,有很多游戏是基于这两个函数处理的。DirectInput也有两种模式,立即模式就和上面两个函数处理的方式差不多,缓冲模式原理就是类似Windows消息了。触摸逻辑,窗口区分我就不说了,Windows有完善的接口可以判断,控件的大概实现就是 要保留最后一次GetCursorPos的位置,本次获取之后要先与最后一次位置对比,如果相同则什么都不做,不同的话,那进入第2层逻辑,判断控件的区域,原理也是上一层逻辑,保留最后触摸的控件,判断当前鼠标还在不在那个控件的区域上。如果还在,那就什么都不做,如果不在了,就把最后触摸的控件取消掉,然后查表,查询当前鼠标区域内有多少个控件,最后再来看谁的层次搞,那就显示谁的触摸。
      

  10.   

    然后再来说这个查表,应该是个二叉堆结构,简单的做法就是以  X+Y的值来排序。然后获取鼠标指向的X,Y时,同样以X+Y的方式去遍历,这样效率就高了。