重载WndProc问题,好想很难
首先把窗体的边框设置为NOne
然后在窗体上放两个控件,一个代表做边框,一个带表右边框
如何在WndProc中判断鼠标停在在那个控件上(边框上)呢
如果不重载WndProc能不能实现呢
问题点数:20、回复次数:7Top
1 楼liujiwe79(专业做控件)回复于 2006-07-03 14:40:37 得分 5
这个没有必要用消息吧?你可以定义一个实例变量,当鼠标悬停在控件上为该变量赋值Top
2 楼cymandhxl(迷失中)回复于 2006-07-03 14:46:20 得分 0
可是如何判断“当鼠标悬停在控件上“?
Top
3 楼cymandhxl(迷失中)回复于 2006-07-07 08:38:02 得分 0
好象我没有说好。这个控件是别人写的,没有一点关于鼠标的事件(onmouse)
所以我才想到这个方法Top
4 楼bestyangfeng()回复于 2006-10-26 13:38:00 得分 5
计算鼠标的坐标是不少落在空间的范围之内Top
5 楼idda(碗掉了,头大个疤)回复于 2006-10-26 15:00:00 得分 5
把你的需求说出来吧, 想完成什么功能, 我觉得你把事情复杂化了, 为什么要放两个控件来做边框? 为的是调整窗体的大小么? 如果是这样,建议不要把窗体设为none, 直接屏蔽掉最大化, 最小华, 关闭按钮即可.Top
6 楼idda(碗掉了,头大个疤)回复于 2006-10-26 15:09:56 得分 5
哦, 如果是想不让窗体移动的话, 可以用消息来完成
private const int WM_NCHITTEST = 0x84;
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;
protected override void WndProc(ref Message m) {
switch(m.Msg) {
case WM_NCHITTEST:
base.WndProc(ref m);
if ((int)m.Result == HTCAPTION)
m.Result = (IntPtr)HTCLIENT;
return;
break;
}
base.WndProc(ref m);
}
Top
7 楼cymandhxl(迷失中)回复于 2006-11-05 18:02:04 得分 0
直接屏蔽掉最大化, 最小华, 关闭按钮即可.
怎样屏蔽呢.在属性里设置吗.Top




