求:绘制与鼠标的实现原理 WIN窗体在绘制自己的时候是先画本身,然后画里面包含的子控件(这是我的理解不知道正不正确)。好,问题是:如果窗体里面有一个Panel容器控件,它包含了一个button控件,现在用鼠标点击button控件会触发按钮的事件,我想知道的是系统怎么知道我点击是button呢,为什么不是Pannel呢,能给我讲讲里面的实现原理吗?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 z坐标,button在最前,同样的坐标,依次是button,panel,form,....desktop, 系统显然知道你点击的是包含当前坐标的object,同时肯定是这些object中z坐标在最前面的一个. 这也可以解释我们为什么可以拥有topMost窗口,就是把它的z坐标置较大值。 伟大的WndProc函数的第一个参数就是句柄,但是怎么获取到消息里的各项参数,我就不知道了,我想也没有必要查这么深远WndProc(HWND hWnd,UINT Message,WPARAM wPARAM,LPARAM) 底层 WIN32消息机制里面点击按钮是通过 鼠标位置和鼠标的状态(按哪个键)实现的····如果鼠标位置在按钮内,同时单击键 那么就是点击该按钮 //MSG结构在头文件中定义如下: typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG, *PMSG; 从消息这个结构的定义我们可以知道, 每发生一个动作之后,系统立刻得到发生动作的句柄,发生什么动作,发生的时间,发生消息时鼠标的位置.然后系统立刻将这些信息封装在一条消息中,插入到应用程序的消息队列中.应用程序再一路分发到对应句柄的窗体中(按钮也是一个窗体) 是的,WIN是通过消息机制获得的,就象你说的 每发生一个动作之后,系统立刻得到发生动作的句柄 ,是发生动作后才得到句柄的,但是 系统是怎么知道要发生这个动作呢,就向我的问题样,Panel包含button,button的按钮范围也是Panel的范围,那鼠标点button的时候系统是怎么来判断的。我觉得wjq与lqflyc 说的有道理,不然系统也是不好判断的。 .net3.5、jquery-1.3.2、FlexiGrid问题 c#的一个小问题 没弄清楚 帮忙解决下 当前文件夹中存在许多文件,怎没得出文件中存在aa.exe? 请教一个简单问题! 没分了 看看哪位好心人帮忙了! 在C#中如何用一种统一的方法获得SQLServer和Oracle中表与表之间的关联。 关于用API取指定句柄窗口里控件的内容 combox数据库绑定,增加删除问题 微软送月饼啦!!!快来抢 今天开始学C#,多多指教。 如何让VS.NET2003与VS.NET2002共存?? 怎么为一个实例生成一个唯一的ID 如何限制所有的textbox中用户只能输入数字??
WndProc(HWND hWnd,UINT Message,WPARAM wPARAM,LPARAM)
点击按钮是通过 鼠标位置和鼠标的状态(按哪个键)实现的····如果鼠标位置在按钮内,同时单击键 那么就是点击该按钮
//MSG结构在头文件中定义如下:
typedef struct tagMSG
{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG, *PMSG; 从消息这个结构的定义我们可以知道, 每发生一个动作之后,系统立刻得到发生动作的句柄,发生什么动作,发生的时间,发生消息时鼠标的位置.然后系统立刻将这些信息封装在一条消息中,插入到应用程序的消息队列中.应用程序再一路分发到对应句柄的窗体中(按钮也是一个窗体)
我觉得wjq与lqflyc 说的有道理,不然系统也是不好判断的。