<请教大虾> 关于Windows消息值拦截...

shinaterry 2007-05-29 01:00:11
请问系统绘制Winforms窗体按钮的消息值是什么???

绘制非客户区的消息是 -> WM_NCPAINT: 0x0085

那么绘制窗体的最小/大化/还原、关闭、帮助按钮的系统消息分别又是什么呢???

它们是保存在Message对象的那个参数上???是LParam/RParam还是Msg呢???

希望知道的过客们分别把它们列出来...

以这种方式: [Message的参数名]->[英文名]->[值]

谢谢...
...全文
668 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
shinaterry 2007-06-09
  • 打赏
  • 举报
回复
这几总是已经持续了好几天...

可是还是没能解决...

最后两天了.希望大家支持...明天结贴...
SFDStudio 2007-06-07
  • 打赏
  • 举报
回复
路过...
shinaterry 2007-05-30
  • 打赏
  • 举报
回复
我只是想知道系统须要绘制[窗体按钮]时发送的消息值是什么....

真的没有人知道吗???
shinaterry 2007-05-30
  • 打赏
  • 举报
回复
TO: shrinerain ...

之前听您提前后,就一直在用...

可是它监控到的消息有很多,过滤后也不知道那些是自己想要的...

郁闷!

你能监控到吗?
shrinerain 2007-05-30
  • 打赏
  • 举报
回复
寒...你没听说过spy++?

安装Visual Studio就有的东西...
shinaterry 2007-05-30
  • 打赏
  • 举报
回复
我知道Winuser.h里有消息值的定义...

可以那么多,我不知道那些是我想要的...
MaybeHelios 2007-05-30
  • 打赏
  • 举报
回复
Winuser.h
shinaterry 2007-05-29
  • 打赏
  • 举报
回复
找过了,可是找不到自己想要的...

(WinDef.h) <- 这个文件在哪里呢???
winxieddd 2007-05-29
  • 打赏
  • 举报
回复
网上找呀,《windows消息大全》
shrinerain 2007-05-29
  • 打赏
  • 举报
回复
这些你用spy++看以下就知道了,不用记.

如果想找列表的话WinDef.h

shinaterry 2007-05-29
  • 打赏
  • 举报
回复
UP
SFDStudio 2007-05-29
  • 打赏
  • 举报
回复
关注一下...
shinaterry 2007-05-29
  • 打赏
  • 举报
回复
运行代码:
switch (m.Msg)
{
case WM_NCPAINT:
Console.WriteLine(m);
break;
default:
base.WndProc(ref m);
break;
}


得到结果:

msg=0x85 (WM_NCPAINT) hwnd=0x80880 wparam=0x1 lparam=0x0 result=0x0
msg=0x85 (WM_NCPAINT) hwnd=0x80880 wparam=0x20041846 lparam=0x0 result=0x0
msg=0x85 (WM_NCPAINT) hwnd=0x80880 wparam=0x45041901 lparam=0x0 result=0x0


结论:

标题栏与系统按钮还是会出来...
我想绘制系统按钮不是由消息WM_NCPAINT驱动的...


晕....
shinaterry 2007-05-29
  • 打赏
  • 举报
回复
用了下面代码:

switch(m){
case WM_NCPAINT:
Console.WriteLine(m);
break;
}

base.WndProc(m);

打印了很多信息...

不知道那些是自己想要的...

大家还有没有更好的方案呢???
shinaterry 2007-05-29
  • 打赏
  • 举报
回复
TO: hbxtlhx ...

谢谢! 刚才我用了一下SPY++, 监控消息有很多,不容易找啊...

不知道为什么它的消息过滤选项总是禁用的...

我用Console.WriteLine(m);试试看...

----------------------------------------------------------------

TO: wzuomin ...

我不是想重绘标题栏...

而是现在的任务中有其它特别的要求,所以要这样做...

至于重绘标题栏,我之前已经做出来了,不过还有一点点不足...
wzuomin 2007-05-29
  • 打赏
  • 举报
回复
又一个想重绘窗体标题栏的吧?
这个我也想知道。up一下啊,呵呵
北京的雾霾天 2007-05-29
  • 打赏
  • 举报
回复
如果你想得到一个窗口中的Window的消息都有哪些被处理了,或是在某个操作下会发生什么样的消息,你可以在代码中添加如下的代码:
protected override void WndProc(ref Message m)
{
Console.WriteLine(m);//这里会输出消息Message的详细信息.
base.WndProc(ref m);
}

使用Spy可以,但是这个难以控件.
北京的雾霾天 2007-05-29
  • 打赏
  • 举报
回复
还有,按MSDN所说,lParam参数既然不用,那什么还要保留呢?不明白...

-------------------------
在Windows的系统中所有的事件都是由系统的消息来驱动的,归纳了所有的消息的特点后就总结出了一个Message的最简洁最合适的结构:
IntPtr hWnd
int msg
IntPtr wparam
IntPtr lparam

这个结构中的成员可能会在某些消息中用不到,但是这是包含消息内容最全的了.
shinaterry 2007-05-29
  • 打赏
  • 举报
回复
TO: wodegege10 ...

请问用SPY++如何才能实现我想要的呢???

这个我没有用过,希望您能提点...
shinaterry 2007-05-29
  • 打赏
  • 举报
回复
TO: LeoMaya ...

非常感谢您把知道的都列出来! 不过这些值好像是按下系统按钮的时候发送的...

例如: 把下最小化时通过SendMessage把WM_MINIMIZE发出去...

再由DefWndProc来侦听.然后完成其相应的工作...



而我要的是在系统绘制窗体按钮时的消息值...

^o^
加载更多回复(5)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧