我的要求很低,只要拦截自己程序中多个子窗口的WM_LBUTTONDBLCLK消息,帮忙!
解决方案 »
- 请教如何接受动态创建的32个checkbox的消息
- 文本框的 EN_CHANGE 通知怎么没反应
- 关于DLL
- 关于服务程序和COM组件的问题(望有经验的大侠进来看看)
- 请问那有mfc编程实例和扩展编程实例配书源码下载阿??
- 向大虾请教,在单文档程序中,如何在CMyDoc类中修改CMyView类中与编辑框控件相对应变量的值
- 我的矢量绘图程序在win98环境下花屏,帮帮我啊!
- 请教如何实现开机启动
- 我需要枚举windows的所有窗口,有高手可以相助吗???
- VC---高分大调查!!!!!!!!!!!!!!!!!!!!!!!--------都有哪些软件是用VC写的???
- 在堆中创建的动态二维树组后,如何再改变它的维数。另外:伪码是什么意思?和源码有什么区别
- 刚学VC,请大虾指点迷津
有spy++中文帮助下载.你的问题可以解决.你自己看看.
要在这里回答,写的太多了
我的意思是如何像spy++一样拦截指^定^窗^口^的消息,不是进程也不是系统。
先用SetWindowLong将指定窗口消息发送到自己定义的一个函数
原型如下:
LRESULT CALLBACK MyWindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);然后在该函数中可以拦截(过滤)掉指定消息,其它的消息可以用
CallWindowProc函数再交还给原处理函数进行处理。spy呢,我想至少可以这么做,但它未过滤任何消息,只是做了Message Log的工作,也就是将所有消息发回原消息处理函数进行处理。
char Handles[255];
HWND hWnds;
int x;
GetCursorPos(&MousePoint);
//GetHandle
hWnds=WindowFromPoint(MousePoint);
Edit1->Text=IntToStr((int)hWnds);
if(Edit1->Text=="") return;
GetWindowText(hWnds,Handles,255);
Edit3->Text=(AnsiString)Handles;
GetClassName(hWnds, Handles, 255);
Edit4->Text=(AnsiString)Handles;
DrawRect(hWnds);
for (int i=0;i<10000;i++)
Application->ProcessMessages();
DrawRect(hWnds);看看这个,或许有用!
BCB中兄弟的经典代码!