
20.05.2009, 01:34
|
|
Новичок
Регистрация: 18.05.2009
Сообщений: 12
С нами:
8939101
Репутация:
19
|
|
I need MFC solution
Данный код отлично собирается как Win32 Application.
Подскажите как реализовать с использованием MFC
гугл выдал кусок кода:
Чтобы приложение основанное на MFC могло отловить и отроботать данное сообщение в карте сообщений необходимо написать следующее:
Код:
ON_MESSAGE(WM_DEVICECHANGE, OnDeviceChange)
Из значений которые может принимать wParam для интересующего нас случая важно следующее:
DBT_DEVICEARRIVAL – подключили новое устройство
DBT_DEVICEREMOVECOMPLETE – устройство было отключено
Код:
#include <dbt.h>
LRESULT OnDeviceChange(WPARAM wParam, LPARAM lParam)
{
// следует обратить внимание на эту строку:
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;
switch(wParam)
{
case DBT_DEVICEARRIVAL:
if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
if (lpdbv -> dbcv_flags & DBTF_MEDIA)
{
MessageBox (NULL, _T(“Устройство подключено”), _T("WM_DEVICECHANGE"), MB_OK );
}
}
break;
case DBT_DEVICEREMOVECOMPLETE:
if (lpdb -> dbch_devicetype == DBT_DEVTYP_VOLUME)
{
PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;
if (lpdbv -> dbcv_flags & DBTF_MEDIA)
{
MessageBox (NULL, _T(“Устройство отключено”), _T("WM_DEVICECHANGE"), MB_OK );
}
}
break;
}
}
НО код компилируется с ошибкой:
Код:
error C4716: 'OnDeviceChange' : must return a value Error executing cl.exe.
вставляю перед последний скобкой
Появлятся 2 ошибки:
Код:
MainFrm.obj : error LNK2001: unresolved external symbol "public: long __thiscall CMainFrame::OnDeviceChange(unsigned int,long)" (?OnDeviceChange@CMainFrame@@QAEJIJ@Z)
Debug/FLA.exe : fatal error LNK1120: 1 unresolved externals
|
|
|