流云

风驰影跃长 月映霜华裳
随笔 - 23, 文章 - 6, 评论 - 55, 引用 - 0

导航

<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

留言簿(0)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

东观沧海

云散之处

搜索

最新评论

阅读排行榜

评论排行榜

今天试了下,终于会用SPY++一点点了-_-

 我在对话框上加了一个CStatic 与一个按钮,但是我发现不能通过按钮的事件给CStatic发消息呀,这是什么原因呀 <无内容> - [gaoqing000] 2006-6-11 16:45:15 ( 0 字节, 点击:3 )
你发了什么消息,用spy工具探测一下 <无内容> - [anonymous IP:222.125.19...] 2006-6-11 16:46:20 ( 0 字节, 点击:7 )

:( 晕,现在都还没用过SPY++,马上打开来看看,在它的"WINDOWS"菜单弹出窗口里选择我的程序Test_Dialog的窗口:

-001201A4"Test_Dialog"#32770(Dialog)
  ...
  000B018E"TODO:在这里设置对话控制。"Static
      <=这个就是要捕获消息的ID为IDC_STATIC1的静态文本控件了
  ...

 
在它的右键菜单里选择Messages,出来Messages窗口,切换到Test_Dialog对话框,你马上就能看见 Messages窗口 里出现很多消息了:WM_PAINT、WM_NCPAINT、WM_ERASEBKGND...如果鼠标移动到一个按钮上(不点击),哈,马上刷出一串的WM_NCHITTEST消息,然后双击STATIC控件,再切换到SPY++查看, 发现在跟在N多WM_NCHITTEST消息后面的是一些WM_SETCURSOR、WM_MOUSEMOVE、WM_MOUSEACTIVATE,注意还有一条消息名字就叫WM_LBUTTONDOWN,双击点开它,看到它的注释是 wParam:00000001 lParam:00070026 -----查阅MSDN的WM_LBUTTONDOWN消息可以知道,wParam的1是表示MK_LBUTTON(Set if the left mouse button is down),lParam的高16位0x0007表示y坐标,低16位0x0026表示x坐标,即我刚才点击的位置是P(38,7)(这是相对控件的左上角0位置而言的) 。于是,我知道实现就是发一条WM_LBUTTONDOWN消息给IDC_STATIC1就行了,发送的坐标写P(0,0)就OK.

所以这个问题的答案就是:

1.将STATIC控件的ID改了,不能是默认的IDC_STATIC,比如改成IDC_STATIC1;
2.属性选上NOTIFY;
3.实现代码:
p=((CButton*)GetDlgItem(IDC_STATIC1));
p->SendMessage(WM_LBUTTONDOWN,1,0);

-----早就知道这个工具了,但一直太懒而不知道它的一点点用法:P

posted on 2006-06-11 18:42 流云 阅读(3724) 评论(0)  编辑 收藏

评论

标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]