问题描述:
1 我建了个MyStyleLict,继承自CClitCtrl
2 在父窗口的DoDataExchange关联了一个List资源,DDX_Control(pDX,IDC_LIST,m_list);需求:
如果鼠标在这个List的范围外单击鼠标左键,list能收到这个消息么?
如果能,该如何做到?
1 我建了个MyStyleLict,继承自CClitCtrl
2 在父窗口的DoDataExchange关联了一个List资源,DDX_Control(pDX,IDC_LIST,m_list);需求:
如果鼠标在这个List的范围外单击鼠标左键,list能收到这个消息么?
如果能,该如何做到?
解决方案 »
- VISTA下的帐户控制
- 获取系统图标出了问题,大家来分析分析啊
- 请问如何hook到另一个进程中的dll中的某个自定义的函数(并非windows api)。
- 控制WORD:如何设置ActiveDocument.Application.UserName?
- 打开ADO连接时报错:无效指针
- 请教!!急!
- 如何将 EXE 文件中的所有"资源内容"分离提取出来 ?
- 如何判断网页加载完成,请大家来讨论
- VC实现打印的功能,连续打印时,除第一页有内容外,从第二页开始为空白,是什么原因呢?代码参考如下。
- 工具栏在程序刚开始运行时无效,什么原因?
- 怎么统计线程的CPU占有率?
- 如何获得托盘图标上的单击,双击消息?
HHOOK SetWindowsHookEx(
int idHook, // hook type
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // thread identifier
);
你只想监视鼠标消息,idHook可以为WH_MOUSE,这种类型的hook回调函数可以在程序中直接定义也可以放到另外一个DLL中,你只想响应这个程序中的List 之外的的鼠标消息,那放在程序中就行了。返回的hook句柄最好放到全局变量中方便在回调函数中使用。
2.定义hook回调函数:
LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
);
因为你只对鼠标的动作感兴趣函数里可以这样
if(nCode <0 || nCode == HC_ACTION)
return CallNextHookEx(hhook, nCode, wParam, lParam);
wParam就有鼠标消息的类型,你按照需要使用
lParam中有主窗口的句柄,你可以把收到的消息发送给主窗口让主窗口处理
3.自定义一个消息响应hook发送来的消息:
对list的操作可以都在这个消息响应函数中完成。