|
|
/*
+-------------------------------------------------------------------------+ | Status Dialog box routines - Used during Conversion | +-------------------------------------------------------------------------+ | (c) Copyright 1993-1994 | | Microsoft Corp. | | All rights reserved | | | | Program : [StatBox.c] | | Programmer : Arthur Hanson | | Original Program Date : [Feb 08, 1994] | | Last Update : [Feb 08, 1994] | | | | Version: 1.00 | | | | Description: | | | | History: | | arth Feb 08, 1994 1.00 Original Version. | | | +-------------------------------------------------------------------------+ */
#include "globals.h"
#include "convapi.h"
static TCHAR tmpStr[1024]; static TCHAR PanelTitle[80]; static HANDLE hStatus = NULL; static HANDLE hPanel = NULL; static BOOL DoCancel = FALSE;
/*+-------------------------------------------------------------------------+
| Routines for status dialog put up during conversion. | +-------------------------------------------------------------------------+*/
/*+-------------------------------------------------------------------------+
| DrainPump() +-------------------------------------------------------------------------+*/ void DrainPump() { MSG msg;
while (PeekMessage(&msg, hStatus, 0, 0xfff, PM_REMOVE)) { if ((IsDialogMessage(hStatus, &msg) == FALSE) && (IsDialogMessage(hPanel, &msg) == FALSE)) { TranslateMessage(&msg); DispatchMessage(&msg); } }
} // DrainPump
/*+-------------------------------------------------------------------------+
| Status_CurConv() +-------------------------------------------------------------------------+*/ // Current server pair being converted
void Status_CurConv(UINT Num) { wsprintf(tmpStr, TEXT("%5u"), Num); SendDlgItemMessage(hStatus, IDC_S_CUR_CONV, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_CurConv
/*+-------------------------------------------------------------------------+
| Status_TotConv() +-------------------------------------------------------------------------+*/ // Total number of server pairs to convert
void Status_TotConv(UINT Num) { wsprintf(tmpStr, TEXT("%5u"), Num); SendDlgItemMessage(hStatus, IDC_S_TOT_CONV, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_TotConv
/*+-------------------------------------------------------------------------+
| Status_SrcServ() +-------------------------------------------------------------------------+*/ // Current source server of server pair being converted
void Status_SrcServ(LPTSTR Server) { wsprintf(tmpStr, TEXT("%-15s"), Server); SendDlgItemMessage(hStatus, IDC_S_SRCSERV, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_SrcServ
/*+-------------------------------------------------------------------------+
| Status_DestServ() +-------------------------------------------------------------------------+*/ // Current destination server of server pair being converted
void Status_DestServ(LPTSTR Server) { wsprintf(tmpStr, TEXT("%-15s"), Server); SendDlgItemMessage(hStatus, IDC_S_DESTSERV, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_DestServ
/*+-------------------------------------------------------------------------+
| Status_ConvTxt() +-------------------------------------------------------------------------+*/ // Text describing what is being converted (Groups, Users Files)
void Status_ConvTxt(LPTSTR Text) { wsprintf(tmpStr, TEXT("%-20s"), Text); SendDlgItemMessage(hStatus, IDC_S_CONVTXT, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_ConvTxt
/*+-------------------------------------------------------------------------+
| Status_CurNum() +-------------------------------------------------------------------------+*/ // Current item number being converted (current group # or User # or file #)...
void Status_CurNum(UINT Num) { wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); SendDlgItemMessage(hStatus, IDC_S_CUR_NUM, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_CurNum
/*+-------------------------------------------------------------------------+
| Status_CurTot() +-------------------------------------------------------------------------+*/ // Total items in set being converted (user, group, files...)
void Status_CurTot(UINT Num) { wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); SendDlgItemMessage(hStatus, IDC_S_CUR_TOT, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_CurTot
/*+-------------------------------------------------------------------------+
| Status_ItemLabel() +-------------------------------------------------------------------------+*/ // Label for set being converted ("Group:", "User:")
void Status_ItemLabel(LPTSTR Text, ...) { va_list marker;
va_start(marker, Text);
wvsprintf(tmpStr, Text, marker); SendDlgItemMessage(hStatus, IDC_S_ITEMLABEL, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump();
va_end(marker);
} // Status_ItemLabel
/*+-------------------------------------------------------------------------+
| Status_Item() +-------------------------------------------------------------------------+*/ // Name of current thing being converted (actual user or group name)
void Status_Item(LPTSTR Text) { wsprintf(tmpStr, TEXT("%-15s"), Text); SendDlgItemMessage(hStatus, IDC_S_STATUSITEM, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_Item
/*+-------------------------------------------------------------------------+
| Status_TotComplete() +-------------------------------------------------------------------------+*/ // Total #server pairs converted so far
void Status_TotComplete(UINT Num) { wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); SendDlgItemMessage(hStatus, IDC_S_TOT_COMP, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_TotComplete
/*+-------------------------------------------------------------------------+
| Status_TotGroups() +-------------------------------------------------------------------------+*/ void Status_TotGroups(UINT Num) { wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); SendDlgItemMessage(hStatus, IDC_S_TOT_GROUPS, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_TotGroup
/*+-------------------------------------------------------------------------+
| Status_TotUsers() +-------------------------------------------------------------------------+*/ void Status_TotUsers(UINT Num) { wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); SendDlgItemMessage(hStatus, IDC_S_TOT_USERS, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_TotUsers
/*+-------------------------------------------------------------------------+
| Status_TotFiles() +-------------------------------------------------------------------------+*/ void Status_TotFiles(UINT Num) { wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); SendDlgItemMessage(hStatus, IDC_S_TOT_FILES, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_TotFiles
/*+-------------------------------------------------------------------------+
| Status_TotErrors() +-------------------------------------------------------------------------+*/ void Status_TotErrors(UINT Num) { wsprintf(tmpStr, TEXT("%7s"), lToStr(Num)); SendDlgItemMessage(hStatus, IDC_S_TOT_ERRORS, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_TotErrors
/*+-------------------------------------------------------------------------+
| Status_BytesTxt() +-------------------------------------------------------------------------+*/ void Status_BytesTxt(LPTSTR Text) { wsprintf(tmpStr, TEXT("%-15s"), Text); SendDlgItemMessage(hStatus, IDC_PANEL1, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_BytesTxt
/*+-------------------------------------------------------------------------+
| Status_Bytes() +-------------------------------------------------------------------------+*/ void Status_Bytes(LPTSTR Text) { wsprintf(tmpStr, TEXT("%s"), Text); SendDlgItemMessage(hStatus, IDC_PANEL2, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_Bytes
/*+-------------------------------------------------------------------------+
| Status_TotBytes() +-------------------------------------------------------------------------+*/ void Status_TotBytes(LPTSTR Text) { wsprintf(tmpStr, TEXT("%s"), Text); SendDlgItemMessage(hStatus, IDC_PANEL3, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_TotBytes
/*+-------------------------------------------------------------------------+
| Status_BytesSep() +-------------------------------------------------------------------------+*/ void Status_BytesSep(LPTSTR Text) { wsprintf(tmpStr, TEXT("%s"), Text); SendDlgItemMessage(hStatus, IDC_PANEL4, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hStatus, WM_PAINT, 0, 0L); DrainPump(); } // Status_BytesSep
/*+-------------------------------------------------------------------------+
| DlgStatus() +-------------------------------------------------------------------------+*/ LRESULT CALLBACK DlgStatus(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { RECT rc;
switch (message) { case WM_INITDIALOG: // Center the dialog over the application window
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); return (TRUE);
case WM_SETFOCUS: GetWindowRect(hDlg, &rc); InvalidateRect(hDlg, &rc, FALSE); SendMessage(hStatus, WM_PAINT, 0, 0L); break; }
return (FALSE); // Didn't process the message
lParam; } // DlgStatus
/*+-------------------------------------------------------------------------+
| DoStatusDlg() +-------------------------------------------------------------------------+*/ void DoStatusDlg(HWND hDlg) { DLGPROC lpfnDlg;
lpfnDlg = MakeProcInstance((DLGPROC)DlgStatus, hInst); hStatus = CreateDialog(hInst, TEXT("StatusDlg"), hDlg, lpfnDlg) ; FreeProcInstance(lpfnDlg);
} // DoStatusDlg
/*+-------------------------------------------------------------------------+
| StatusDlgKill() +-------------------------------------------------------------------------+*/ void StatusDlgKill() { DestroyWindow(hStatus); hStatus = NULL;
} // StatusDlgKill
/*+-------------------------------------------------------------------------+
| Information (Panel) Dialog Routines | +-------------------------------------------------------------------------+*/
/*+-------------------------------------------------------------------------+
| Panel_Line() +-------------------------------------------------------------------------+*/ void Panel_Line(int Line, LPTSTR szFormat, ...) { va_list marker;
if (hPanel == NULL) return;
va_start(marker, szFormat);
wvsprintf(tmpStr, szFormat, marker); tmpStr[60] = TEXT('\0'); SendDlgItemMessage(hPanel, IDC_PANEL1 - 1 + Line, WM_SETTEXT, 0, (LPARAM) tmpStr); SendMessage(hPanel, WM_PAINT, 0, 0L); DrainPump();
va_end(marker);
} // Panel_ConvTxt
/*+-------------------------------------------------------------------------+
| Panel_Cancel() +-------------------------------------------------------------------------+*/ BOOL Panel_Cancel() {
if ((hPanel == NULL) || !DoCancel) return FALSE;
return TRUE;
} // Panel_Cancel
/*+-------------------------------------------------------------------------+
| DlgPanel() +-------------------------------------------------------------------------+*/ LRESULT CALLBACK DlgPanel(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; RECT rc;
switch (message) { case WM_INITDIALOG: // Center the dialog over the application window
DoCancel = FALSE; CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); SendMessage(hDlg, WM_SETTEXT, (WPARAM) 0, (LPARAM) PanelTitle); return (TRUE);
case WM_SETFOCUS: GetWindowRect(hDlg, &rc); InvalidateRect(hDlg, &rc, FALSE); SendMessage(hPanel, WM_PAINT, 0, 0L); break;
case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam);
switch (wmId) { case IDCANCEL: DoCancel = TRUE; return (TRUE);
break; }
break; }
return (FALSE); // Didn't process the message
lParam; } // DlgPanel
/*+-------------------------------------------------------------------------+
| PanelDlg_Do() +-------------------------------------------------------------------------+*/ void PanelDlg_Do(HWND hDlg, LPTSTR Title) { DLGPROC lpfnDlg;
lstrcpy(PanelTitle, Title); lpfnDlg = MakeProcInstance((DLGPROC)DlgPanel, hInst); hPanel = CreateDialog(hInst, TEXT("PanelDLG"), hDlg, lpfnDlg) ; FreeProcInstance(lpfnDlg);
} // PanelDlg_Do
/*+-------------------------------------------------------------------------+
| PanelDlgKill() +-------------------------------------------------------------------------+*/ void PanelDlgKill() {
if (hPanel == NULL) return;
DestroyWindow(hPanel); hPanel = NULL; DoCancel = FALSE;
} // PanelDlgKill
/*+-------------------------------------------------------------------------+
| Name Error Dialog (User and Group) | +-------------------------------------------------------------------------+*/
static TCHAR OldName[60]; static TCHAR NewName[60]; static LPTSTR DlgTitle; static LPTSTR NameErrorProblem; static ULONG RetType; static ULONG MaxNameLen; /*+-------------------------------------------------------------------------+
| NameErrorDlg() | +-------------------------------------------------------------------------+*/ LRESULT CALLBACK NameErrorDlg(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent;
switch (message) { case WM_INITDIALOG: // Center the dialog over the application window
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
// Init all the display fields
SendMessage(hDlg, WM_SETTEXT, (WPARAM) 0, (LPARAM) DlgTitle); SendMessage(GetDlgItem(hDlg, IDC_OLDNAME), WM_SETTEXT, (WPARAM) 0, (LPARAM) OldName); SendMessage(GetDlgItem(hDlg, IDC_NEWNAME), WM_SETTEXT, (WPARAM) 0, (LPARAM) NewName); SendMessage(GetDlgItem(hDlg, IDC_PANEL1), WM_SETTEXT, (WPARAM) 0, (LPARAM) NameErrorProblem);
// limit the name length
PostMessage(GetDlgItem(hDlg, IDC_NEWNAME), EM_LIMITTEXT, (WPARAM) MaxNameLen, 0); return (TRUE);
case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam);
switch (wmId) { case IDABORT: // This will cancel the conversion - but need to check with the user
// if this is what they really want to do
if (MessageBox(hDlg, Lids(IDS_E_15), Lids(IDS_E_16), MB_YESNO) == IDYES) { RetType = (ULONG) IDABORT; EndDialog(hDlg, 0); }
return (TRUE); break;
case IDRETRY: * (WORD *)NewName = (WORD) MaxNameLen + 1; SendMessage(GetDlgItem(hDlg, IDC_NEWNAME), EM_GETLINE, 0, (LPARAM) NewName); RetType = (ULONG) IDRETRY; EndDialog(hDlg, 0); return (TRUE); break;
case IDIGNORE: RetType = (ULONG) IDCANCEL; EndDialog(hDlg, 0); return (TRUE); break;
}
break; }
return (FALSE); // Didn't process the message
lParam; } // NameErrorDlg
/*+-------------------------------------------------------------------------+
| UserNameErrorDlg_Do() | +-------------------------------------------------------------------------+*/ ULONG UserNameErrorDlg_Do(LPTSTR Title, LPTSTR Problem, USER_BUFFER *User) { DLGPROC lpfnDlg;
lstrcpy(OldName, User->Name); lstrcpy(NewName, User->NewName); MaxNameLen = MAX_USER_NAME_LEN;
DlgTitle = Title; NameErrorProblem = Problem; lpfnDlg = MakeProcInstance((DLGPROC) NameErrorDlg, hInst); CursorNormal(); DialogBox(hInst, TEXT("NameError"), hStatus, lpfnDlg) ; CursorHourGlass(); FreeProcInstance(lpfnDlg);
if (RetType == IDRETRY) { User->err = 0; lstrcpy(User->NewName, NewName);
// if the name is different then flag that it is a new name
if (lstrcmpi(User->NewName, User->Name)) User->IsNewName = TRUE; }
return RetType;
} // UserNameErrorDlg_Do
/*+-------------------------------------------------------------------------+
| GroupNameErrorDlg_Do() | +-------------------------------------------------------------------------+*/ ULONG GroupNameErrorDlg_Do(LPTSTR Title, LPTSTR Problem, GROUP_BUFFER *Group) { DLGPROC lpfnDlg;
lstrcpy(OldName, Group->Name); lstrcpy(NewName, Group->NewName); MaxNameLen = MAX_NT_GROUP_NAME_LEN;
DlgTitle = Title; NameErrorProblem = Problem; lpfnDlg = MakeProcInstance((DLGPROC) NameErrorDlg, hInst); CursorNormal(); DialogBox(hInst, TEXT("NameError"), hStatus, lpfnDlg) ; CursorHourGlass(); FreeProcInstance(lpfnDlg);
if (RetType == IDRETRY) { Group->err = 0; lstrcpy(Group->NewName, NewName);
// if the name is different then flag that it is a new name
if (lstrcmpi(Group->NewName, Group->Name)) Group->IsNewName = TRUE; }
return RetType;
} // GroupNameErrorDlg_Do
|