找一下本站的有关判断CD-ROM中放入碟片的问题,一样的,好像是处理一个消息,忘了,查一下。
解决方案 »
- OpenGL 三维地层建模
- MFC用ADO连ACCESS,怎样写带where的sql语句?
- VC 中如何使用自己的dll (也就是使用自己dll里的函数)
- 在Dll中建立共享数据段的问题?
- ###如何将MFC文档视图结构中View的客户区的显示内容保存到一个CBitmap类中?###
- 如何序列化一个CPtrList,求大家帮忙!
- 找了半天也没有找到我要的答案,哪位能人帮帮忙
- WPARAM d和LPARAM 是什么类型的变量一般在那些地方使用?
- 如何自己实现类似于Word打印预览的功能?
- 如何将一个结构写进文件!
- 急救!实现drag and drop时遇麻烦!我按MSDN实现drag and drop时,在Cview中,加一个COleDropTarget成员,又在Ciew...
- 一点击最小化图标,就变成右下角的一个小图标
答:Window中当驱动器发生改变时,系统会想所有的应用程序发送一个广播消息
WM_DEVICECHANGE,包括光驱中插入光盘。次消息在类向导中看不到,需要你
手工加入。在头文件中声明 消息处理函数
afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData );在实现文件中加入消息映射.
ON_MESSAGE(WM_DEVICECHANGE,OnDeviceChange)实现处理函数
BOOL CCDplayerDlg::OnDeviceChange(UINT nEventType, DWORD dwData )
{
switch(nEventType){
case DBT_DEVICEARRIVAL:
{
DEV_BROADCAST_HDR* devhdr=(DEV_BROADCAST_HDR*)dwData;
if (devhdr->dbch_devicetype==DBT_DEVTYP_VOLUME){
//有光盘
}
}
}
break;
case DBT_DEVICEREMOVECOMPLETE:
{
DEV_BROADCAST_HDR* devhdr=(DEV_BROADCAST_HDR*)dwData;
if (devhdr->dbch_devicetype==DBT_DEVTYP_VOLUME){
//光盘移去.
}
}
break;
}
return TRUE;
}
且只能对光驱托盘进入光驱时反应,且只对第一个(primary)光驱反应(我实在WIN2000下测试的,我的及其有两个不同牌子的光驱。对软驱动作不响应!
感谢楼上各位,此问题似乎还没有很简捷的方法在WINNT和WIN98下解决!