- 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
This commit is contained in:
Hermès Bélusca-Maïto 2012-10-01 23:16:43 +00:00
parent 835f8fc099
commit 4617f92587
5 changed files with 114 additions and 43 deletions

View file

@ -1,14 +1,76 @@
/*
* Regedit errors, warnings, informations displaying
*
* Copyright (C) 2010 Adam Kachwalla <geekdundee@gmail.com>
* Copyright (C) 2012 Hermès Bélusca - Maïto <hermes.belusca@sfr.fr>
*
* 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 <regedit.h>
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;
}

View file

@ -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);

View file

@ -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;

View file

@ -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 <alex@thehandofagony.com>
* Copyright (C) 1999 Sylvain St-Germain
* Copyright (C) 2002 Andriy Palamarchuk
* Copyright (C) 2008 Alexander N. rnes <alex@thehandofagony.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public

View file

@ -1,23 +1,23 @@
/*
* regedit (settings.c)
*
* Copyright 2012 Edijs Kolesnikovics <terminedijs@yahoo.com>
* Copyright 2012 Grégori Macário Harbs <mysoft64bits at gmail dot com>
*
* 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 <terminedijs@yahoo.com>
* Copyright (C) 2012 Grégori Macário Harbs <mysoft64bits at gmail dot com>
*
* 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 <regedit.h>