ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
January 2007
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
21 participants
401 discussions
Start a n
N
ew thread
[tkreuzer] 25414: sorry, forgot to remove that line
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Jan 10 21:31:33 2007 New Revision: 25414 URL:
http://svn.reactos.org/svn/reactos?rev=25414&view=rev
Log: sorry, forgot to remove that line Modified: trunk/reactos/dll/win32/user32/windows/input.c Modified: trunk/reactos/dll/win32/user32/windows/input.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/i…
============================================================================== --- trunk/reactos/dll/win32/user32/windows/input.c (original) +++ trunk/reactos/dll/win32/user32/windows/input.c Wed Jan 10 21:31:33 2007 @@ -35,8 +35,6 @@ /* Directory to load key layouts from */ #define SYSTEMROOT_DIR L"\\SystemRoot\\System32\\" - -#define STATE_GWL_OFFSET 0 /* GLOBALS *******************************************************************/
17 years, 11 months
1
0
0
0
[ion] 25413: - Fix build.
by ion@svn.reactos.org
Author: ion Date: Wed Jan 10 09:09:57 2007 New Revision: 25413 URL:
http://svn.reactos.org/svn/reactos?rev=25413&view=rev
Log: - Fix build. Modified: trunk/reactos/ntoskrnl/lpc/close.c trunk/reactos/ntoskrnl/lpc/complete.c trunk/reactos/ntoskrnl/lpc/connect.c trunk/reactos/ntoskrnl/lpc/create.c trunk/reactos/ntoskrnl/lpc/listen.c trunk/reactos/ntoskrnl/lpc/port.c trunk/reactos/ntoskrnl/lpc/reply.c trunk/reactos/ntoskrnl/lpc/send.c Modified: trunk/reactos/ntoskrnl/lpc/close.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/close.c?rev=2…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/close.c (original) +++ trunk/reactos/ntoskrnl/lpc/close.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* PRIVATE FUNCTIONS *********************************************************/ Modified: trunk/reactos/ntoskrnl/lpc/complete.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/complete.c?re…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/complete.c (original) +++ trunk/reactos/ntoskrnl/lpc/complete.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* PRIVATE FUNCTIONS *********************************************************/ Modified: trunk/reactos/ntoskrnl/lpc/connect.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/connect.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/connect.c (original) +++ trunk/reactos/ntoskrnl/lpc/connect.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* PRIVATE FUNCTIONS *********************************************************/ Modified: trunk/reactos/ntoskrnl/lpc/create.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/create.c?rev=…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/create.c (original) +++ trunk/reactos/ntoskrnl/lpc/create.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* PRIVATE FUNCTIONS *********************************************************/ Modified: trunk/reactos/ntoskrnl/lpc/listen.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/listen.c?rev=…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/listen.c (original) +++ trunk/reactos/ntoskrnl/lpc/listen.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* PUBLIC FUNCTIONS **********************************************************/ Modified: trunk/reactos/ntoskrnl/lpc/port.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/port.c?rev=25…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/port.c (original) +++ trunk/reactos/ntoskrnl/lpc/port.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* GLOBALS *******************************************************************/ @@ -19,7 +18,7 @@ ULONG LpcpMaxMessageSize; PAGED_LOOKASIDE_LIST LpcpMessagesLookaside; KGUARDED_MUTEX LpcpLock; -ULONG LpcpTraceLevel = LPC_CLOSE_DEBUG; +ULONG LpcpTraceLevel = 0; ULONG LpcpNextMessageId = 1, LpcpNextCallbackId = 1; static GENERIC_MAPPING LpcpPortMapping = Modified: trunk/reactos/ntoskrnl/lpc/reply.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/reply.c?rev=2…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/reply.c (original) +++ trunk/reactos/ntoskrnl/lpc/reply.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* PRIVATE FUNCTIONS *********************************************************/ Modified: trunk/reactos/ntoskrnl/lpc/send.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/send.c?rev=25…
============================================================================== --- trunk/reactos/ntoskrnl/lpc/send.c (original) +++ trunk/reactos/ntoskrnl/lpc/send.c Wed Jan 10 09:09:57 2007 @@ -9,9 +9,8 @@ /* INCLUDES ******************************************************************/ #include <ntoskrnl.h> -#include "lpc.h" #define NDEBUG -#include <internal/debug.h> +#include <debug.h> /* PUBLIC FUNCTIONS **********************************************************/
17 years, 11 months
1
0
0
0
[tkreuzer] 25412: remove focus from window, when it gets diabled - fixes bug 843 See issue #843 for more details.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Jan 10 07:51:27 2007 New Revision: 25412 URL:
http://svn.reactos.org/svn/reactos?rev=25412&view=rev
Log: remove focus from window, when it gets diabled - fixes bug 843 See issue #843 for more details. Modified: trunk/reactos/dll/win32/user32/windows/input.c Modified: trunk/reactos/dll/win32/user32/windows/input.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/i…
============================================================================== --- trunk/reactos/dll/win32/user32/windows/input.c (original) +++ trunk/reactos/dll/win32/user32/windows/input.c Wed Jan 10 07:51:27 2007 @@ -36,6 +36,7 @@ /* Directory to load key layouts from */ #define SYSTEMROOT_DIR L"\\SystemRoot\\System32\\" +#define STATE_GWL_OFFSET 0 /* GLOBALS *******************************************************************/ @@ -338,11 +339,24 @@ BOOL bEnable) { LONG Style = NtUserGetWindowLong(hWnd, GWL_STYLE, FALSE); - Style = bEnable ? Style & ~WS_DISABLED : Style | WS_DISABLED; - NtUserSetWindowLong(hWnd, GWL_STYLE, Style, FALSE); - - SendMessageA(hWnd, WM_ENABLE, (LPARAM) IsWindowEnabled(hWnd), 0); - + /* check if updating is needed */ + UINT bIsDisabled = (Style & WS_DISABLED); + if ( (bIsDisabled && bEnable) || (!bIsDisabled && !bEnable) ) + { + if (bEnable) + { + Style &= ~WS_DISABLED; + } + else + { + /* Remove keyboard focus from that window */ + SetFocus(NULL); + Style |= WS_DISABLED; + } + NtUserSetWindowLong(hWnd, GWL_STYLE, Style, FALSE); + + SendMessageA(hWnd, WM_ENABLE, (LPARAM) IsWindowEnabled(hWnd), 0); + } // Return nonzero if it was disabled, or zero if it wasn't: return IsWindowEnabled(hWnd); }
17 years, 11 months
1
0
0
0
[ion] 25411: - Commit NTLPC and remove old implementation. - Yeah, this adds another regression on top of the new Ob stuff, but in the end it's for the better, as it removes more race conditions and buggy code. - This whole week I've fixed about 45 bugs and removed a dozen race conditions, sorry for the 2-3 regressions, they will be fixed ASAP. - DELETE MAKEFILE.AUTO BEFORE BUILDING THIS BUILD.
by ion@svn.reactos.org
Author: ion Date: Wed Jan 10 07:27:40 2007 New Revision: 25411 URL:
http://svn.reactos.org/svn/reactos?rev=25411&view=rev
Log: - Commit NTLPC and remove old implementation. - Yeah, this adds another regression on top of the new Ob stuff, but in the end it's for the better, as it removes more race conditions and buggy code. - This whole week I've fixed about 45 bugs and removed a dozen race conditions, sorry for the 2-3 regressions, they will be fixed ASAP. - DELETE MAKEFILE.AUTO BEFORE BUILDING THIS BUILD. Added: trunk/reactos/ntoskrnl/include/internal/lpc_x.h Removed: trunk/reactos/ntoskrnl/lpc/ntlpc/ trunk/reactos/ntoskrnl/lpc/query.c trunk/reactos/ntoskrnl/lpc/queue.c trunk/reactos/ntoskrnl/lpc/receive.c Modified: trunk/reactos/config.template.rbuild trunk/reactos/ntoskrnl/include/internal/lpc.h trunk/reactos/ntoskrnl/lpc/close.c trunk/reactos/ntoskrnl/lpc/complete.c trunk/reactos/ntoskrnl/lpc/connect.c trunk/reactos/ntoskrnl/lpc/create.c trunk/reactos/ntoskrnl/lpc/listen.c trunk/reactos/ntoskrnl/lpc/port.c trunk/reactos/ntoskrnl/lpc/reply.c trunk/reactos/ntoskrnl/lpc/send.c trunk/reactos/ntoskrnl/ntoskrnl.rbuild trunk/reactos/ntoskrnl/ob/obhandle.c [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/config.template.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/config.template.rbuild?rev…
Modified: trunk/reactos/ntoskrnl/include/internal/lpc.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
Added: trunk/reactos/ntoskrnl/include/internal/lpc_x.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
Modified: trunk/reactos/ntoskrnl/lpc/close.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/close.c?rev=2…
Modified: trunk/reactos/ntoskrnl/lpc/complete.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/complete.c?re…
Modified: trunk/reactos/ntoskrnl/lpc/connect.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/connect.c?rev…
Modified: trunk/reactos/ntoskrnl/lpc/create.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/create.c?rev=…
Modified: trunk/reactos/ntoskrnl/lpc/listen.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/listen.c?rev=…
Modified: trunk/reactos/ntoskrnl/lpc/port.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/port.c?rev=25…
Removed: trunk/reactos/ntoskrnl/lpc/query.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/query.c?rev=2…
Removed: trunk/reactos/ntoskrnl/lpc/queue.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/queue.c?rev=2…
Removed: trunk/reactos/ntoskrnl/lpc/receive.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/receive.c?rev…
Modified: trunk/reactos/ntoskrnl/lpc/reply.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/reply.c?rev=2…
Modified: trunk/reactos/ntoskrnl/lpc/send.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/lpc/send.c?rev=25…
Modified: trunk/reactos/ntoskrnl/ntoskrnl.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl.rbuild?r…
Modified: trunk/reactos/ntoskrnl/ob/obhandle.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obhandle.c?rev…
17 years, 11 months
1
0
0
0
[tkreuzer] 25410: Make NtUserSetFocus accept NULL window.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Wed Jan 10 07:23:33 2007 New Revision: 25410 URL:
http://svn.reactos.org/svn/reactos?rev=25410&view=rev
Log: Make NtUserSetFocus accept NULL window. Modified: trunk/reactos/subsystems/win32/win32k/ntuser/focus.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/focus.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/focus.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/focus.c Wed Jan 10 07:23:33 2007 @@ -304,27 +304,37 @@ static HWND FASTCALL -co_IntSetFocusWindow(PWINDOW_OBJECT Window) +co_IntSetFocusWindow(PWINDOW_OBJECT Window OPTIONAL) { HWND hWndPrev = 0; PUSER_MESSAGE_QUEUE ThreadQueue; - ASSERT_REFS_CO(Window); + if (Window) + ASSERT_REFS_CO(Window); ThreadQueue = (PUSER_MESSAGE_QUEUE)PsGetCurrentThreadWin32Thread()->MessageQueue; ASSERT(ThreadQueue != 0); hWndPrev = ThreadQueue->FocusWindow; - if (hWndPrev == Window->hSelf) - { - return hWndPrev; - } - - ThreadQueue->FocusWindow = Window->hSelf; - - co_IntSendKillFocusMessages(hWndPrev, Window->hSelf); - co_IntSendSetFocusMessages(hWndPrev, Window->hSelf); - + + if (Window != 0) + { + if (hWndPrev == Window->hSelf) + { + return hWndPrev; + } + + ThreadQueue->FocusWindow = Window->hSelf; + + co_IntSendKillFocusMessages(hWndPrev, Window->hSelf); + co_IntSendSetFocusMessages(hWndPrev, Window->hSelf); + } + else + { + ThreadQueue->FocusWindow = 0; + + co_IntSendKillFocusMessages(hWndPrev, 0); + } return hWndPrev; } @@ -562,16 +572,23 @@ DPRINT("Enter NtUserSetFocus(%x)\n", hWnd); UserEnterExclusive(); - if (!(Window = UserGetWindowObject(hWnd))) - { - RETURN(NULL); - } - - UserRefObjectCo(Window, &Ref); - ret = co_UserSetFocus(Window); - UserDerefObjectCo(Window); + if (hWnd) + { + if (!(Window = UserGetWindowObject(hWnd))) + { + RETURN(NULL); + } + + UserRefObjectCo(Window, &Ref); + ret = co_UserSetFocus(Window); + UserDerefObjectCo(Window); - RETURN(ret); + RETURN(ret); + } + else + { + RETURN( co_UserSetFocus(0)); + } CLEANUP: DPRINT("Leave NtUserSetFocus, ret=%i\n",_ret_);
17 years, 11 months
1
0
0
0
[jimtabor] 25409: Should be 7 zeros not 6.
by jimtabor@svn.reactos.org
Author: jimtabor Date: Wed Jan 10 06:42:10 2007 New Revision: 25409 URL:
http://svn.reactos.org/svn/reactos?rev=25409&view=rev
Log: Should be 7 zeros not 6. Modified: trunk/reactos/subsystems/win32/win32k/include/input.h Modified: trunk/reactos/subsystems/win32/win32k/include/input.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/input.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/input.h Wed Jan 10 06:42:10 2007 @@ -18,8 +18,8 @@ PKBDRVFILE pkbdf; } KBL, *PKBL; -#define KBL_UNLOADED 0x2000000 -#define KBL_RESET 0x4000000 +#define KBL_UNLOADED 0x20000000 +#define KBL_RESET 0x40000000 NTSTATUS FASTCALL InitInputImpl(VOID);
17 years, 11 months
1
0
0
0
[ion] 25408: - Implement ObReferenceProcessHandleTable and ObDereferenceProcessHandleTable and use them where appropriate to avoid race issues if the process is being killed meanwhile. - Implement ObpReferenceProcessObjectByHandle and simplfy ObDuplicateObject. - Disable hard errors while closing handles, and protect against races. Also print our error message since it seems handles aren't being closed now (message displays leak count). - Honour DUPLICATE_CLOSE_SOURCE during failure paths in ObD
by ion@svn.reactos.org
Author: ion Date: Wed Jan 10 06:35:59 2007 New Revision: 25408 URL:
http://svn.reactos.org/svn/reactos?rev=25408&view=rev
Log: - Implement ObReferenceProcessHandleTable and ObDereferenceProcessHandleTable and use them where appropriate to avoid race issues if the process is being killed meanwhile. - Implement ObpReferenceProcessObjectByHandle and simplfy ObDuplicateObject. - Disable hard errors while closing handles, and protect against races. Also print our error message since it seems handles aren't being closed now (message displays leak count). - Honour DUPLICATE_CLOSE_SOURCE during failure paths in ObDuplicateObject, and catch race conditions. - Add some more sanity checks and speed up some internal referencing. Modified: trunk/reactos/ntoskrnl/KrnlFun.c trunk/reactos/ntoskrnl/include/internal/ob.h trunk/reactos/ntoskrnl/ob/obhandle.c trunk/reactos/ntoskrnl/ob/obref.c Modified: trunk/reactos/ntoskrnl/KrnlFun.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/KrnlFun.c?rev=254…
============================================================================== --- trunk/reactos/ntoskrnl/KrnlFun.c (original) +++ trunk/reactos/ntoskrnl/KrnlFun.c Wed Jan 10 06:35:59 2007 @@ -7,11 +7,6 @@ // Do NOT complain about it. // Do NOT ask when it will be fixed. // Failure to respect this will *ACHIEVE NOTHING*. -// -// -// Ob: -// - Add Directory Lock. -// - Add Object Table Referencing. // // Ex: // - Fixup existing code that talks to Ke. Modified: trunk/reactos/ntoskrnl/include/internal/ob.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/ob.h (original) +++ trunk/reactos/ntoskrnl/include/internal/ob.h Wed Jan 10 06:35:59 2007 @@ -171,6 +171,18 @@ IN PEPROCESS Process ); +PHANDLE_TABLE +NTAPI +ObReferenceProcessHandleTable( + IN PEPROCESS Process +); + +VOID +NTAPI +ObDereferenceProcessHandleTable( + IN PEPROCESS Process +); + VOID NTAPI ObKillProcess( Modified: trunk/reactos/ntoskrnl/ob/obhandle.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obhandle.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obhandle.c (original) +++ trunk/reactos/ntoskrnl/ob/obhandle.c Wed Jan 10 06:35:59 2007 @@ -22,6 +22,165 @@ #define TAG_OB_HANDLE TAG('O', 'b', 'H', 'd') /* PRIVATE FUNCTIONS *********************************************************/ + +PHANDLE_TABLE +NTAPI +ObReferenceProcessHandleTable(IN PEPROCESS Process) +{ + PHANDLE_TABLE HandleTable = NULL; + + /* Lock the process */ + if (ExAcquireRundownProtection(&Process->RundownProtect)) + { + /* Get the handle table */ + HandleTable = Process->ObjectTable; + if (!HandleTable) + { + /* No table, release the lock */ + ExReleaseRundownProtection(&Process->RundownProtect); + } + } + + /* Return the handle table */ + return HandleTable; +} + +VOID +NTAPI +ObDereferenceProcessHandleTable(IN PEPROCESS Process) +{ + /* Release the process lock */ + ExReleaseRundownProtection(&Process->RundownProtect); +} + +NTSTATUS +NTAPI +ObpReferenceProcessObjectByHandle(IN HANDLE Handle, + IN PEPROCESS Process, + IN PHANDLE_TABLE HandleTable, + IN KPROCESSOR_MODE AccessMode, + OUT PVOID *Object, + OUT POBJECT_HANDLE_INFORMATION HandleInformation) +{ + PHANDLE_TABLE_ENTRY HandleEntry; + POBJECT_HEADER ObjectHeader; + ACCESS_MASK GrantedAccess; + ULONG Attributes; + PEPROCESS CurrentProcess; + PETHREAD CurrentThread; + NTSTATUS Status; + PAGED_CODE(); + + /* Assume failure */ + *Object = NULL; + + /* Check if the caller wants the current process */ + if (Handle == NtCurrentProcess()) + { + /* Get the current process */ + CurrentProcess = PsGetCurrentProcess(); + + /* Check if the caller wanted handle information */ + if (HandleInformation) + { + /* Return it */ + HandleInformation->HandleAttributes = 0; + HandleInformation->GrantedAccess = Process->GrantedAccess; + } + + /* Reference ourselves */ + ObjectHeader = OBJECT_TO_OBJECT_HEADER(CurrentProcess); + InterlockedExchangeAdd(&ObjectHeader->PointerCount, 1); + + /* Return the pointer */ + *Object = CurrentProcess; + return STATUS_SUCCESS; + } + + /* Check if the caller wants the current thread */ + if (Handle == NtCurrentThread()) + { + /* Get the current thread */ + CurrentThread = PsGetCurrentThread(); + + /* Check if the caller wanted handle information */ + if (HandleInformation) + { + /* Return it */ + HandleInformation->HandleAttributes = 0; + HandleInformation->GrantedAccess = CurrentThread->GrantedAccess; + } + + /* Reference ourselves */ + ObjectHeader = OBJECT_TO_OBJECT_HEADER(CurrentThread); + InterlockedExchangeAdd(&ObjectHeader->PointerCount, 1); + + /* Return the pointer */ + *Object = CurrentThread; + return STATUS_SUCCESS; + } + + /* Check if this is a kernel handle */ + if (ObIsKernelHandle(Handle, AccessMode)) + { + /* Use the kernel handle table and get the actual handle value */ + Handle = ObKernelHandleToHandle(Handle); + HandleTable = ObpKernelHandleTable; + } + else + { + /* Otherwise use this process's handle table */ + HandleTable = PsGetCurrentProcess()->ObjectTable; + } + + /* Enter a critical region while we touch the handle table */ + ASSERT(HandleTable != NULL); + KeEnterCriticalRegion(); + + /* Get the handle entry */ + HandleEntry = ExMapHandleToPointer(HandleTable, Handle); + if (HandleEntry) + { + /* Get the object header and validate the type*/ + ObjectHeader = EX_HTE_TO_HDR(HandleEntry); + + /* Get the granted access and validate it */ + GrantedAccess = HandleEntry->GrantedAccess; + + /* Mask out the internal attributes */ + Attributes = HandleEntry->ObAttributes & + (EX_HANDLE_ENTRY_PROTECTFROMCLOSE | + EX_HANDLE_ENTRY_INHERITABLE | + EX_HANDLE_ENTRY_AUDITONCLOSE); + + /* Fill out the information */ + HandleInformation->HandleAttributes = Attributes; + HandleInformation->GrantedAccess = GrantedAccess; + + /* Return the pointer */ + *Object = &ObjectHeader->Body; + + /* Add a reference */ + InterlockedExchangeAdd(&ObjectHeader->PointerCount, 1); + + /* Unlock the handle */ + ExUnlockHandleTableEntry(HandleTable, HandleEntry); + KeLeaveCriticalRegion(); + + /* Return success */ + ASSERT(*Object != NULL); + return STATUS_SUCCESS; + } + else + { + /* Invalid handle */ + Status = STATUS_INVALID_HANDLE; + } + + /* Return failure status */ + KeLeaveCriticalRegion(); + return Status; +} BOOLEAN NTAPI @@ -1741,11 +1900,15 @@ /* Check if we have a parent */ if (Parent) { + /* Get the parent's table */ + HandleTable = ObReferenceProcessHandleTable(Parent); + if (!HandleTable) return STATUS_PROCESS_IS_TERMINATING; + /* Duplicate the parent's */ HandleTable = ExDupHandleTable(Process, ObpDuplicateHandleCallback, NULL, - Parent->ObjectTable); + HandleTable); } else { @@ -1753,11 +1916,14 @@ HandleTable = ExCreateHandleTable(Process); } - /* Now write it and make sure we got one */ + /* Now write it */ Process->ObjectTable = HandleTable; + + /* Dereference the parent's handle table if we have one */ + if (Parent) ObDereferenceProcessHandleTable(Parent); + + /* Fail or succeed depending on whether we got a handle table or not */ if (!HandleTable) return STATUS_INSUFFICIENT_RESOURCES; - - /* If we got here then the table was created OK */ return STATUS_SUCCESS; } @@ -1778,9 +1944,20 @@ NTAPI ObKillProcess(IN PEPROCESS Process) { - PHANDLE_TABLE HandleTable = Process->ObjectTable; + PHANDLE_TABLE HandleTable; OBP_CLOSE_HANDLE_CONTEXT Context; + BOOLEAN HardErrors; PAGED_CODE(); + + /* Wait for process rundown */ + ExWaitForRundownProtectionRelease(&Process->RundownProtect); + + /* Get the object table */ + HandleTable = Process->ObjectTable; + if (!HandleTable) return; + + /* Disable hard errors while we close handles */ + HardErrors = IoSetThreadHardErrorMode(FALSE); /* Enter a critical region */ KeEnterCriticalRegion(); @@ -1793,13 +1970,20 @@ ExSweepHandleTable(HandleTable, ObpCloseHandleCallback, &Context); - - /* Destroy the table and leave the critical region */ + if (HandleTable->HandleCount != 0) + { + DPRINT1("FIXME: %d handles remain!\n", HandleTable->HandleCount); + } + + /* Leave the critical region */ + KeLeaveCriticalRegion(); + + /* Re-enable hard errors */ + IoSetThreadHardErrorMode(HardErrors); + + /* Destroy the object table */ + Process->ObjectTable = NULL; ExDestroyHandleTable(HandleTable); - KeLeaveCriticalRegion(); - - /* Clear the object table */ - Process->ObjectTable = NULL; } NTSTATUS @@ -1820,12 +2004,12 @@ POBJECT_TYPE ObjectType; HANDLE NewHandle; KAPC_STATE ApcState; - NTSTATUS Status = STATUS_SUCCESS; + NTSTATUS Status; ACCESS_MASK TargetAccess, SourceAccess; ACCESS_STATE AccessState; PACCESS_STATE PassedAccessState = NULL; AUX_DATA AuxData; - PHANDLE_TABLE HandleTable = NULL; + PHANDLE_TABLE HandleTable; OBJECT_HANDLE_INFORMATION HandleInformation; PAGED_CODE(); OBTRACE(OB_HANDLE_DEBUG, @@ -1835,32 +2019,77 @@ SourceProcess, TargetProcess); - /* Check if we're not in the source process */ - if (SourceProcess != PsGetCurrentProcess()) - { - /* Attach to it */ - KeStackAttachProcess(&SourceProcess->Pcb, &ApcState); - AttachedToProcess = TRUE; - } - - /* Now reference the source handle */ - Status = ObReferenceObjectByHandle(SourceHandle, - 0, - NULL, - PreviousMode, - (PVOID*)&SourceObject, - &HandleInformation); - - /* Check if we were attached */ - if (AttachedToProcess) - { - /* We can safely detach now */ - KeUnstackDetachProcess(&ApcState); - AttachedToProcess = FALSE; - } - - /* Fail if we couldn't reference it */ - if (!NT_SUCCESS(Status)) return Status; + /* Check if we're not duplicating the same access */ + if (!(Options & DUPLICATE_SAME_ACCESS)) + { + /* Validate the desired access */ + Status = STATUS_SUCCESS; //ObpValidateDesiredAccess(DesiredAccess); + if (!NT_SUCCESS(Status)) return Status; + } + + /* Reference the object table */ + HandleTable = ObReferenceProcessHandleTable(SourceProcess); + if (!HandleTable) return STATUS_PROCESS_IS_TERMINATING; + + /* Reference the process object */ + Status = ObpReferenceProcessObjectByHandle(SourceHandle, + 0, + HandleTable, + PreviousMode, + &SourceObject, + &HandleInformation); + if (!NT_SUCCESS(Status)) + { + /* Fail */ + ObDereferenceProcessHandleTable(SourceProcess); + return Status; + } + + /* Check if there's no target process */ + if (!TargetProcess) + { + /* Check if the caller wanted actual duplication */ + if (!(Options & DUPLICATE_CLOSE_SOURCE)) + { + /* Invalid request */ + Status = STATUS_INVALID_PARAMETER; + } + else + { + /* Otherwise, do the attach */ + KeStackAttachProcess(&SourceProcess->Pcb, &ApcState); + + /* Close the handle and detach */ + NtClose(SourceHandle); + KeUnstackDetachProcess(&ApcState); + } + + /* Return */ + ObDereferenceProcessHandleTable(SourceProcess); + ObDereferenceObject(SourceObject); + return Status; + } + + /* Get the target handle table */ + HandleTable = ObReferenceProcessHandleTable(TargetProcess); + if (!HandleTable) + { + /* Check if the caller wanted us to close the handle */ + if (Options & DUPLICATE_CLOSE_SOURCE) + { + /* Do the attach */ + KeStackAttachProcess(&SourceProcess->Pcb, &ApcState); + + /* Close the handle and detach */ + NtClose(SourceHandle); + KeUnstackDetachProcess(&ApcState); + } + + /* Return */ + ObDereferenceProcessHandleTable(SourceProcess); + ObDereferenceObject(SourceObject); + return STATUS_PROCESS_IS_TERMINATING; + } /* Get the source access */ SourceAccess = HandleInformation.GrantedAccess; @@ -1898,7 +2127,8 @@ if (DesiredAccess & GENERIC_ACCESS) { /* Map it */ - RtlMapGenericMask(&DesiredAccess, &ObjectType->TypeInfo.GenericMapping); + RtlMapGenericMask(&DesiredAccess, + &ObjectType->TypeInfo.GenericMapping); } /* Set the target access */ @@ -1940,9 +2170,6 @@ HandleAttributes, PsGetCurrentProcess(), ObDuplicateHandle); - - /* Set the handle table, now that we know this handle was added */ - HandleTable = PsGetCurrentProcess()->ObjectTable; } /* Check if we were attached */ @@ -1989,6 +2216,10 @@ /* Return the handle */ if (TargetHandle) *TargetHandle = NewHandle; + + /* Dereference handle tables */ + ObDereferenceProcessHandleTable(SourceProcess); + ObDereferenceProcessHandleTable(TargetProcess); /* Return status */ OBTRACE(OB_HANDLE_DEBUG, Modified: trunk/reactos/ntoskrnl/ob/obref.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obref.c?rev=25…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obref.c (original) +++ trunk/reactos/ntoskrnl/ob/obref.c Wed Jan 10 06:35:59 2007 @@ -478,8 +478,8 @@ NTSTATUS Status; PAGED_CODE(); - /* Fail immediately if the handle is NULL */ - if (!Handle) return STATUS_INVALID_HANDLE; + /* Assume failure */ + *Object = NULL; /* Check if the caller wants the current process */ if ((Handle == NtCurrentProcess()) && @@ -488,9 +488,6 @@ /* Get the current process */ CurrentProcess = PsGetCurrentProcess(); - /* Reference ourselves */ - ObReferenceObject(CurrentProcess); - /* Check if the caller wanted handle information */ if (HandleInformation) { @@ -499,6 +496,10 @@ HandleInformation->GrantedAccess = PROCESS_ALL_ACCESS; } + /* Reference ourselves */ + ObjectHeader = OBJECT_TO_OBJECT_HEADER(CurrentProcess); + InterlockedExchangeAdd(&ObjectHeader->PointerCount, 1); + /* Return the pointer */ *Object = CurrentProcess; return STATUS_SUCCESS; @@ -516,9 +517,6 @@ /* Get the current thread */ CurrentThread = PsGetCurrentThread(); - /* Reference ourselves */ - ObReferenceObject(CurrentThread); - /* Check if the caller wanted handle information */ if (HandleInformation) { @@ -527,6 +525,10 @@ HandleInformation->GrantedAccess = THREAD_ALL_ACCESS; } + /* Reference ourselves */ + ObjectHeader = OBJECT_TO_OBJECT_HEADER(CurrentThread); + InterlockedExchangeAdd(&ObjectHeader->PointerCount, 1); + /* Return the pointer */ *Object = CurrentThread; return STATUS_SUCCESS; @@ -551,6 +553,7 @@ } /* Enter a critical region while we touch the handle table */ + ASSERT(HandleTable != NULL); KeEnterCriticalRegion(); /* Get the handle entry */ @@ -588,9 +591,10 @@ /* Unlock the handle */ ExUnlockHandleTableEntry(HandleTable, HandleEntry); + KeLeaveCriticalRegion(); /* Return success */ - KeLeaveCriticalRegion(); + ASSERT(*Object != NULL); return STATUS_SUCCESS; } else
17 years, 11 months
1
0
0
0
[ion] 25407: - Fix a bug in ExfWakePushLock. - Implement object directory locking to avoid race conditions in Ob and enable most of the query referencing code.
by ion@svn.reactos.org
Author: ion Date: Wed Jan 10 04:00:46 2007 New Revision: 25407 URL:
http://svn.reactos.org/svn/reactos?rev=25407&view=rev
Log: - Fix a bug in ExfWakePushLock. - Implement object directory locking to avoid race conditions in Ob and enable most of the query referencing code. Modified: trunk/reactos/ntoskrnl/ex/pushlock.c trunk/reactos/ntoskrnl/include/internal/ob_x.h trunk/reactos/ntoskrnl/ob/obdir.c trunk/reactos/ntoskrnl/ob/obhandle.c trunk/reactos/ntoskrnl/ob/obinit.c trunk/reactos/ntoskrnl/ob/oblife.c trunk/reactos/ntoskrnl/ob/obname.c trunk/reactos/ntoskrnl/ob/obref.c Modified: trunk/reactos/ntoskrnl/ex/pushlock.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/pushlock.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ex/pushlock.c (original) +++ trunk/reactos/ntoskrnl/ex/pushlock.c Wed Jan 10 04:00:46 2007 @@ -97,7 +97,7 @@ OldValue = NewValue; /* Check if it's still locked */ - if (OldValue.Locked) continue; + if (!OldValue.Locked) break; } } Modified: trunk/reactos/ntoskrnl/include/internal/ob_x.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
============================================================================== --- trunk/reactos/ntoskrnl/include/internal/ob_x.h (original) +++ trunk/reactos/ntoskrnl/include/internal/ob_x.h Wed Jan 10 04:00:46 2007 @@ -51,7 +51,7 @@ VOID FORCEINLINE -_ObpDecrementQueryReference(IN POBJECT_HEADER_NAME_INFO HeaderNameInfo) +ObpDecrementQueryReference(IN POBJECT_HEADER_NAME_INFO HeaderNameInfo) { POBJECT_DIRECTORY Directory; @@ -79,7 +79,7 @@ VOID FORCEINLINE -_ObpAcquireDirectoryLockShared(IN POBJECT_DIRECTORY Directory, +ObpAcquireDirectoryLockShared(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context) { /* It's not, set lock flag */ @@ -95,7 +95,7 @@ VOID FORCEINLINE -_ObpAcquireDirectoryLockExclusive(IN POBJECT_DIRECTORY Directory, +ObpAcquireDirectoryLockExclusive(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context) { /* Update lock flag */ @@ -115,7 +115,7 @@ VOID FORCEINLINE -_ObpReleaseDirectoryLock(IN POBJECT_DIRECTORY Directory, +ObpReleaseDirectoryLock(IN POBJECT_DIRECTORY Directory, IN POBP_LOOKUP_CONTEXT Context) { /* Release the lock */ @@ -126,7 +126,7 @@ VOID FORCEINLINE -_ObpInitializeDirectoryLookup(IN POBP_LOOKUP_CONTEXT Context) +ObpInitializeDirectoryLookup(IN POBP_LOOKUP_CONTEXT Context) { /* Initialize a null context */ Context->Object = NULL; @@ -137,7 +137,7 @@ VOID FORCEINLINE -_ObpReleaseLookupContextObject(IN POBP_LOOKUP_CONTEXT Context) +ObpReleaseLookupContextObject(IN POBP_LOOKUP_CONTEXT Context) { POBJECT_HEADER ObjectHeader; POBJECT_HEADER_NAME_INFO HeaderNameInfo; @@ -150,7 +150,7 @@ HeaderNameInfo = OBJECT_HEADER_TO_NAME_INFO(ObjectHeader); /* Check if we do have name information */ - if (HeaderNameInfo) _ObpDecrementQueryReference(HeaderNameInfo); + if (HeaderNameInfo) ObpDecrementQueryReference(HeaderNameInfo); /* Dereference the object */ ObDereferenceObject(Context->Object); @@ -160,60 +160,20 @@ VOID FORCEINLINE -_ObpCleanupDirectoryLookup(IN POBP_LOOKUP_CONTEXT Context) +ObpCleanupDirectoryLookup(IN POBP_LOOKUP_CONTEXT Context) { /* Check if we came back with the directory locked */ if (Context->DirectoryLocked) { /* Release the lock */ - _ObpReleaseDirectoryLock(Context->Directory, Context); + ObpReleaseDirectoryLock(Context->Directory, Context); } /* Clear the context */ Context->Directory = NULL; Context->DirectoryLocked = FALSE; - _ObpReleaseLookupContextObject(Context); -} - -#if _OB_DEBUG_ -#define ObpAcquireDirectoryLockShared(a, b) \ -{ \ - DbgPrint("OB QUERY: Acquiring lock at %s %d\n", __FUNCTION__, __LINE__);\ - _ObpAcquireDirectoryLockShared(a, b); \ -} -#define ObpAcquireDirectoryLockExclusive(a, b) \ -{ \ - DbgPrint("OB QUERY: Acquiring lock at %s %d\n", __FUNCTION__, __LINE__);\ - _ObpAcquireDirectoryLockExclusive(a, b); \ -} -#define ObpReleaseDirectoryLock(a, b) \ -{ \ - DbgPrint("OB QUERY: Releasing lock at %s %d\n", __FUNCTION__, __LINE__);\ - _ObpReleaseDirectoryLock(a, b); \ -} -#define ObpInitializeDirectoryLookup(a) \ -{ \ - DbgPrint("OB QUERY: Initialization at %s %d\n", __FUNCTION__, __LINE__);\ - _ObpInitializeDirectoryLookup(a); \ -} -#define ObpCleanupDirectoryLookup(a, b) \ -{ \ - DbgPrint("OB QUERY: Cleanup at %s %d\n", __FUNCTION__, __LINE__); \ - _ObpCleanupDirectoryLookup(a, b); \ -} -#define ObpDecrementQueryReference(a) \ -{ \ - DbgPrint("OB QUERY: Decrement at %s %d\n", __FUNCTION__, __LINE__); \ - _ObpDecrementQueryReference(a); \ -} -#else -#define ObpDecrementQueryReference _ObpDecrementQueryReference -#define ObpAcquireDirectoryLockExclusive _ObpAcquireDirectoryLockExclusive -#define ObpAcquireDirectoryLockShared _ObpAcquireDirectoryLockShared -#define ObpReleaseDirectoryLock _ObpReleaseDirectoryLock -#define ObpInitializeDirectoryLookup _ObpInitializeDirectoryLookup -#define ObpCleanupDirectoryLookup _ObpCleanupDirectoryLookup -#endif + ObpReleaseLookupContextObject(Context); +} VOID FORCEINLINE Modified: trunk/reactos/ntoskrnl/ob/obdir.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obdir.c?rev=25…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obdir.c (original) +++ trunk/reactos/ntoskrnl/ob/obdir.c Wed Jan 10 04:00:46 2007 @@ -247,11 +247,11 @@ if (HeaderNameInfo) { /* Add a query reference */ - //ObpIncrementQueryReference(ObjectHeader, HeaderNameInfo); + ObpIncrementQueryReference(ObjectHeader, HeaderNameInfo); } /* Reference the object being looked up */ - //ObReferenceObject(FoundObject); + ObReferenceObject(FoundObject); /* Check if the directory was locked */ if (!Context->DirectoryLocked) @@ -282,7 +282,7 @@ if (Context->Object) { /* We already did a lookup, so remove this object's query reference */ - //ObpRemoveQueryReference(Context->Object); + //ObpDecrementQueryReference(Context->Object); } /* Return the object we found */ Modified: trunk/reactos/ntoskrnl/ob/obhandle.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obhandle.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obhandle.c (original) +++ trunk/reactos/ntoskrnl/ob/obhandle.c Wed Jan 10 04:00:46 2007 @@ -1249,7 +1249,7 @@ if ((Type) && (ObjectType != Type)) { /* They don't, cleanup */ - //if (Context) ObpCleanupDirectoryLookup(Context); + if (Context) ObpCleanupDirectoryLookup(Context); return STATUS_OBJECT_TYPE_MISMATCH; } @@ -1287,7 +1287,7 @@ * We failed (meaning security failure, according to NT Internals) * detach and return */ - //if (Context) ObpCleanupDirectoryLookup(Context); + if (Context) ObpCleanupDirectoryLookup(Context); if (AttachedToProcess) KeUnstackDetachProcess(&ApcState); return Status; } @@ -1327,8 +1327,7 @@ } /* Now we can release the object */ - //if (Context) ObpCleanupDirectoryLookup(Context); - if (Context) Context->Object = NULL; + if (Context) ObpCleanupDirectoryLookup(Context); /* Save the object header */ NewEntry.Object = ObjectHeader; @@ -2117,8 +2116,7 @@ if (!NT_SUCCESS(Status)) { /* Cleanup after lookup */ - //ObpCleanupDirectoryLookup(&TempBuffer->LookupContext); - TempBuffer->LookupContext.Object = NULL; + ObpCleanupDirectoryLookup(&TempBuffer->LookupContext); goto Cleanup; } @@ -2152,8 +2150,7 @@ Status = STATUS_INVALID_PARAMETER; /* Cleanup after lookup */ - //ObpCleanupDirectoryLookup(&TempBuffer->LookupContext); - TempBuffer->LookupContext.Object = NULL; + ObpCleanupDirectoryLookup(&TempBuffer->LookupContext); } else { @@ -2589,6 +2586,9 @@ /* Check if anything until now failed */ if (!NT_SUCCESS(Status)) { + /* Cleanup after lookup */ + ObpCleanupDirectoryLookup(&Context); + /* Remove query reference that we added */ if (ObjectNameInfo) ObpDecrementQueryReference(ObjectNameInfo); @@ -2657,6 +2657,9 @@ /* Check if anything until now failed */ if (!NT_SUCCESS(Status)) { + /* Cleanup lookup context */ + ObpCleanupDirectoryLookup(&Context); + /* Remove query reference that we added */ if (ObjectNameInfo) ObpDecrementQueryReference(ObjectNameInfo); Modified: trunk/reactos/ntoskrnl/ob/obinit.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obinit.c?rev=2…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obinit.c (original) +++ trunk/reactos/ntoskrnl/ob/obinit.c Wed Jan 10 04:00:46 2007 @@ -282,10 +282,7 @@ ObpInitializeDirectoryLookup(&Context); /* Lock it */ - //ObpAcquireDirectoryLockExclusive(ObpTypeDirectoryObject, &Context); - Context.Directory = ObpTypeDirectoryObject; - Context.DirectoryLocked = TRUE; - Context.LockStateSignature = 0xCCCC1234; + ObpAcquireDirectoryLockExclusive(ObpTypeDirectoryObject, &Context); /* Loop the object types */ ListHead = &ObTypeObjectType->TypeList; @@ -323,8 +320,7 @@ } /* Cleanup after lookup */ - //ObpCleanupDirectoryLookup(&Context); - Context.Object = NULL; + ObpCleanupDirectoryLookup(&Context); /* Initialize DOS Devices Directory and related Symbolic Links */ Status = ObpCreateDosDevicesDirectory(); Modified: trunk/reactos/ntoskrnl/ob/oblife.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/oblife.c?rev=2…
============================================================================== --- trunk/reactos/ntoskrnl/ob/oblife.c (original) +++ trunk/reactos/ntoskrnl/ob/oblife.c Wed Jan 10 04:00:46 2007 @@ -965,10 +965,7 @@ if (ObpTypeDirectoryObject) { /* Acquire the directory lock */ - //ObpAcquireDirectoryLockExclusive(ObpTypeDirectoryObject, &Context); - Context.Directory = ObpTypeDirectoryObject; - Context.DirectoryLocked = TRUE; - Context.LockStateSignature = 0xCCCC1234; + ObpAcquireDirectoryLockExclusive(ObpTypeDirectoryObject, &Context); /* Do the lookup */ if (ObpLookupEntryDirectory(ObpTypeDirectoryObject, @@ -978,7 +975,7 @@ &Context)) { /* We have already created it, so fail */ - Context.Object = NULL; + ObpCleanupDirectoryLookup(&Context); return STATUS_OBJECT_NAME_COLLISION; } } @@ -990,7 +987,7 @@ if (!ObjectName.Buffer) { /* Out of memory, fail */ - Context.Object = NULL; + ObpCleanupDirectoryLookup(&Context); return STATUS_INSUFFICIENT_RESOURCES; } @@ -1007,9 +1004,8 @@ (POBJECT_HEADER*)&Header); if (!NT_SUCCESS(Status)) { - Context.Object = NULL; - /* Free the name and fail */ + ObpCleanupDirectoryLookup(&Context); ExFreePool(ObjectName.Buffer); return Status; } @@ -1138,7 +1134,8 @@ ObReferenceObject(ObpTypeDirectoryObject); } - Context.Object = NULL; + /* Cleanup the lookup context */ + ObpCleanupDirectoryLookup(&Context); /* Return the object type and success */ *ObjectType = LocalObjectType; @@ -1146,7 +1143,7 @@ } /* If we got here, then we failed */ - Context.Object = NULL; + ObpCleanupDirectoryLookup(&Context); return STATUS_INSUFFICIENT_RESOURCES; } Modified: trunk/reactos/ntoskrnl/ob/obname.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obname.c?rev=2…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obname.c (original) +++ trunk/reactos/ntoskrnl/ob/obname.c Wed Jan 10 04:00:46 2007 @@ -191,16 +191,14 @@ if (!(ObjectHeader->HandleCount) && (ObjectNameInfo) && (ObjectNameInfo->Name.Length) && + (ObjectNameInfo->Directory) && !(ObjectHeader->Flags & OB_FLAG_PERMANENT)) { /* Setup a lookup context */ ObpInitializeDirectoryLookup(&Context); /* Lock the directory */ - //ObpAcquireDirectoryLockExclusive(ObjectNameInfo->Directory, &Context); - Context.Directory = ObjectNameInfo->Directory; - Context.DirectoryLocked = TRUE; - Context.LockStateSignature = 0xCCCC1234; + ObpAcquireDirectoryLockExclusive(ObjectNameInfo->Directory, &Context); /* Do the lookup */ Object = ObpLookupEntryDirectory(ObjectNameInfo->Directory, @@ -253,8 +251,7 @@ } /* Cleanup after lookup */ - //ObpCleanupDirectoryLookup(&Context); - Context.Object = NULL; + ObpCleanupDirectoryLookup(&Context); /* Remove another query reference since we added one on top */ ObpDecrementQueryReference(ObjectNameInfo); @@ -573,10 +570,7 @@ if (InsertObject) { /* Lock the directory */ - //ObpAcquireDirectoryLockExclusive(Directory, LookupContext); - LookupContext->Directory = Directory; - LookupContext->DirectoryLocked = TRUE; - LookupContext->LockStateSignature = 0xCCCC1234; + ObpAcquireDirectoryLockExclusive(Directory, LookupContext); } } @@ -696,8 +690,7 @@ InterlockedExchangeAdd(&ObjectHeader->PointerCount, 1); /* Cleanup from the first lookup */ - //ObpCleanupDirectoryLookup(LookupContext); - LookupContext->Object = NULL; + ObpCleanupDirectoryLookup(LookupContext); /* Check if we have a referenced directory */ if (ReferencedDirectory) @@ -863,8 +856,7 @@ if (!NT_SUCCESS(Status)) { /* Cleanup after lookup */ - //ObpCleanupDirectoryLookup(LookupContext); - LookupContext->Object = NULL; + ObpCleanupDirectoryLookup(LookupContext); } /* Check if we have a device map and dereference it if so */ Modified: trunk/reactos/ntoskrnl/ob/obref.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obref.c?rev=25…
============================================================================== --- trunk/reactos/ntoskrnl/ob/obref.c (original) +++ trunk/reactos/ntoskrnl/ob/obref.c Wed Jan 10 04:00:46 2007 @@ -430,8 +430,7 @@ &Object); /* Cleanup after lookup */ - //ObpCleanupDirectoryLookup(&Context); - Context.Object = NULL; + ObpCleanupDirectoryLookup(&Context); /* Check if the lookup succeeded */ if (NT_SUCCESS(Status))
17 years, 11 months
1
0
0
0
[ekohl] 25406: - Add currency page controls. - Display currency format information.
by ekohl@svn.reactos.org
Author: ekohl Date: Wed Jan 10 02:00:21 2007 New Revision: 25406 URL:
http://svn.reactos.org/svn/reactos?rev=25406&view=rev
Log: - Add currency page controls. - Display currency format information. Modified: trunk/reactos/dll/cpl/intl/Fr.rc trunk/reactos/dll/cpl/intl/Ja.rc trunk/reactos/dll/cpl/intl/currency.c trunk/reactos/dll/cpl/intl/cz.rc trunk/reactos/dll/cpl/intl/de.rc trunk/reactos/dll/cpl/intl/en.rc trunk/reactos/dll/cpl/intl/es.rc trunk/reactos/dll/cpl/intl/hu.rc trunk/reactos/dll/cpl/intl/nl.rc trunk/reactos/dll/cpl/intl/resource.h trunk/reactos/dll/cpl/intl/ru.rc trunk/reactos/dll/cpl/intl/sv.rc trunk/reactos/dll/cpl/intl/uk.rc Modified: trunk/reactos/dll/cpl/intl/Fr.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/Fr.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/Fr.rc (original) +++ trunk/reactos/dll/cpl/intl/Fr.rc Wed Jan 10 02:00:21 2007 @@ -1,82 +1,100 @@ /* French translation by Benoit Plante 2005 (cmoibenlepro AT hotmail DOT com) */ -LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL - -IDD_GENERALPAGE DIALOGEX 0, 0, 246, 188 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Général" -FONT 8, "MS Shell Dlg" -BEGIN - LTEXT "Page de propriétés 1",-1,73,74,90,8 -END - - -IDD_NUMBERSPAGE DIALOGEX 0, 0, 246, 188 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Nombres" -FONT 8, "MS Shell Dlg" -BEGIN - LTEXT "Page de propriétés 2",-1,73,74,90,8 -END - - -IDD_CURRENCYPAGE DIALOGEX 0, 0, 246, 188 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Devise" -FONT 8, "MS Shell Dlg" -BEGIN - LTEXT "Page de propriétés 3",-1,73,74,90,8 -END - - -IDD_TIMEPAGE DIALOGEX 0, 0, 246, 188 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Heure" -FONT 8, "MS Shell Dlg" -BEGIN - GROUPBOX "Apparence de l'heure", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE - LTEXT "Échantillon d'heure:", -1, 13, 21, 54, 10, WS_CHILD |WS_VISIBLE | WS_GROUP - EDITTEXT IDC_TIMESAMPLE, 68, 19, 84, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP - LTEXT "Format d'heure:", -1, 13, 52, 54, 10, WS_CHILD |WS_VISIBLE | WS_GROUP - COMBOBOX IDC_TIMEFORMAT, 68, 50, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP - LTEXT "&Séparateur des heures:", -1, 13, 70, 54, 10, WS_VISIBLE | WS_GROUP - COMBOBOX IDC_TIMESEPARATOR, 68, 68, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP - LTEXT "Symbole de l'avant-midi(A&M):", -1, 13, 88, 54, 10, WS_VISIBLE | WS_GROUP - COMBOBOX IDC_TIMEAMSYMBOL, 68, 86, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP - LTEXT "Symbole de l'après-midi(&PM):", -1, 13, 106, 54, 10, WS_VISIBLE | WS_GROUP - COMBOBOX IDC_TIMEPMSYMBOL, 68, 104, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP - GROUPBOX "", -1, 7, 124, 228, 60, WS_VISIBLE - LTEXT "Notation de l'heure\n\n\ -h = heure m = minute s = seconde t = AM ou PM\n\n\ -h = 12 heures H =24 heures \n\ -hh, mm, ss = Zéro de départ h, m, s = Pas de zéro de départ", - -1, 13, 133, 214, 47, WS_CHILD |WS_VISIBLE | WS_GROUP -END - - -IDD_DATEPAGE DIALOGEX 0, 0, 246, 188 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Date" -FONT 8, "MS Shell Dlg" -BEGIN - LTEXT "Page de propriétés 5",-1,73,74,90,8 -END - - -IDD_LOCALEPAGE DIALOGEX 0, 0, 246, 188 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Langues" -FONT 8, "MS Shell Dlg" -BEGIN - GROUPBOX "Langue principale", -1, 8, 11, 228, 74 - ICON IDC_FLAGS, IDC_ICON1, 12, 26, 21, 20, SS_ICON - LTEXT "Sélectionnez la langue principale que vous voulez utiliser:", -1, 38, 25, 193, 22 - COMBOBOX IDC_LANGUAGELIST, 39, 49, 191, 83, CBS_DROPDOWNLIST | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL -END - - -STRINGTABLE -BEGIN - IDS_CPLNAME "Options régionales" - IDS_CPLDESCRIPTION "Selectionner les langues, les formats de nombres, les devises, l'heure et la date." -END +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +IDD_GENERALPAGE DIALOGEX 0, 0, 246, 188 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Général" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Page de propriétés 1",-1,73,74,90,8 +END + + +IDD_NUMBERSPAGE DIALOGEX 0, 0, 246, 188 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Nombres" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Page de propriétés 2",-1,73,74,90,8 +END + + +IDD_CURRENCYPAGE DIALOGEX 0, 0, 246, 188 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Devise" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL +END + + +IDD_TIMEPAGE DIALOGEX 0, 0, 246, 188 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Heure" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Apparence de l'heure", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Échantillon d'heure:", -1, 13, 21, 54, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_TIMESAMPLE, 68, 19, 84, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Format d'heure:", -1, 13, 52, 54, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMEFORMAT, 68, 50, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "&Séparateur des heures:", -1, 13, 70, 54, 10, WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMESEPARATOR, 68, 68, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Symbole de l'avant-midi(A&M):", -1, 13, 88, 54, 10, WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMEAMSYMBOL, 68, 86, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Symbole de l'après-midi(&PM):", -1, 13, 106, 54, 10, WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMEPMSYMBOL, 68, 104, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "", -1, 7, 124, 228, 60, WS_VISIBLE + LTEXT "Notation de l'heure\n\n\ +h = heure m = minute s = seconde t = AM ou PM\n\n\ +h = 12 heures H =24 heures \n\ +hh, mm, ss = Zéro de départ h, m, s = Pas de zéro de départ", + -1, 13, 133, 214, 47, WS_CHILD |WS_VISIBLE | WS_GROUP +END + + +IDD_DATEPAGE DIALOGEX 0, 0, 246, 188 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Date" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Page de propriétés 5",-1,73,74,90,8 +END + + +IDD_LOCALEPAGE DIALOGEX 0, 0, 246, 188 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION +CAPTION "Langues" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Langue principale", -1, 8, 11, 228, 74 + ICON IDC_FLAGS, IDC_ICON1, 12, 26, 21, 20, SS_ICON + LTEXT "Sélectionnez la langue principale que vous voulez utiliser:", -1, 38, 25, 193, 22 + COMBOBOX IDC_LANGUAGELIST, 39, 49, 191, 83, CBS_DROPDOWNLIST | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL +END + + +STRINGTABLE +BEGIN + IDS_CPLNAME "Options régionales" + IDS_CPLDESCRIPTION "Selectionner les langues, les formats de nombres, les devises, l'heure et la date." +END Modified: trunk/reactos/dll/cpl/intl/Ja.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/Ja.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/Ja.rc (original) +++ trunk/reactos/dll/cpl/intl/Ja.rc Wed Jan 10 02:00:21 2007 @@ -23,7 +23,25 @@ CAPTION "ÊÝ" FONT 9, "MS UI Gothic" BEGIN - LTEXT "Property Page 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/currency.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/currency.c?re…
============================================================================== --- trunk/reactos/dll/cpl/intl/currency.c (original) +++ trunk/reactos/dll/cpl/intl/currency.c Wed Jan 10 02:00:21 2007 @@ -27,24 +27,305 @@ #include <windows.h> #include <commctrl.h> #include <cpl.h> +#include <tchar.h> #include "intl.h" #include "resource.h" + + +typedef struct _GLOBAL_DATA +{ + TCHAR szCurrencySymbol[6]; + TCHAR szDecimalSep[4]; + TCHAR szThousandSep[4]; + TCHAR szGrouping[10]; + + int PositiveOrder; + int NegativeOrder; + int NumDigits; + +} GLOBAL_DATA, *PGLOBAL_DATA; + + +static VOID +GetInitialCurrencyValues(PGLOBAL_DATA pGlobalData) +{ + TCHAR szBuffer[256]; + int ret; + + /* Get currency symbol */ + ret = GetLocaleInfo(LOCALE_USER_DEFAULT, + LOCALE_SCURRENCY, + pGlobalData->szCurrencySymbol, 6); + + /* Get positive format */ + ret = GetLocaleInfo(LOCALE_USER_DEFAULT, + LOCALE_ICURRENCY, + szBuffer, 256); + if (ret != 0) + { + pGlobalData->PositiveOrder = _ttoi(szBuffer); + } + + /* Get negative format */ + ret = GetLocaleInfo(LOCALE_USER_DEFAULT, + LOCALE_INEGCURR, + szBuffer, 256); + if (ret != 0) + { + pGlobalData->NegativeOrder = _ttoi(szBuffer); + } + + /* Get number of fractional digits */ + ret = GetLocaleInfo(LOCALE_USER_DEFAULT, + LOCALE_ICURRDIGITS, + szBuffer, 256); + if (ret != 0) + { + pGlobalData->NumDigits = _ttoi(szBuffer); + } + + /* Get decimal separator */ + ret = GetLocaleInfoW(LOCALE_USER_DEFAULT, + LOCALE_SMONDECIMALSEP, + pGlobalData->szDecimalSep, 4); + + /* Get group separator */ + ret = GetLocaleInfo(LOCALE_USER_DEFAULT, + LOCALE_SMONTHOUSANDSEP, + pGlobalData->szThousandSep, 4); + + /* Get grouping */ + ret = GetLocaleInfo(LOCALE_USER_DEFAULT, + LOCALE_SMONGROUPING, + pGlobalData->szGrouping, 10); + +} + + +static VOID +UpdateExamples(HWND hwndDlg, PGLOBAL_DATA pGlobalData) +{ + TCHAR szBuffer[256]; + CURRENCYFMT cyFmt; + + cyFmt.NumDigits = pGlobalData->NumDigits; + cyFmt.LeadingZero = 0; + cyFmt.Grouping = 3; + cyFmt.lpDecimalSep = pGlobalData->szDecimalSep; + cyFmt.lpThousandSep = pGlobalData->szThousandSep; + cyFmt.PositiveOrder = pGlobalData->PositiveOrder; + cyFmt.NegativeOrder = pGlobalData->NegativeOrder; + cyFmt.lpCurrencySymbol = pGlobalData->szCurrencySymbol; + + /* positive example */ + GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, + _T("123456789.00"), + &cyFmt, szBuffer, 256); + + SetDlgItemText(hwndDlg, + IDC_CURRENCYPOSSAMPLE, + szBuffer); + + /* negative example */ + GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, + _T("-123456789.00"), + &cyFmt, szBuffer, 256); + + SetDlgItemText(hwndDlg, + IDC_CURRENCYNEGSAMPLE, + szBuffer); +} + + +static VOID +OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData) +{ + TCHAR szBuffer[256]; + CURRENCYFMT cyFmt; + int i; + + GetInitialCurrencyValues(pGlobalData); + + /* Set currency symbol */ + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL), + CB_ADDSTRING, + 0, + (LPARAM)pGlobalData->szCurrencySymbol); + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYSYMBOL), + CB_SETCURSEL, + 0, /* index */ + 0); + + + /* positive currency values */ + cyFmt.NumDigits = pGlobalData->NumDigits; + cyFmt.LeadingZero = 0; + cyFmt.Grouping = 3; + cyFmt.lpDecimalSep = pGlobalData->szDecimalSep; + cyFmt.lpThousandSep = pGlobalData->szThousandSep; + cyFmt.NegativeOrder = 0; + cyFmt.lpCurrencySymbol = pGlobalData->szCurrencySymbol; + + for (i = 0; i < 4; i++) + { + cyFmt.PositiveOrder = i; + GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, + _T("1.1"), + &cyFmt, szBuffer, 256); + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSVALUE), + CB_INSERTSTRING, + -1, + (LPARAM)szBuffer); + } + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYPOSVALUE), + CB_SETCURSEL, + pGlobalData->PositiveOrder, + 0); + + /* negative currency values */ + cyFmt.PositiveOrder = 0; + for (i = 0; i < 16; i++) + { + cyFmt.NegativeOrder = i; + GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, + _T("-1.1"), + &cyFmt, szBuffer, 256); + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGVALUE), + CB_INSERTSTRING, + -1, + (LPARAM)szBuffer); + } + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYNEGVALUE), + CB_SETCURSEL, + pGlobalData->NegativeOrder, /* index */ + 0); + + /* decimal separator */ + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP), + CB_ADDSTRING, + 0, + (LPARAM)pGlobalData->szDecimalSep); + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECSEP), + CB_SETCURSEL, + 0, /* index */ + 0); + + + /* */ + for (i = 0; i < 10; i++) + { + szBuffer[0] = _T('0') + i; + szBuffer[1] = 0; + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECNUM), + CB_ADDSTRING, + 0, + (LPARAM)szBuffer); + } + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYDECNUM), + CB_SETCURSEL, + pGlobalData->NumDigits, /* index */ + 0); + + + /* digit group separator */ + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP), + CB_ADDSTRING, + 0, + (LPARAM)pGlobalData->szThousandSep); + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPSEP), + CB_SETCURSEL, + 0, /* index */ + 0); + + /* digit grouping */ + cyFmt.NumDigits = 0; + cyFmt.LeadingZero = 0; + cyFmt.lpDecimalSep = _T(""); + cyFmt.lpThousandSep = pGlobalData->szThousandSep; + cyFmt.NegativeOrder = 0; + cyFmt.lpCurrencySymbol = _T(""); + cyFmt.Grouping = 0; + GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, + _T("123456789"), + &cyFmt, szBuffer, 256); + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM), + CB_INSERTSTRING, + -1, + (LPARAM)szBuffer); + + cyFmt.Grouping = 3; + GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, + _T("123456789"), + &cyFmt, szBuffer, 256); + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM), + CB_INSERTSTRING, + -1, + (LPARAM)szBuffer); + + cyFmt.Grouping = 32; + GetCurrencyFormat(LOCALE_USER_DEFAULT, 0, + _T("123456789"), + &cyFmt, szBuffer, 256); + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM), + CB_INSERTSTRING, + -1, + (LPARAM)szBuffer); + + i = 0; + if (pGlobalData->szGrouping[0] == _T('3')) + { + if ((pGlobalData->szGrouping[1] == _T(';')) && + (pGlobalData->szGrouping[2] == _T('2'))) + i = 2; + else + i = 1; + } + + SendMessage(GetDlgItem(hwndDlg, IDC_CURRENCYGRPNUM), + CB_SETCURSEL, + i, /* index */ + 0); + + /* Show the examples */ + UpdateExamples(hwndDlg, pGlobalData); +} /* Property page dialog callback */ INT_PTR CALLBACK CurrencyPageProc(HWND hwndDlg, - UINT uMsg, - WPARAM wParam, - LPARAM lParam) -{ - switch(uMsg) - { - case WM_INITDIALOG: - break; - } - return FALSE; + UINT uMsg, + WPARAM wParam, + LPARAM lParam) +{ + PGLOBAL_DATA pGlobalData; + + pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER); + + switch (uMsg) + { + case WM_INITDIALOG: + pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA)); + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData); + OnInitDialog(hwndDlg, pGlobalData); + break; + + + case WM_DESTROY: + HeapFree(GetProcessHeap(), 0, pGlobalData); + break; + } + + return FALSE; } /* EOF */ Modified: trunk/reactos/dll/cpl/intl/cz.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/cz.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/cz.rc (original) +++ trunk/reactos/dll/cpl/intl/cz.rc Wed Jan 10 02:00:21 2007 @@ -25,7 +25,25 @@ CAPTION "Mìna" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Property Page 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/de.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/de.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/de.rc (original) +++ trunk/reactos/dll/cpl/intl/de.rc Wed Jan 10 02:00:21 2007 @@ -25,7 +25,25 @@ CAPTION "Währung" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Property Page 3",-1,73,74,90,8 + GROUPBOX "Darstellung", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positiv:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negativ:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Währungssymbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "Format für &positive Beträge:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "Format für &negative Beträge:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Dezimaltrennzeichen:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Anzahl der Dezimalstellen:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Symbol für Zifferngruppierung:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Zifferngruppierung:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/en.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/en.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/en.rc (original) +++ trunk/reactos/dll/cpl/intl/en.rc Wed Jan 10 02:00:21 2007 @@ -25,7 +25,25 @@ CAPTION "Currency" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Property Page 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/es.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/es.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/es.rc (original) +++ trunk/reactos/dll/cpl/intl/es.rc Wed Jan 10 02:00:21 2007 @@ -29,7 +29,25 @@ CAPTION "Moneda" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Property Page 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/hu.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/hu.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/hu.rc (original) +++ trunk/reactos/dll/cpl/intl/hu.rc Wed Jan 10 02:00:21 2007 @@ -24,7 +24,25 @@ CAPTION "Pénznem" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "3.tulajdonságlap",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/nl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/nl.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/nl.rc (original) +++ trunk/reactos/dll/cpl/intl/nl.rc Wed Jan 10 02:00:21 2007 @@ -25,7 +25,25 @@ CAPTION "Valuta" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Property Page 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/resource.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/resource.h?re…
============================================================================== --- trunk/reactos/dll/cpl/intl/resource.h (original) +++ trunk/reactos/dll/cpl/intl/resource.h Wed Jan 10 02:00:21 2007 @@ -8,7 +8,17 @@ #define IDD_GENERALPAGE 100 #define IDD_NUMBERSPAGE 101 -#define IDD_CURRENCYPAGE 102 + +#define IDD_CURRENCYPAGE 140 +#define IDC_CURRENCYPOSSAMPLE 141 +#define IDC_CURRENCYNEGSAMPLE 142 +#define IDC_CURRENCYSYMBOL 143 +#define IDC_CURRENCYPOSVALUE 144 +#define IDC_CURRENCYNEGVALUE 145 +#define IDC_CURRENCYDECSEP 146 +#define IDC_CURRENCYDECNUM 148 +#define IDC_CURRENCYGRPSEP 149 +#define IDC_CURRENCYGRPNUM 150 #define IDD_TIMEPAGE 103 #define IDC_TIMESAMPLE 107 Modified: trunk/reactos/dll/cpl/intl/ru.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/ru.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/ru.rc (original) +++ trunk/reactos/dll/cpl/intl/ru.rc Wed Jan 10 02:00:21 2007 @@ -25,7 +25,25 @@ CAPTION "Äåíåæíàÿ åäèíèöà" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Âêëàäêà 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END Modified: trunk/reactos/dll/cpl/intl/sv.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/sv.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/sv.rc (original) +++ trunk/reactos/dll/cpl/intl/sv.rc Wed Jan 10 02:00:21 2007 @@ -26,7 +26,25 @@ CAPTION "Valuta" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Property Page 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END @@ -35,7 +53,23 @@ CAPTION "Tid" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Property Page 4",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Time sample:", -1, 13, 21, 54, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_TIMESAMPLE, 68, 19, 84, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Time format:", -1, 13, 52, 54, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMEFORMAT, 68, 50, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "Time &separator:", -1, 13, 70, 54, 10, WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMESEPARATOR, 68, 68, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "A&M symbol:", -1, 13, 88, 54, 10, WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMEAMSYMBOL, 68, 86, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "&PM symbol:", -1, 13, 106, 54, 10, WS_VISIBLE | WS_GROUP + COMBOBOX IDC_TIMEPMSYMBOL, 68, 104, 84, 100, CBS_DROPDOWN | WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "", -1, 7, 124, 228, 60, WS_VISIBLE + LTEXT "Time format notation\n\n\ +h = hour m = minute s = second t = am or pm\n\n\ +h = 12 hour H = 24 hour\n\ +hh, mm, ss = leading zero h, m, s = no leading zero", + -1, 13, 133, 214, 47, WS_CHILD |WS_VISIBLE | WS_GROUP END Modified: trunk/reactos/dll/cpl/intl/uk.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/intl/uk.rc?rev=254…
============================================================================== --- trunk/reactos/dll/cpl/intl/uk.rc (original) +++ trunk/reactos/dll/cpl/intl/uk.rc Wed Jan 10 02:00:21 2007 @@ -32,7 +32,25 @@ CAPTION "Ãðîøîâà îäèíèöÿ" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "Âêëàäêà âëàñòèâîñòåé 3",-1,73,74,90,8 + GROUPBOX "Appearance sample", -1, 7, 7, 228, 33, WS_CHILD | WS_VISIBLE + LTEXT "Positive:", -1, 13, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYPOSSAMPLE, 42, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "Negative:", -1, 120, 21, 31, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + EDITTEXT IDC_CURRENCYNEGSAMPLE, 154, 19, 72, 14, ES_READONLY | WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "&Currency symbol:", -1, 20, 51, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYSYMBOL, 124, 49, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Positive Amount:", -1, 20, 68, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYPOSVALUE, 124, 66, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Negative Amount:", -1, 20, 85, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYNEGVALUE, 124, 83, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Decimal separator:", -1, 20, 111, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECSEP, 124, 109, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Number of fractional digits:", -1, 20, 128, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYDECNUM, 124, 126, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Grouping symbol:", -1, 20, 156, 100, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPSEP, 124, 154, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL + LTEXT "&Digit grouping:", -1, 20, 173, 96, 10, WS_CHILD |WS_VISIBLE | WS_GROUP + COMBOBOX IDC_CURRENCYGRPNUM, 124, 171, 100, 83, CBS_DROPDOWN | CBS_SORT | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL END
17 years, 11 months
1
0
0
0
[jimtabor] 25405: Implement new keyboard driver and layout structures to help Saveliy Tretiakovs LoadKeyboardLayout implementation.
by jimtabor@svn.reactos.org
Author: jimtabor Date: Wed Jan 10 01:55:40 2007 New Revision: 25405 URL:
http://svn.reactos.org/svn/reactos?rev=25405&view=rev
Log: Implement new keyboard driver and layout structures to help Saveliy Tretiakovs LoadKeyboardLayout implementation. Modified: trunk/reactos/subsystems/win32/win32k/include/input.h trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c Modified: trunk/reactos/subsystems/win32/win32k/include/input.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/input.h (original) +++ trunk/reactos/subsystems/win32/win32k/include/input.h Wed Jan 10 01:55:40 2007 @@ -2,6 +2,24 @@ #define _WIN32K_INPUT_H #include <internal/kbd.h> + +typedef struct _KBDRVFILE +{ + PSINGLE_LIST_ENTRY pkbdfChain; + WCHAR wcKBDF[9]; // used w GetKeyboardLayoutName same as wszKLID. + struct _KBDTABLES* KBTables; // KBDTABLES in ntoskrnl/include/internal/kbd.h +} KBDRVFILE, *PKBDRVFILE; + +typedef struct _KBL +{ + PLIST_ENTRY pklChain; + DWORD dwKBLFlags; + HKL hkl; + PKBDRVFILE pkbdf; +} KBL, *PKBL; + +#define KBL_UNLOADED 0x2000000 +#define KBL_RESET 0x4000000 NTSTATUS FASTCALL InitInputImpl(VOID); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/keyboard.c Wed Jan 10 01:55:40 2007 @@ -53,6 +53,9 @@ BYTE gQueueKeyStateTable[256]; +PKBDRVFILE KBLList = NULL; // Keyboard layout list. + + /* FUNCTIONS *****************************************************************/ /* Initialization -- Right now, just zero the key state and init the lock */
17 years, 11 months
1
0
0
0
← Newer
1
...
23
24
25
26
27
28
29
...
41
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Results per page:
10
25
50
100
200