ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

I need MFC solution
  #11  
Старый 20.05.2009, 01:34
Suteki
Новичок
Регистрация: 18.05.2009
Сообщений: 12
Провел на форуме:
129116

Репутация: 19
Exclamation 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.
вставляю перед последний скобкой
Код:
return 0;
Появлятся 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
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ