windows-nt/Source/XPSP1/NT/ds/security/gina/policy/poledit/remove.c
2020-09-26 16:20:57 +08:00

91 lines
2.2 KiB
C

//*********************************************************************
//* Microsoft Windows **
//* Copyright(c) Microsoft Corp., 1994 **
//*********************************************************************
#include "admincfg.h"
BOOL OnRemove(HWND hwndApp,HWND hwndList)
{
int nItem,nItemStart=-1;
UINT nSelItems=0;
BOOL fRet=TRUE;
// find out how many items are selected
while ((nItem=ListView_GetNextItem(hwndList,nItemStart,LVNI_SELECTED))
>=0) {
nSelItems++;
nItemStart = nItem;
}
if (!nSelItems) return FALSE; // nothing selected
// display appropriate message depending on whether 1 user, 1 workstation,
// 1 group or multiple items selected
if (nSelItems == 1) {
HGLOBAL hUser;
USERDATA *pUserData;
UINT uMsg;
int nRet;
if (!(hUser = (HGLOBAL) LongToHandle(ListView_GetItemParm(hwndList,nItemStart))) ||
!(pUserData = (USERDATA *) GlobalLock(hUser)))
return FALSE;
switch (pUserData->hdr.dwType) {
#ifdef INCL_GROUP_SUPPORT
case (UT_USER | UF_GROUP):
uMsg = IDS_QUERYREMOVE_GROUP;
break;
#endif
case UT_USER:
uMsg = IDS_QUERYREMOVE_USER;
break;
default:
uMsg = IDS_QUERYREMOVE_WORKSTA;
break;
}
nRet=MsgBoxParam(hwndApp,uMsg,pUserData->hdr.szName,MB_ICONQUESTION,
MB_YESNO);
GlobalUnlock(hUser);
if (nRet != IDYES)
return FALSE;
} else {
if (MsgBox(hwndApp,IDS_QUERYREMOVE_MULTIPLE,MB_ICONQUESTION,MB_YESNO)
!= IDYES)
return FALSE;
}
// remove all selected items
while (((nItem=ListView_GetNextItem(hwndList,-1,LVNI_SELECTED))
>=0) && fRet) {
#ifdef INCL_GROUP_SUPPORT
HGLOBAL hUser;
USERDATA *pUserData;
if ((hUser = (HGLOBAL) LongToHandle(ListView_GetItemParm(hwndList,nItem))) &&
(pUserData = (USERDATA *) GlobalLock(hUser))) {
if (pUserData->hdr.dwType == (UT_USER | UF_GROUP))
RemoveGroupPriEntry(pUserData->hdr.szName);
GlobalUnlock(hUser);
}
#endif
fRet=RemoveUser(hwndList,nItem,TRUE);
}
if (fRet) {
dwAppState |= AS_FILEDIRTY; // file is dirty
dwAppState &= ~AS_CANREMOVE; // no selection in list ctrl, disable item
EnableMenuItems(hwndApp,dwAppState);
SetStatusItemCount(hwndList);
}
return fRet;
}