MFC ActiveX的OCX控件 呼应U盘拔插消息 失败
MFC ActiveX的OCX控件 相应U盘拔插消息 失败
新建一个MFC ActiveX工程 然后在相应的XXXXCtrl类中添加事件,MyEvent1(Long l1,Long l2)
然后呢,为了响应U盘拔插的消息WM_DEVICECHANGE我在XXXXCtrl类的属性中根本没有找到这个消息。
我只好在消息映射中手动添加ON_WM_DEVICECHANGE()和 BOOL OnDeviceChange( UINT nEventType,DWORD dwData )
并实现BOOL OnDeviceChange( UINT nEventType,DWORD dwData )为
BOOL CMyXXXXCtrl::OnDeviceChange( UINT nEventType,DWORD dwData )
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
MyEvent1(nEventType,dwData);
return COleControl::OnDeviceChange(nEventType,dwData);
}
编译,我另外在一个mfc工程中加载这个ocx控件,然后还事件响应代码中写入U盘拔插常见的代码:
void CtestActiveDemoDlg::MyEventMy130225mycomusbctrl1(long l1, long l2)
{
// TODO: 在此处添加消息处理程序代码
if( l1==32768)
{
MessageBox(_T("U盘插入"));
}
else if(l1==32772)
{
MessageBox(_T("U盘拔出"));
}
}
结果,拔插U盘没有任何响应。
我可以肯定的一点是,com通讯绝对没有问题,因为我还添加了左键按下消息以及响应事件,在这个mfc客户端中响应过来了,是正常的。
就是这个U盘拔插消息没法响应 我不知道是为什么,难道和获取焦点有关系???
敬请各路高手指点……
------解决方案--------------------
你可以重写下WindowProc方法来捕获下那个消息是否成功
------解决方案--------------------
单步调一下,看看
------解决方案--------------------
Any application with a top-level window can receive basic notifications by processing the WM_DEVICECHANGE message. Applications can use the RegisterDeviceNotification function to register to receive device notifications.
新建一个MFC ActiveX工程 然后在相应的XXXXCtrl类中添加事件,MyEvent1(Long l1,Long l2)
然后呢,为了响应U盘拔插的消息WM_DEVICECHANGE我在XXXXCtrl类的属性中根本没有找到这个消息。
我只好在消息映射中手动添加ON_WM_DEVICECHANGE()和 BOOL OnDeviceChange( UINT nEventType,DWORD dwData )
并实现BOOL OnDeviceChange( UINT nEventType,DWORD dwData )为
BOOL CMyXXXXCtrl::OnDeviceChange( UINT nEventType,DWORD dwData )
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
MyEvent1(nEventType,dwData);
return COleControl::OnDeviceChange(nEventType,dwData);
}
编译,我另外在一个mfc工程中加载这个ocx控件,然后还事件响应代码中写入U盘拔插常见的代码:
void CtestActiveDemoDlg::MyEventMy130225mycomusbctrl1(long l1, long l2)
{
// TODO: 在此处添加消息处理程序代码
if( l1==32768)
{
MessageBox(_T("U盘插入"));
}
else if(l1==32772)
{
MessageBox(_T("U盘拔出"));
}
}
结果,拔插U盘没有任何响应。
我可以肯定的一点是,com通讯绝对没有问题,因为我还添加了左键按下消息以及响应事件,在这个mfc客户端中响应过来了,是正常的。
就是这个U盘拔插消息没法响应 我不知道是为什么,难道和获取焦点有关系???
敬请各路高手指点……
------解决方案--------------------
你可以重写下WindowProc方法来捕获下那个消息是否成功
------解决方案--------------------
单步调一下,看看
------解决方案--------------------
Any application with a top-level window can receive basic notifications by processing the WM_DEVICECHANGE message. Applications can use the RegisterDeviceNotification function to register to receive device notifications.