Показать сообщение отдельно

Решение под MFC
  #12  
Старый 21.05.2009, 03:24
Suteki
Новичок
Регистрация: 18.05.2009
Сообщений: 12
С нами: 8939101

Репутация: 19
Smile Решение под MFC

Проблему решил. Привожу ниже мануал.
Мини-Мануал для MFC

1) В хайдер мейнфрейма (MainFrm.h) добавляем в описание класса прототип функции OnDeviceChangeprotected:)
PHP код:
BOOL OnDeviceChangeUINT nEventTypeDWORD dwData ); 
2) В мейнфрейм (MainFrm.cpp) подключаем хайдер dbt.h
PHP код:
#include <dbt.h> 
3) Дописываем в карту откликов после //}}AFX_MSG_MAP отклик ON_WM_DEVICECHANGE ()
PHP код:
ON_WM_DEVICECHANGE () 
4) В конец мейнфрейма дописываем следующий код:

PHP код:

bool inline IsBitSet 
(DWORD64 dwMaskUINT nTHBit)
{
    
DWORD64 dwBit 1;
    
dwBit <<= nTHBit;
    
dwMask &= dwBit;
    return 
dwMask true false;
}

BOOL CMainFrame::OnDeviceChangeUINT nEventTypeDWORD dwData )
{
    
BOOL bReturn CWnd::OnDeviceChange (nEventTypedwData);

    
DEV_BROADCAST_VOLUME *volume = (DEV_BROADCAST_VOLUME *)dwData;
    
CString log;

    if (
nEventType == DBT_DEVICEARRIVAL)
    {
        if (
volume->dbcv_devicetype == DBT_DEVTYP_VOLUME)
        {
            for (
int n 032n++)
            {
                if (
IsBitSet (volume->dbcv_unitmaskn))
                {
                    
log.Format ("Drive %c: Inserted\n"'A');
        ::
AfxMessageBox(log);

        
log.Format ("%c"'A');
        
// Флешка подключена. Имя флешки в системе содержит строковая переменная log
                
}
            }
        }
    }

    if (
nEventType == DBT_DEVICEREMOVECOMPLETE)
    {
        if (
volume->dbcv_devicetype == DBT_DEVTYP_VOLUME)
        {
            for (
int n 032n++)
            {
                if (
IsBitSet (volume->dbcv_unitmaskn))
                {
                    
log.Format ("Drive %c: Removed\n"'A');
        ::
AfxMessageBox(log);

        
log.Format ("%c"'A');
        
// Флешка извлечена. Имя флешки в системе содержит строковая переменная log
                
}
            }
        }
    }

    return 
bReturn;


Файл проекта + собранный exe
 
Ответить с цитированием