简单范例

上传人:206****923 文档编号:56886182 上传时间:2018-10-16 格式:PPT 页数:12 大小:155KB
返回 下载 相关 举报
简单范例_第1页
第1页 / 共12页
简单范例_第2页
第2页 / 共12页
简单范例_第3页
第3页 / 共12页
简单范例_第4页
第4页 / 共12页
简单范例_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《简单范例》由会员分享,可在线阅读,更多相关《简单范例(12页珍藏版)》请在金锄头文库上搜索。

1、Hardware Notification 簡單範例,井民全製作,Detecting Media Insertion or Removal,當新的 device 或 media (CD or DVD)被放進來且 available 或 removed 會發出 WM_DEVICECHANGE message,有關 device depended 的資訊,我們只要接收 Message 就可以了,如何在 VC 中處理 Message ?,Message Map 方面的設定,BEGIN_MESSAGE_MAP(CRemoveADeviceDlg, CDialog)/ 其他的部分 ON_WM_DEVIC

2、ECHANGE( )END_MESSAGE_MAP(),加入硬體相關的 Message Entry, 他會呼叫你的 OnDeviceChange method,ms-help:/MS.MSDNQTR.2004JAN.1033/vclib/html/_mfc_WM_Message_Handlers.3a_.D_.2d_.E.htm,在 MSDN 搜尋 ON_WM_DEVICECHANGE,實做 OnDeviceChange Method,afx_msg BOOL CRemoveADeviceDlg:OnDeviceChange(UINT nEventType,DWORD_PTR dwData)s

3、witch(nEventType)/ 當光碟片放進來時,就會啟動case DBT_DEVICEARRIVAL: MessageBox(“Media 已經放進來了,並且準備好了“,“Device“);break;/ 當光碟片被拿走case DBT_DEVICEREMOVECOMPLETE:MessageBox(“Media 被移除“,“Device“);break;default:MessageBox(“其他情況“);return TRUE; ,這個部分要 #include ,你可以試試看,向 Device Manager 註冊 要求接收某類裝置的訊息,使用 RegisterDeviceNoti

4、fication,要接收裝置event的Window 或service Handle,指定裝置type的結構,dbch_devicetype 成員指定不同的裝置類型描述結構(略表),DEVICE_NOTIFY_WINDOW_HANDLE = 表明要接收的為視窗 DEVICE_NOTIFY_SERVICE_HANDLE = 表明要接收的是service,Flags 另外還可以加上 DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 表明要接受所有 device interface class 的事件,WindowsXP Only,設定編譯器處理 WindowsXP 專用的程式

5、,DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;ZeroMemory( ,完整程式碼,#include “stdafx.h“ #include / 要放在 stdafx.h 的下面 #define INITGUID / for DEFINE_GUID #include (我的 USB camera 的 classGUID. 用 regedit 查到的 ) / 65e8773d-8f56-11d0-a3b9-00a0c9223196 DEFINE_GUID(MYUSBCamer,0x65e8773d,0x8f56,0x11d0,0xa3,0xb

6、9,0x00,0xa0,0xc9,0x22,0x31,0x96); #include ,Header 的部分,WINVER=0x0501;_WIN32_WINNT=0x501;_WIN32_IE=0x0501;,別忘了加入指定 Windows XP Only,BEGIN_MESSAGE_MAP(CRemoveADeviceDlg, CDialog)ON_WM_DEVICECHANGE( ) END_MESSAGE_MAP(),Message 的部分,afx_msg BOOL CRemoveADeviceDlg:OnDeviceChange(UINT nEventType, DWORD_PTR

7、dwData)switch(nEventType)/ 當光碟片放進來時,就會啟動case DBT_DEVICEARRIVAL: MessageBox(“ Media 已經放進來了,並且準備好了“,“Device“);break;/ 當光碟片被拿走case DBT_DEVICEREMOVECOMPLETE:MessageBox(“Device has been removed“,“Device“);break;case DBT_DEVICEQUERYREMOVE:case DBT_DEVICEQUERYREMOVEFAILED:case DBT_DEVICEREMOVEPENDING:case

8、DBT_DEVICETYPESPECIFIC :default:MessageBox(“其他情況“);return TRUE; ,更多的資訊,請查閱 MSDN,訊息處理的部分,HDEVNOTIFY hDevNotify; / 向 Device Manager 註冊所得到的 Handle / (用在取消註冊時使用) / 接收專門來自指定裝置的訊息 void CRemoveADeviceDlg:OnBnClickedOk() / 使用 device interface 的範例DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;ZeroMemory( ,裝置註冊的部分,關鍵片段,/ 離開,取消註冊 void CRemoveADeviceDlg:OnBnClickedCancel() BOOL bOk=UnregisterDeviceNotification(hDevNotify);if(bOk=FALSE)ShowError();OnCancel(); ,使用 Symbolic name,對照驅動程式的 Registry,驅動程式 inf 檔,利用 QueryDosDevice 列出的結果,列出系統的 MS-DOS device name,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号