Таблица не должна быть пустой,
{
IRet = TRUE;
g_shared_NotifyData[ i ].bDestroy = FALSE;
}
}
ReleaseMutex ( g_hMutex);
return ( IRet);
}
static void _stdcall CheckTableMatch ( int iNotifyType,
HWND hWnd ,
LPCTSTR szTitle ) {
// Захватить мьютекс.
DWORD dwRet = WaitForSingleObject ( g__hMutex, k_WAITLIMIT);
if ( WAIT_TIMEOUT == dwRet)
{
TRACE ( _T ( "CheckTableMatch : Wait on mutex timed out!\n"));
return;
}
// Таблица не должна быть пустой, но все надо проверять.
if ( 0 == g_shared_iUsedSlots)
{
ReleaseMutex ( g_hMutex);
TRACE { _T ( "CheckTableMatch called on an empty table!\n"));
return;
}
// Поиск в таблице.
for ( int i = 0; i < TOTAL_NOTIFY_SLOTS; i++)
{
// Содержит ли что-нибудь эта запись и согласован ли тип
// уведомления?
if- ( ( _Т ( '\0') != g_shared_NotifyData[ i ].szTitle[ 0 ]) &&
( g__shared_NotifyData[ i ].iNotifyType & iNotifyType ) )
{
BOOL bMatch = FALSE;
// Выполнить согласование.
switch ( g_shared_NotifyData[ i ].iSearchType)
{
case ANTS_EXACTMATCH :
// Это просто,
if ( 0 = Istrcmp ( g_shared_NotifyData[i].szTitle,
szTitle ))
{
bMatch = TRUE;
}
break;
case ANTS_BEGINMATCH :
if ( 0 ==
_tcsnccmp ( g_shared_NotifyData[i].szTitle,
szTitle , strlen(g_shared_NotifyData[i].szTitle)))
{
bMatch = TRUE;
}
break; case ANTS_ANYLOCMATCH :
if ( NULL != _tcsstr ( szTitle
g_shared_NotifyData[i].szTitle))
{
bMatch = TRUE;
}
break;
default :
TRACE ( _T ( "CheckTableMatch invalid "\ "search type!!!\n"));
ReleaseMutex ( g_hMutex);
return;
break;
}
// Согласование выполнено?
if ( TRUE = bMatch)
{
// Если это уведомление об уничтожении, проставить "1"
// в таблице.
if ( ANTN_DESTROYWINDOW == iNotifyType)
{
g_shared_NotifyData[ i ].bDestroy = TRUE;
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий