MFC入门教程之控件(7)设备自动检测ondevicechange的添加和使用
来源:互联网 发布:中国内审网络培训 编辑:程序博客网 时间:2024/05/17 22:22
MFC入门学习(1)了解MFC
源文档<http://blog.csdn.net/codectq/article/details/19131227>
MFC入门学习之控件(2)创建一个对话框窗口并在运行时显示
源文档<http://blog.csdn.net/codectq/article/details/19131289>
MFC入门学习之控件(3)标签控件Tab Control的添加和使用
源文档<http://blog.csdn.net/codectq/article/details/19131553>
MFC入门学习之控件(4)标签控件List Control的添加和使用(上)
源文档<http://blog.csdn.net/codectq/article/details/19176595>
MFC入门学习之控件(5)标签控件List Control的添加和使用(中)
源文档<http://blog.csdn.net/codectq/article/details/19204165>
MFC入门学习之控件(6)标签控件List Control的添加和使用(下)
源文档<http://blog.csdn.net/codectq/article/details/23550465>
在对话框初始化过程中将设备通知消息注册到winproc中
//Register to receive notification when a USB device is plugged in.
broadcastInterface.dbcc_size =sizeof(DEV_BROADCAST_DEVICEINTERFACE);
broadcastInterface.dbcc_devicetype =DBT_DEVTYP_DEVICEINTERFACE;
memcpy( &(broadcastInterface.dbcc_classguid),
&(GUID_CLASS_USB_DEVICE),
sizeof(struct _GUID));
gNotifyDevHandle = RegisterDeviceNotification(hwnd,
&broadcastInterface,
DEVICE_NOTIFY_WINDOW_HANDLE);
// Now register for Hub notifications.
memcpy( &(broadcastInterface.dbcc_classguid),
&(GUID_CLASS_USBHUB),
sizeof(struct _GUID));
gNotifyHubHandle = RegisterDeviceNotification(hwnd,
&broadcastInterface,
DEVICE_NOTIFY_WINDOW_HANDLE);
编写设备状态变化时的状态解析函数:
OnDeviceChange(UINTnEventType, DWORD dwData)
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)dwData;
char cDrive;
TRACE("OnDeviceChange: %u\n",nEventType);
switch(nEventType)
{
case DBT_DEVICEARRIVAL:
TRACE("OnDeviceChange: DBT_DEVICEARRIVAL\n");
if(DBT_DEVTYP_VOLUME == lpdb->dbch_devicetype)
{
//Logical volume has been inserted and becomes available
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
if(0 == lpdbv->dbcv_flags)
{
cDrive = FirstDriveFromMask(lpdbv->dbcv_unitmask);
RemovableDiskArrival(cDrive);
}
}
break;
case DBT_DEVICEQUERYREMOVE:
break;
case DBT_DEVICEQUERYREMOVEFAILED:
break;
case DBT_DEVICEREMOVEPENDING:
break;
case DBT_DEVICEREMOVECOMPLETE:
TRACE("OnDeviceChange:DBT_DEVICEREMOVECOMPLETE\n");
if(DBT_DEVTYP_VOLUME == lpdb->dbch_devicetype)
{
//Logical volume has been physically removed
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
if(0 == lpdbv->dbcv_flags)
{
TRACE("OnDeviceChange: DBT_DEVICEREMOVECOMPLETERefreshTree\n");
cDrive = FirstDriveFromMask(lpdbv->dbcv_unitmask);
RemovableDiskRemove(cDrive);
}
}
break;
case DBT_DEVICETYPESPECIFIC:
break;
case DBT_CONFIGCHANGED:
break;
case DBT_DEVNODES_CHANGED:
break;
}
return TRUE;
}
将消息添加到消息map表中
BEGIN_MESSAGE_MAP(CAutoDownDlg,CDialog)
ON_WM_DEVICECHANGE()
END_MESSAGE_MAP()
- MFC入门教程之控件(7)设备自动检测ondevicechange的添加和使用
- MFC入门学习之控件(3)标签控件Tab Control的添加和使用
- mfc-串口控件的添加和使用
- MFC入门学习之控件(4)标签控件List Control的添加和使用(上)
- MFC入门学习之控件(5)标签控件List Control的添加和使用(中)
- MFC入门学习之控件(6)标签控件List Control的添加和使用(下)
- 两种自动检测USB设备的添加和移除的方法
- (转) 两种自动检测USB设备的添加和移除的方法
- 两种自动检测USB设备的添加和移除的方法
- 检测移动设备 OnDeviceChange(ON_WM_DEVICECHANGE)
- VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)
- VS2010/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- VS2010/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)
- VS2013/MFC编程入门之七(对话框:创建对话框类和添加控件变量)
- C++ MFC / VS2013 之六 (对话框:创建对话框类和添加控件变量)
- MFC控件之Combo Box的使用
- MFC学习之CTreeCtrl控件的使用
- Nginx动静分离经典案例配置
- 首页商业领袖越来越多的根结构
- uva 10387 Billiard(简单几何)
- eclipse内存不足 GC overhead limit exceeded 解决时修改 eclipse.ini如下
- 面试-java异常
- MFC入门教程之控件(7)设备自动检测ondevicechange的添加和使用
- Linux 服务器模型
- 找出带环单向链表的环入口(交点)
- 移动游戏开发 - 享受空闲时间用手机游戏
- project euler-34
- 关于set rowcount和@@rowcount
- SPOJ 694 不重复子串
- Ruby on Rails Tutorial第三章关于$ bundle exec respec 出错的问题的解决方案
- C中的volatile用法