求:绘制与鼠标的实现原理 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 说的有道理,不然系统也是不好判断的。 .net 捕获键盘事件 c# 请教高手!!!急 c#编好的程序转移到别的电脑数据库的问题 pDataBuf 如何从object类型中提取数据 请问datagridview手动绑定怎么做啊?(windowsapplication) Windows Mobile 5.0 Pocket PC模拟器死活访问不了网关?! 用asp.net作界面,但是控件位置控制不好,各位有什么好建议? .net 汉化问题? 怎样才能看到执行结果 我怎么取不出框架里面的一个表单的名字呢 怎么为一个实例生成一个唯一的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 说的有道理,不然系统也是不好判断的。