急!!关于MFC ActiveX控件问题!!

lym20080056 2015-12-16 09:37:42
本人用vs2010编写了一个基于MFC 的ActiveX控件,用来感应USB设备插拔因要使用一些对话框的控件资源,所以在ActiveX控件里创建了一个对话框,代码如下:
int CActivedemoCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (COleControl::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: 在此添加您专用的创建代码
m_mydlg.Create(IDD_MYDIALOG,this);
return 0;
}

// CActivedemoCtrl::OnDraw - 绘图函数

void CActivedemoCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (!pdc)
return;
m_mydlg.MoveWindow(rcBounds,TRUE);
}


然后希望AxtiveX对话框里能够感应并显示USB设备的连接状况,编写了如下代码:
LRESULT CMyDialog::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_DEVICECHANGE)
{
// Tracks DBT_DEVICEARRIVAL followed by DBT_DEVNODES_CHANGED
if (wParam == DBT_DEVICEARRIVAL)
{
bPnP_Arrival = true;
bPnP_DevNodeChange = false;
}
// Tracks DBT_DEVNODES_CHANGED followed by DBT_DEVICEREMOVECOMPLETE
if (wParam == DBT_DEVNODES_CHANGED)
{
bPnP_DevNodeChange = true;
bPnP_Removal = false;
}
if (wParam == DBT_DEVICEREMOVECOMPLETE)
{
bPnP_Removal = true;
}
// If DBT_DEVNODES_CHANGED followed by DBT_DEVICEREMOVECOMPLETE
if (bPnP_Removal && bPnP_DevNodeChange)
{
DisplayDevices();
bPnP_Removal = false;
bPnP_DevNodeChange = false;
}
// If DBT_DEVICEARRIVAL followed by DBT_DEVNODES_CHANGED
if (bPnP_DevNodeChange && bPnP_Arrival)
{
DisplayDevices();
bPnP_Arrival = false;
bPnP_DevNodeChange = false;
}
}
return CDialogEx::WindowProc(message, wParam, lParam);
}


生成注册ocx文件后,将这个ActiveX控件插入测试的对话框程序里,运行发现ActiveX控件的对话框窗口不能接受收DBT_DEVNODES_CHANGED消息,却可以接收到DBT_DEVICEARRIVAL与 DBT_DEVICEREMOVECOMPLETE这两个消息。不知道是什么原因,急。。。
...全文
144 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yofoo 2015-12-16
  • 打赏
  • 举报
回复
用Spy++ 对进程的主窗体监控, 看是否有这个消息, 如果有可以逐个跟踪看在哪被截了
lym20080056 2015-12-16
  • 打赏
  • 举报
回复
用Spy++ 试了下,发现DBT_DEVNODES_CHANGED这个消息被测试程序的主窗体捕获了,DBT_DEVICEARRIVAL与 DBT_DEVICEREMOVECOMPLETE这两个消息被AxtiveX控件的对话框窗口捕获到了,现在不清楚DBT_DEVNODES_CHANGED这个消息为什么会被主窗体拦截了。。。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧