Отладка приложений


         

He так уж много точек,


TRACE ( szBuff); 

#endif

// He так уж много точек, куда можно перейти

return ( IRet); 

}

if ( 0 == Istrcmpi ( szBuff, _T ( "#32770"))) 

{

// Единственное сообщение, которое нужно проверить,

// - ЭТО WM_INITDIALOG.

if ( WM_INITDIALOG == pMsg->message)

{

// Получить заголовок диалогового окна.

if (0 != GetWindowText ( pMsg->hwnd, szBuff, MAX_PATH))

{

CheckTableMatch ( ANTN_CREATEWINDOW,

 pMsg->hwnd ,

 szBuff );

 } 

}

return ( IRet); 

}

//

// Далее речь пойдет о настоящих диалоговых окнах.

 // Решаем, что делать с текущими окнами, 

if ( WM_CREATE == pMsg->message) 

{

// Очень немногие окна устанавливают заголовок в сообщении

// WM_CREATE. Однако некоторые это делают и не используют

// сообщения WM_SETTEXT, поэтому требуется проверка.

if (0 != GetWindowText ( pMsg->hwnd, szBuff, MAX_PATH))

{

CheckTableMatch ( ANTN_CREATEWINDOW, 

pMsg->hwnd , 

szBuff ); 

}

 }

else if ( WM_SETTEXT = pMsg->message)

 {

// Я всегда устанавливаю по умолчанию WM_SETTEXT, потому что эта

// установка используется для заголовков. К сожалению, некоторые

// приложения, такие как Internet Explorer, вызывают WM_SETTEXT

// многократно'с одним и тем же заголовком. Чтобы не усложнять

// этот обработчик, я просто сообщаю WM_SETTEXT вместо того,

// чтобы поддерживать различные малопонятные и тяжело

// отлаживаемыеструктуры данных, которые сохраняют сведения

// об окнах и предварительно вызывают сообщение WM_SETTEXT.

if ( NULL != pMsg->lParam)

{

CheckTableMatch ( ANTN_CREATEWINDOW , 

pMsg->hwnd , 

(LPCTSTR)pMsg->lParam ); 



}

return ( IRet); 

}

Хотя реализация TNotify была довольно трудноразрешимой задачей, я все-таки остался доволен, что при этом почти не испытал неприятностей. Если собираетесь расширить код обработчика, то уже знаете, что отладка общесистемных обработчиков — непростая задача.

Содержание  Назад  Вперед