From 4617f92587e4a0f441bbc797af267d781fa7bf8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 1 Oct 2012 23:16:43 +0000 Subject: [PATCH] [REGEDIT - Fix comment headers. - Improve error-displaying function and add another one (to be used later on). - Clear a part of code. svn path=/trunk/; revision=57456 --- reactos/base/applications/regedit/error.c | 84 +++++++++++++++++--- reactos/base/applications/regedit/main.h | 3 +- reactos/base/applications/regedit/regedit.c | 26 +++--- reactos/base/applications/regedit/regproc.c | 6 +- reactos/base/applications/regedit/settings.c | 38 ++++----- 5 files changed, 114 insertions(+), 43 deletions(-) diff --git a/reactos/base/applications/regedit/error.c b/reactos/base/applications/regedit/error.c index aaadf1af600..864094e223f 100644 --- a/reactos/base/applications/regedit/error.c +++ b/reactos/base/applications/regedit/error.c @@ -1,14 +1,76 @@ +/* + * Regedit errors, warnings, informations displaying + * + * Copyright (C) 2010 Adam Kachwalla + * Copyright (C) 2012 Hermès Bélusca - Maïto + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + #include -void ErrorMessageBox(HWND hWnd, LPCTSTR title, DWORD code) + +int ErrorMessageBox(HWND hWnd, LPCTSTR lpTitle, DWORD dwErrorCode, ...) { - LPTSTR lpMsgBuf; - DWORD status; - static const TCHAR fallback[] = TEXT("Error displaying error message.\n"); - status = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, code, 0, (LPTSTR)&lpMsgBuf, 0, NULL); - if (!status) - lpMsgBuf = (LPTSTR)fallback; - MessageBox(hWnd, lpMsgBuf, title, MB_OK | MB_ICONERROR); - if (lpMsgBuf != fallback) - LocalFree(lpMsgBuf); + int iRet = 0; + LPTSTR lpMsgBuf = NULL; + DWORD Status = 0; + + va_list args = NULL; + va_start(args, dwErrorCode); + + Status = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + dwErrorCode, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPTSTR)&lpMsgBuf, + 0, + &args); + + va_end(args); + + iRet = MessageBox(hWnd, (Status && lpMsgBuf ? lpMsgBuf : TEXT("Error displaying error message.\n")), lpTitle, MB_OK | MB_ICONERROR); + + if (lpMsgBuf) LocalFree(lpMsgBuf); + + /* Return the MessageBox information */ + return iRet; +} + +int InfoMessageBox(HWND hWnd, UINT uType, LPCTSTR lpTitle, LPCTSTR lpMessage, ...) +{ + int iRet = 0; + LPTSTR lpMsgBuf = NULL; + DWORD Status = 0; + + va_list args = NULL; + va_start(args, lpMessage); + + Status = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_STRING, + lpMessage, + 0, + 0, + (LPTSTR)&lpMsgBuf, + 0, + &args); + + va_end(args); + + iRet = MessageBox(hWnd, (Status && lpMsgBuf ? lpMsgBuf : TEXT("Error displaying error message.\n")), lpTitle, uType); + + if (lpMsgBuf) LocalFree(lpMsgBuf); + + /* Return the MessageBox information */ + return iRet; } diff --git a/reactos/base/applications/regedit/main.h b/reactos/base/applications/regedit/main.h index 36cf10ec3d2..d8931dc0577 100644 --- a/reactos/base/applications/regedit/main.h +++ b/reactos/base/applications/regedit/main.h @@ -94,7 +94,8 @@ extern void ResizeWnd(int cx, int cy); extern LPCTSTR get_root_key_name(HKEY hRootKey); /* error.c */ -extern void ErrorMessageBox(HWND hWnd, LPCTSTR title, DWORD code); +extern int ErrorMessageBox(HWND hWnd, LPCTSTR lpTitle, DWORD dwErrorCode, ...); +extern int InfoMessageBox(HWND hWnd, UINT uType, LPCTSTR lpTitle, LPCTSTR lpMessage, ...); /* find.c */ extern void FindDialog(HWND hWnd); diff --git a/reactos/base/applications/regedit/regedit.c b/reactos/base/applications/regedit/regedit.c index 5644699d0aa..8432a00ee92 100644 --- a/reactos/base/applications/regedit/regedit.c +++ b/reactos/base/applications/regedit/regedit.c @@ -1,7 +1,7 @@ /* * Windows regedit.exe registry editor implementation. * - * Copyright 2002 Andriy Palamarchuk + * Copyright (C) 2002 Andriy Palamarchuk * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -258,11 +258,12 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine) { if (chu == L'S') { + /* Silence dialogs */ silent = TRUE; } else if (chu == L'V') { - /* ignore these switches */ + /* Ignore this switch */ } else { @@ -323,14 +324,21 @@ BOOL ProcessCmdLine(LPWSTR lpCmdLine) if (*s && action == ACTION_UNDEF) { - TCHAR szTitle[256], szText[256]; - LoadString(hInst, IDS_APP_TITLE, szTitle, COUNT_OF(szTitle)); - LoadString(hInst, IDS_IMPORT_PROMPT, szText, COUNT_OF(szText)); - /* request import confirmation */ - if (silent || MessageBox(NULL, szText, szTitle, MB_YESNO) == IDYES) - action = ACTION_ADD; + if (!silent) + { + TCHAR szTitle[256], szText[256]; + LoadString(hInst, IDS_APP_TITLE, szTitle, COUNT_OF(szTitle)); + LoadString(hInst, IDS_IMPORT_PROMPT, szText, COUNT_OF(szText)); + /* request import confirmation */ + if (MessageBox(NULL, szText, szTitle, MB_YESNO) == IDYES) + action = ACTION_ADD; + else + return TRUE; + } else - return TRUE; + { + action = ACTION_ADD; + } } if (action == ACTION_UNDEF) return FALSE; diff --git a/reactos/base/applications/regedit/regproc.c b/reactos/base/applications/regedit/regproc.c index f6a2d4e0c06..d76fda1c588 100644 --- a/reactos/base/applications/regedit/regproc.c +++ b/reactos/base/applications/regedit/regproc.c @@ -2,9 +2,9 @@ * Registry processing routines. Routines, common for registry * processing frontends. * - * Copyright 1999 Sylvain St-Germain - * Copyright 2002 Andriy Palamarchuk - * Copyright 2008 Alexander N. S?rnes + * Copyright (C) 1999 Sylvain St-Germain + * Copyright (C) 2002 Andriy Palamarchuk + * Copyright (C) 2008 Alexander N. Sørnes * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public diff --git a/reactos/base/applications/regedit/settings.c b/reactos/base/applications/regedit/settings.c index 70cf9a31767..ec05738c8d9 100644 --- a/reactos/base/applications/regedit/settings.c +++ b/reactos/base/applications/regedit/settings.c @@ -1,23 +1,23 @@ /* -* regedit (settings.c) -* -* Copyright 2012 Edijs Kolesnikovics -* Copyright 2012 Grégori Macário Harbs -* -* This library is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* This library is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with this library; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ + * Regedit settings + * + * Copyright (C) 2012 Edijs Kolesnikovics + * Copyright (C) 2012 Grégori Macário Harbs + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ #include