Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef INCLUDE_IPSUTIL_H
#define INCLUDE_IPSUTIL_H
// This file contains utility functions for wireless components
// Function: SELECT_PREV_LISTITEM
// Description:
// Intended to be used after deleting a CListCtrl item to reset
// the selected item.
// Returns:
// index - returns with the new index which is -1 if the list
// is empty.
template<class T> inline int SELECT_PREV_LISTITEM(T &list, int nIndex) { int nSelectIndex; if (0 == list.GetItemCount()) return -1; else nSelectIndex = max( 0, nIndex - 1 ); ASSERT( nSelectIndex < list.GetItemCount() ); if (nSelectIndex >= 0) { VERIFY(list.SetItemState( nSelectIndex, LVIS_FOCUSED|LVIS_SELECTED, LVIS_FOCUSED|LVIS_SELECTED )); } return nSelectIndex; }
// Function: SELECT_NO_LISTITEM
// Description:
// This function is intended to used on a CListCtrl. It ensures
// no list items are selected.
template<class T> inline void SELECT_NO_LISTITEM(T &list) { if (0 == list.GetSelectedCount()) return; int nIndex = -1; while (-1 != (nIndex = list.GetNextItem( nIndex, LVNI_SELECTED ))) { VERIFY(list.SetItemState( nIndex, 0, LVIS_SELECTED | LVIS_FOCUSED )); } ASSERT( 0 == list.GetSelectedCount() ); return; }
// Function: SET_POST_REMOVE_FOCUS
// Description:
// This function is intended to be used on a dialogs. It sets the
// focus to an appropriate control after a list item has been deleted.
template<class T> inline void SET_POST_REMOVE_FOCUS( T *pDlg, int nListSel, UINT nAddId, UINT nRemoveId, CWnd *pWndPrevFocus ) { ASSERT( 0 != nAddId ); ASSERT( 0 != nRemoveId ); // Fix up focus, if necessary
if (::GetFocus() == NULL) { if (-1 == nListSel) { // Set focus to add button when theres is nothing in the list
CWnd *pWndButton = pDlg->GetDlgItem( nAddId ); ASSERT( NULL != pWndButton ); pDlg->GotoDlgCtrl( pWndButton ); } else { if (NULL != pWndPrevFocus) { // Restore lost focus
pDlg->GotoDlgCtrl( pWndPrevFocus ); } else { // Restore focus to remove button
CWnd *pWndButton = pDlg->GetDlgItem( nRemoveId ); ASSERT( NULL != pWndButton ); pDlg->GotoDlgCtrl( pWndButton ); } } } return; }
#endif //#ifndef INCLUDE_IPSUTIL_H
|