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
June 2015
----- 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
13 participants
343 discussions
Start a n
N
ew thread
[akhaldi] 68097: [RAPPS] Missed this bit.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Tue Jun 9 22:51:50 2015 New Revision: 68097 URL:
http://svn.reactos.org/svn/reactos?rev=68097&view=rev
Log: [RAPPS] Missed this bit. Modified: trunk/reactos/base/applications/rapps/loaddlg.c Modified: trunk/reactos/base/applications/rapps/loaddlg.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lo…
============================================================================== --- trunk/reactos/base/applications/rapps/loaddlg.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/rapps/loaddlg.c [iso-8859-1] Tue Jun 9 22:51:50 2015 @@ -377,6 +377,7 @@ switch (Msg) { case WM_INITDIALOG: + { HICON hIconSm = NULL, hIconBg = NULL; hIconBg = (HICON)GetClassLongPtr(hMainWnd, GCLP_HICON); @@ -400,6 +401,7 @@ if (!Thread) return FALSE; CloseHandle(Thread); return TRUE; + } case WM_COMMAND: if (wParam == IDCANCEL)
9 years, 6 months
1
0
0
0
[akhaldi] 68096: [RAPPS] Fix the fact that the rapps download dialog uses the 32pixel icon for the download window. By Ismael Ferreras Morezuelas (IRC name swyter). CORE-9750
by akhaldi@svn.reactos.org
Author: akhaldi Date: Tue Jun 9 22:49:12 2015 New Revision: 68096 URL:
http://svn.reactos.org/svn/reactos?rev=68096&view=rev
Log: [RAPPS] Fix the fact that the rapps download dialog uses the 32pixel icon for the download window. By Ismael Ferreras Morezuelas (IRC name swyter). CORE-9750 Modified: trunk/reactos/base/applications/rapps/loaddlg.c Modified: trunk/reactos/base/applications/rapps/loaddlg.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/rapps/lo…
============================================================================== --- trunk/reactos/base/applications/rapps/loaddlg.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/rapps/loaddlg.c [iso-8859-1] Tue Jun 9 22:49:12 2015 @@ -30,7 +30,6 @@ #include <shellapi.h> static PAPPLICATION_INFO AppInfo; -static HICON hIcon = NULL; typedef struct _IBindStatusCallbackImpl { @@ -378,12 +377,15 @@ switch (Msg) { case WM_INITDIALOG: - - hIcon = LoadIconW(hInst, MAKEINTRESOURCEW(IDI_MAIN)); - if (hIcon) + HICON hIconSm = NULL, hIconBg = NULL; + + hIconBg = (HICON)GetClassLongPtr(hMainWnd, GCLP_HICON); + hIconSm = (HICON)GetClassLongPtr(hMainWnd, GCLP_HICONSM); + + if (hIconBg && hIconSm) { - SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) hIcon); - SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) hIcon); + SendMessageW(Dlg, WM_SETICON, ICON_BIG, (LPARAM) hIconBg); + SendMessageW(Dlg, WM_SETICON, ICON_SMALL, (LPARAM) hIconSm); } SetWindowLongPtrW(Dlg, GWLP_USERDATA, 0); @@ -408,7 +410,6 @@ return FALSE; case WM_CLOSE: - if (hIcon) DestroyIcon(hIcon); EndDialog(Dlg, 0); return TRUE;
9 years, 6 months
1
0
0
0
[aandrejevic] 68095: [NTVDM] Implement cycle-based timing for VGA.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Tue Jun 9 19:22:52 2015 New Revision: 68095 URL:
http://svn.reactos.org/svn/reactos?rev=68095&view=rev
Log: [NTVDM] Implement cycle-based timing for VGA. Modified: trunk/reactos/subsystems/mvdm/ntvdm/clock.c trunk/reactos/subsystems/mvdm/ntvdm/clock.h trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.h Modified: trunk/reactos/subsystems/mvdm/ntvdm/clock.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/cloc…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/clock.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/clock.c [iso-8859-1] Tue Jun 9 19:22:52 2015 @@ -36,25 +36,27 @@ /* VARIABLES ******************************************************************/ static LIST_ENTRY Timers; +static ULONGLONG Cycles = 0ULL; +static ULONGLONG CurrentIps = 20000000ULL; // 20 MIPS is a good estimate static LARGE_INTEGER StartPerfCount, Frequency; // static ULONG StartTickCount; static LARGE_INTEGER Counter; static ULONG CurrentTickCount; +static ULONGLONG LastCycles = 0ULL; +static PHARDWARE_TIMER IpsTimer; + +/* PRIVATE FUNCTIONS **********************************************************/ + +static VOID FASTCALL IpsCallback(ULONGLONG ElapsedTime) +{ + CurrentIps = (Cycles - LastCycles) / ElapsedTime; #ifdef IPS_DISPLAY -static PHARDWARE_TIMER IpsTimer; -static ULONGLONG Cycles = 0ULL; + DPRINT1("NTVDM: %I64u Instructions Per Second\n", CurrentIps); #endif -/* PRIVATE FUNCTIONS **********************************************************/ - -#ifdef IPS_DISPLAY -static VOID FASTCALL IpsDisplayCallback(ULONGLONG ElapsedTime) -{ - DPRINT1("NTVDM: %I64u Instructions Per Second\n", Cycles / ElapsedTime); - Cycles = 0ULL; -} -#endif + LastCycles = Cycles; +} /* PUBLIC FUNCTIONS ***********************************************************/ @@ -76,10 +78,7 @@ for (i = 0; VdmRunning && CpuRunning && (i < STEPS_PER_CYCLE); i++) { CpuStep(); - -#ifdef IPS_DISPLAY ++Cycles; -#endif } for (Entry = Timers.Flink; Entry != &Timers; Entry = Entry->Flink) @@ -199,6 +198,16 @@ } } +ULONGLONG GetCycleCount(VOID) +{ + return Cycles; +} + +ULONGLONG GetCycleSpeed(VOID) +{ + return CurrentIps; +} + BOOLEAN ClockInitialize(VOID) { InitializeListHead(&Timers); @@ -215,16 +224,12 @@ /* Find the starting tick count */ // StartTickCount = GetTickCount(); -#ifdef IPS_DISPLAY - - IpsTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, HZ_TO_NS(1), IpsDisplayCallback); + IpsTimer = CreateHardwareTimer(HARDWARE_TIMER_ENABLED, HZ_TO_NS(1), IpsCallback); if (IpsTimer == NULL) { - wprintf(L"FATAL: Cannot create IPS display timer.\n"); + wprintf(L"FATAL: Cannot create IPS timer.\n"); return FALSE; } -#endif - return TRUE; } Modified: trunk/reactos/subsystems/mvdm/ntvdm/clock.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/cloc…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/clock.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/clock.h [iso-8859-1] Tue Jun 9 19:22:52 2015 @@ -44,6 +44,9 @@ VOID SetHardwareTimerDelay(PHARDWARE_TIMER Timer, ULONGLONG NewDelay); VOID DestroyHardwareTimer(PHARDWARE_TIMER Timer); +ULONGLONG GetCycleCount(VOID); +ULONGLONG GetCycleSpeed(VOID); + VOID ClockUpdate(VOID); BOOLEAN ClockInitialize(VOID); Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hard…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.c [iso-8859-1] Tue Jun 9 19:22:52 2015 @@ -282,8 +282,8 @@ // static VGA_REGISTERS VgaRegisters; -static BOOLEAN InVerticalRetrace = FALSE; -static BOOLEAN InHorizontalRetrace = FALSE; +static ULONGLONG VerticalRetraceCycle = 0ULL; +static ULONGLONG HorizontalRetraceCycle = 0ULL; static BOOLEAN NeedsUpdate = FALSE; static BOOLEAN ModeChanged = FALSE; @@ -1413,8 +1413,31 @@ case VGA_INSTAT1_READ_COLOR: { BYTE Result = 0; - BOOLEAN Vsync = InVerticalRetrace; - BOOLEAN Hsync = InHorizontalRetrace; + BOOLEAN Vsync, Hsync; + ULONGLONG Cycles = GetCycleCount(); + ULONG CyclesPerMicrosecond = (ULONG)((GetCycleSpeed() + 500000ULL) / 1000000ULL); + ULONG Dots = (VgaSeqRegisters[VGA_SEQ_CLOCK_REG] & 1) ? 9 : 8; + ULONG Clock = ((VgaMiscRegister >> 2) & 1) ? 28 : 25; + ULONG HorizTotalDots = ((ULONG)VgaCrtcRegisters[VGA_CRTC_HORZ_TOTAL_REG] + 5) * Dots; + ULONG VblankStart, VblankEnd, HblankStart, HblankEnd; + ULONG HblankDuration, VblankDuration; + + /* Calculate the vertical blanking duration in cycles */ + VblankStart = VgaCrtcRegisters[VGA_CRTC_START_VERT_BLANKING_REG] & 0x7F; + VblankEnd = VgaCrtcRegisters[VGA_CRTC_END_VERT_BLANKING_REG] & 0x7F; + if (VblankEnd < VblankStart) VblankEnd |= 0x80; + VblankDuration = ((VblankEnd - VblankStart) * HorizTotalDots + * CyclesPerMicrosecond + (Clock >> 1)) / Clock; + + /* Calculate the horizontal blanking duration in cycles */ + HblankStart = VgaCrtcRegisters[VGA_CRTC_START_HORZ_BLANKING_REG] & 0x1F; + HblankEnd = VgaCrtcRegisters[VGA_CRTC_END_HORZ_BLANKING_REG] & 0x1F; + if (HblankEnd < HblankStart) HblankEnd |= 0x20; + HblankDuration = ((HblankEnd - HblankStart) * Dots + * CyclesPerMicrosecond + (Clock >> 1)) / Clock; + + Vsync = (Cycles - VerticalRetraceCycle) < (ULONGLONG)VblankDuration; + Hsync = (Cycles - HorizontalRetraceCycle) < (ULONGLONG)HblankDuration; /* Reset the AC latch */ VgaAcLatch = FALSE; @@ -1428,9 +1451,6 @@ /* Set an additional flag if there was a vertical retrace */ if (Vsync) Result |= VGA_STAT_VRETRACE; - - /* Clear the flags */ - InHorizontalRetrace = InVerticalRetrace = FALSE; return Result; } @@ -1787,8 +1807,8 @@ UNREFERENCED_PARAMETER(ElapsedTime); - /* Set the vertical retrace flag */ - InVerticalRetrace = TRUE; + /* Set the vertical retrace cycle */ + VerticalRetraceCycle = GetCycleCount(); /* If nothing has changed, just return */ // if (!ModeChanged && !CursorChanged && !PaletteChanged && !NeedsUpdate) @@ -1859,8 +1879,8 @@ { UNREFERENCED_PARAMETER(ElapsedTime); - /* Set the flag */ - InHorizontalRetrace = TRUE; + /* Set the cycle */ + HorizontalRetraceCycle = GetCycleCount(); } /* PUBLIC FUNCTIONS ***********************************************************/ Modified: trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/hard…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/hardware/video/vga.h [iso-8859-1] Tue Jun 9 19:22:52 2015 @@ -161,7 +161,7 @@ VGA_CRTC_OFFSET_REG, VGA_CRTC_UNDERLINE_REG, VGA_CRTC_START_VERT_BLANKING_REG, - VGA_CRTC_END_VERT_BLANKING, + VGA_CRTC_END_VERT_BLANKING_REG, VGA_CRTC_MODE_CONTROL_REG, VGA_CRTC_LINE_COMPARE_REG, VGA_CRTC_MAX_REG
9 years, 6 months
1
0
0
0
[cwittich] 68094: [WIN32K] fix some file headers and typos
by cwittich@svn.reactos.org
Author: cwittich Date: Tue Jun 9 17:43:00 2015 New Revision: 68094 URL:
http://svn.reactos.org/svn/reactos?rev=68094&view=rev
Log: [WIN32K] fix some file headers and typos Modified: trunk/reactos/win32ss/gdi/ntgdi/bitblt.c trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c trunk/reactos/win32ss/gdi/ntgdi/cliprgn.c trunk/reactos/win32ss/gdi/ntgdi/region.c Modified: trunk/reactos/win32ss/gdi/ntgdi/bitblt.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/bitblt.c…
============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/bitblt.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/bitblt.c [iso-8859-1] Tue Jun 9 17:43:00 2015 @@ -2,7 +2,7 @@ * COPYRIGHT: GNU GPL, See COPYING in the top level directory * PROJECT: ReactOS kernel * PURPOSE: Bit blit functions - * FILE: subsys/win32k/objects/bitblt.c + * FILE: win32ss/gdi/ntgdi/bitblt.c * PROGRAMER: Unknown */ Modified: trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/bitmaps.…
============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/bitmaps.c [iso-8859-1] Tue Jun 9 17:43:00 2015 @@ -2,7 +2,7 @@ * COPYRIGHT: GNU GPL, See COPYING in the top level directory * PROJECT: ReactOS kernel * PURPOSE: Bitmap functions - * FILE: subsys/win32k/objects/bitmaps.c + * FILE: win32ss/gdi/ntgdi/bitmaps.c * PROGRAMER: Timo Kreuzer <timo.kreuzer(a)reactos.org> */ Modified: trunk/reactos/win32ss/gdi/ntgdi/cliprgn.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/cliprgn.…
============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/cliprgn.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/cliprgn.c [iso-8859-1] Tue Jun 9 17:43:00 2015 @@ -2,7 +2,7 @@ * COPYRIGHT: GNU GPL, See COPYING in the top level directory * PROJECT: ReactOS Win32k subsystem * PURPOSE: Clip region functions - * FILE: subsystems/win32/win32k/objects/cliprgn.c + * FILE: win32ss/gdi/ntgdi/cliprgn.c * PROGRAMER: Unknown */ Modified: trunk/reactos/win32ss/gdi/ntgdi/region.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/ntgdi/region.c…
============================================================================== --- trunk/reactos/win32ss/gdi/ntgdi/region.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/ntgdi/region.c [iso-8859-1] Tue Jun 9 17:43:00 2015 @@ -2387,7 +2387,7 @@ { PREGION prgn; - /* Allocate a region, witout a handle */ + /* Allocate a region, without a handle */ prgn = (PREGION)GDIOBJ_AllocateObject(GDIObjType_RGN_TYPE, sizeof(REGION), BASEFLAG_LOOKASIDE); if (prgn == NULL) {
9 years, 6 months
1
0
0
0
[dreimer] 68093: [TRANSLATIONS] Add/Update Chinese (zh-CN) translation by Henry Tang Ih CORE-9003 #comment V5 patch committed, thx ^^
by dreimer@svn.reactos.org
Author: dreimer Date: Tue Jun 9 16:21:25 2015 New Revision: 68093 URL:
http://svn.reactos.org/svn/reactos?rev=68093&view=rev
Log: [TRANSLATIONS] Add/Update Chinese (zh-CN) translation by Henry Tang Ih CORE-9003 #comment V5 patch committed, thx ^^ Added: trunk/reactos/dll/win32/ieframe/lang/zh-CN.rc (with props) trunk/reactos/dll/win32/setupapi/lang/zh-CN.rc (with props) Modified: trunk/reactos/base/applications/dxdiag/lang/zh-CN.rc trunk/reactos/base/applications/mplay32/lang/zh-CN.rc trunk/reactos/base/applications/notepad/lang/zh-CN.rc trunk/reactos/base/setup/reactos/lang/zh-CN.rc trunk/reactos/dll/cpl/sysdm/lang/zh-CN.rc trunk/reactos/dll/win32/ieframe/ieframe.rc trunk/reactos/dll/win32/setupapi/setupapi.rc trunk/reactos/dll/win32/shell32/lang/zh-CN.rc trunk/reactos/media/inf/shortcuts.inf trunk/reactos/win32ss/user/winsrv/consrv/lang/zh-CN.rc Modified: trunk/reactos/base/applications/dxdiag/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/dxdiag/l…
============================================================================== --- trunk/reactos/base/applications/dxdiag/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/dxdiag/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -50,7 +50,7 @@ EDITTEXT IDC_STATIC_MEM, 155, 130, 210, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL EDITTEXT IDC_STATIC_SWAP, 155, 140, 210, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL EDITTEXT IDC_STATIC_VERSION, 155, 150, 210, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - CHECKBOX "Check for WHQL digital signatures", IDC_WHQL_SIGN_CHECK, 15, 170, 135, 10, WS_DISABLED + CHECKBOX "WHQL æ°åç¾åæ£æ¥", IDC_WHQL_SIGN_CHECK, 15, 170, 135, 10, WS_DISABLED END IDD_DISPLAY_DIALOG DIALOGEX 0, 0, 462, 220 @@ -145,17 +145,17 @@ STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN FONT 9, "MS Shell Dlg" BEGIN - RTEXT "General MIDI DLS Collection:", IDC_STATIC, 0, 0, 100, 10 + RTEXT "å¸¸è§ MIDI DLS éåï¼", IDC_STATIC, 0, 0, 100, 10 EDITTEXT IDC_MIDI_DLS_COLLECTION, 105, 0, 250, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - GROUPBOX "Music Ports", IDC_STATIC, 5, 10, 452, 85 - GROUPBOX "ReactX Features", IDC_STATIC, 5, 97, 452, 70 - LTEXT "Default Port Acceleration:", IDC_STATIC, 15, 120, 95, 17 + GROUPBOX "é³ä¹ç«¯å£", IDC_STATIC, 5, 10, 452, 85 + GROUPBOX "ReactX åè½", IDC_STATIC, 5, 97, 452, 70 + LTEXT "é»è®¤ç«¯å£å é:", IDC_STATIC, 15, 120, 95, 17 LTEXT "", IDC_STATIC_DEFAULT_PORT_ACCELERATION, 115, 120, 50, 10 - PUSHBUTTON "Disable", IDC_BUTTON_DISABLEDMUSIC, 75, 135, 80, 14, WS_DISABLED - LTEXT "Test using this port:", IDC_STATIC, 180, 105, 100, 10 + PUSHBUTTON "ç¦ç¨", IDC_BUTTON_DISABLEDMUSIC, 75, 135, 80, 14, WS_DISABLED + LTEXT "使ç¨æ¤ç«¯å£çæµè¯ï¼", IDC_STATIC, 180, 105, 100, 10 LISTBOX IDC_DMUSIC_TEST_LIST, 180, 115, 180, 45, LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Test DirectMusic", IDC_BUTTON_TESTDMUSIC, 370, 145, 80, 14, WS_DISABLED - GROUPBOX "Notes", IDC_STATIC, 5, 170, 452, 50 + PUSHBUTTON "æµè¯ DirectMusic", IDC_BUTTON_TESTDMUSIC, 370, 145, 80, 14, WS_DISABLED + GROUPBOX "å¤æ³¨", IDC_STATIC, 5, 170, 452, 50 EDITTEXT IDC_MUSIC_NOTES, 15, 182, 432, 30, ES_LEFT | WS_BORDER | ES_READONLY | WS_TABSTOP END @@ -178,11 +178,11 @@ BEGIN GROUPBOX "已注åç DirectPlay æå¡æä¾è :", IDC_STATIC, 5, 0, 452, 75 CONTROL "", IDC_LIST_PROVIDER, "SysListView32", LVS_REPORT | WS_CHILD | WS_BORDER | WS_TABSTOP, 15, 12, 432, 55 - GROUPBOX "Registered Lobbyable DirectPlay Applications", IDC_STATIC, 5, 77, 452, 55 - GROUPBOX "ReactX Features", IDC_STATIC, 5, 133, 452, 35 - PUSHBUTTON "DirectPlay Voice Options", IDC_BUTTON_VOICE_OPTIONS, 10, 145, 90, 14, WS_DISABLED - PUSHBUTTON "Test DirectPlay", IDC_BUTTON_TESTDPLAY, 130, 145, 80, 14, WS_DISABLED - GROUPBOX "Notes", IDC_STATIC, 5, 170, 452, 50 + GROUPBOX "注å Lobbyable DirectPlay åºç¨ç¨åº", IDC_STATIC, 5, 77, 452, 55 + GROUPBOX "ReactX åè½", IDC_STATIC, 5, 133, 452, 35 + PUSHBUTTON "DirectPlay è¯é³é项", IDC_BUTTON_VOICE_OPTIONS, 10, 145, 90, 14, WS_DISABLED + PUSHBUTTON "æµè¯ DirectPlay", IDC_BUTTON_TESTDPLAY, 130, 145, 80, 14, WS_DISABLED + GROUPBOX "å¤æ³¨", IDC_STATIC, 5, 170, 452, 50 EDITTEXT IDC_NETWORK_NOTES, 15, 182, 432, 30, ES_LEFT | WS_BORDER | ES_READONLY | WS_TABSTOP END @@ -190,11 +190,11 @@ STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN FONT 9, "MS Shell Dlg" BEGIN - LTEXT "Still can't find the information you're looking for? Here are some additional things you can do:", IDC_STATIC, 5, 0, 300, 10 - PUSHBUTTON "System Information", IDC_BUTTON_SYSINFO, 5, 20, 80, 14, WS_DISABLED - LTEXT "Displays additional system information", IDC_STATIC, 90, 23, 300, 10 - PUSHBUTTON "Refresh Rate Override", IDC_BUTTON_DDRAW_REFRESH, 5, 40, 80, 14, WS_DISABLED - LTEXT "Overrides the Refresh Rate for DirectDraw", IDC_STATIC, 90, 43, 300, 10 + LTEXT "ä»ç¶æ¾ä¸å°ä½ è¦æ¾çä¿¡æ¯åï¼ä¸é¢æ¯ä¸äºå ¶ä»çäºæ ä½ å¯ä»¥åï¼", IDC_STATIC, 5, 0, 300, 10 + PUSHBUTTON "ç³»ç»ä¿¡æ¯", IDC_BUTTON_SYSINFO, 5, 20, 80, 14, WS_DISABLED + LTEXT "æ¾ç¤ºéå çç³»ç»ä¿¡æ¯", IDC_STATIC, 90, 23, 300, 10 + PUSHBUTTON "å·æ°çéå", IDC_BUTTON_DDRAW_REFRESH, 5, 40, 80, 14, WS_DISABLED + LTEXT "éå DirectDraw çå·æ°ç", IDC_STATIC, 90, 43, 300, 10 END STRINGTABLE @@ -251,12 +251,12 @@ IDS_D3DTEST_DESCRIPTION "è¿å°å¯å¨ Direct3D çé¢æµè¯ãè¦ç»§ç»ï¼" IDS_D3DTEST_D3Dx "æ¤æµè¯å°ä½¿ç¨ç¡¬ä½å éç Direct3D %u çé¢ã" IDS_OS_VERSION "%s %s (%d.%d, Build %d)" - IDS_DMUSIC_DESC "Description" - IDS_DMUSIC_TYPE "Type" - IDS_DMUSIC_KERNEL "Kernel Mode" - IDS_DMUSIC_IO "In/Out" - IDS_DMUSIC_DLS "Supports DLS" - IDS_DMUSIC_EXT "External" - IDS_DMUSIC_PORT "Default Port" - IDS_DDDISABLE_MSG "This will disable all hardware acceleration for DirectDraw on all display devices\n.Do you wish to continue?\n" -END + IDS_DMUSIC_DESC "æè¿°" + IDS_DMUSIC_TYPE "ç±»å" + IDS_DMUSIC_KERNEL "å æ ¸æ¨¡å¼" + IDS_DMUSIC_IO "è¾å ¥/è¾åº" + IDS_DMUSIC_DLS "æ¯æ DLS" + IDS_DMUSIC_EXT "å¤é¨" + IDS_DMUSIC_PORT "é»è®¤ç«¯å£" + IDS_DDDISABLE_MSG "è¿å°ç¦ç¨ DirectDraw ææçæ¾ç¤ºè®¾å¤ä¸çææ硬件å é\nãæ¨è¦ç»§ç»åï¼\n" +END Modified: trunk/reactos/base/applications/mplay32/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mplay32/…
============================================================================== --- trunk/reactos/base/applications/mplay32/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/mplay32/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -14,9 +14,9 @@ POPUP "ææ¾(&P)" BEGIN MENUITEM "ææ¾/æå(&P)\tCtrl+P", IDC_PLAY - MENUITEM "åæ¢(&S)\tCtrl+S", IDC_STOP + MENUITEM "åæ¢(&O)\tCtrl+S", IDC_STOP MENUITEM SEPARATOR - MENUITEM "éå¤(&R)\tCtrl+T", IDM_REPEAT + MENUITEM "éå¤(&T)\tCtrl+T", IDM_REPEAT END POPUP "è§å¾(&V)" BEGIN @@ -46,14 +46,14 @@ STRINGTABLE BEGIN - IDS_MODE_UNKNOWN "Unknown" - IDS_MODE_OPEN "Opened" - IDS_MODE_STOP "Stopped" - IDS_MODE_PLAY "Playing" - IDS_MODE_PAUSE "Paused" - IDS_MODE_RECORD "Recording" - IDS_MODE_SEEK "Seeking" - IDS_MODE_NOT_READY "Not ready" + IDS_MODE_UNKNOWN "æªç¥" + IDS_MODE_OPEN "å·²æå¼" + IDS_MODE_STOP "å·²åæ¢" + IDS_MODE_PLAY "ææ¾ä¸" + IDS_MODE_PAUSE "å·²æå" + IDS_MODE_RECORD "å½é³ä¸" + IDS_MODE_SEEK "æ¥æ¾ä¸" + IDS_MODE_NOT_READY "æªåå¤å¥½" IDS_ALL_TYPES_FILTER "æææ¯æçæ ¼å¼" IDS_TOOLTIP_PLAY "ææ¾" IDS_TOOLTIP_STOP "åæ¢" @@ -62,7 +62,7 @@ IDS_TOOLTIP_SEEKBACK "å¿«é" IDS_TOOLTIP_SEEKFORW "å¿«è¿" IDS_TOOLTIP_FORWARD "ååè·³è¿" - IDS_TOOLTIP_PAUSE "Pause" + IDS_TOOLTIP_PAUSE "æå" IDS_APPTITLE "ReactOS å¤åªä½ææ¾å¨" IDS_PLAY "ææ¾" IDS_DEFAULTMCIERRMSG "该é误没æå¯ç¨çæè¿°." Modified: trunk/reactos/base/applications/notepad/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/notepad/…
============================================================================== --- trunk/reactos/base/applications/notepad/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/notepad/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -71,37 +71,37 @@ DIALOG_PAGESETUP DIALOGEX 0, 0, 365, 193 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_CONTEXTHELP FONT 9, "MS Shell Dlg" -CAPTION "Page Setup" +CAPTION "页é¢è®¾ç½®" BEGIN - GROUPBOX "Preview", 0, 240, 6, 120, 153, BS_GROUPBOX + GROUPBOX "é¢è§", 0, 240, 6, 120, 153, BS_GROUPBOX CONTROL "", rct1, "Static", SS_WHITERECT, 260, 42, 80, 80 CONTROL "", rct2, "Static", SS_GRAYRECT, 340, 46, 4, 80 CONTROL "", rct3, "Static", SS_GRAYRECT, 264, 122, 80, 4 GROUPBOX "Paper", grp2, 8, 6, 224, 56, BS_GROUPBOX - LTEXT "&Size:", stc2, 16, 22, 36, 8 + LTEXT "大å°:(&S)", stc2, 16, 22, 36, 8 COMBOBOX cmb2, 64, 20, 160, 160, CBS_SIMPLE | CBS_DROPDOWN | CBS_SORT | WS_GROUP | WS_TABSTOP | WS_VSCROLL - LTEXT "&Tray:", stc3, 16, 42, 36, 8 + LTEXT "ä»»å¡æ :(&T)", stc3, 16, 42, 36, 8 COMBOBOX cmb3, 64, 40, 160, 160, CBS_SIMPLE | CBS_DROPDOWN | CBS_SORT | WS_GROUP | WS_TABSTOP | WS_VSCROLL - GROUPBOX "Orientation", grp1, 8, 66, 64, 56, BS_GROUPBOX - AUTORADIOBUTTON "&Portrait", rad1, 16, 80, 52, 12, BS_AUTORADIOBUTTON - AUTORADIOBUTTON "&Landscape", rad2, 16, 100, 52, 12, BS_AUTORADIOBUTTON - GROUPBOX "Borders", grp4, 80, 66, 152, 56, BS_GROUPBOX - LTEXT "L&eft:", stc15, 88, 82, 30, 8 + GROUPBOX "æ¹å", grp1, 8, 66, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "ç´å(&P)", rad1, 16, 80, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "横å(&L)", rad2, 16, 100, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "è¾¹æ¡", grp4, 80, 66, 152, 56, BS_GROUPBOX + LTEXT "å·¦:(&E)", stc15, 88, 82, 30, 8 EDITTEXT edt4, 119, 80, 36, 12, WS_TABSTOP | WS_GROUP | WS_BORDER - LTEXT "&Right:", stc16, 159, 82, 30, 8 + LTEXT "å³:(&R)", stc16, 159, 82, 30, 8 EDITTEXT edt6, 190, 80, 36, 12, WS_TABSTOP | WS_GROUP | WS_BORDER - LTEXT "T&op:", stc17, 88, 102, 30, 8 + LTEXT "ä¸:(&O)", stc17, 88, 102, 30, 8 EDITTEXT edt5, 119, 100, 36, 12, WS_TABSTOP | WS_GROUP | WS_BORDER - LTEXT "&Bottom:", stc18, 159, 102, 30, 8 + LTEXT "ä¸:(&B)", stc18, 159, 102, 30, 8 EDITTEXT edt7, 190, 100, 36, 12, WS_TABSTOP | WS_GROUP | WS_BORDER - LTEXT "&Header:", 0x140, 8, 132, 40, 15 + LTEXT "页ç:(&H)", 0x140, 8, 132, 40, 15 EDITTEXT 0x141, 58, 130, 173, 12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Footer:", 0x142, 8, 149, 40, 15 + LTEXT "页è:(&F)", 0x142, 8, 149, 40, 15 EDITTEXT 0x143, 58, 147, 173, 12, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL - PUSHBUTTON "Help", IDHELP, 8, 170, 50, 14 - DEFPUSHBUTTON "OK", IDOK, 198, 170, 50, 14, BS_PUSHBUTTON - PUSHBUTTON "Cancel", IDCANCEL, 254, 170, 50, 14 - PUSHBUTTON "P&rinter...", psh3, 310, 170, 50, 14 + PUSHBUTTON "帮å©", IDHELP, 8, 170, 50, 14 + DEFPUSHBUTTON "ç¡®å®", IDOK, 198, 170, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "åæ¶", IDCANCEL, 254, 170, 50, 14 + PUSHBUTTON "æå°æº...(&R)", psh3, 310, 170, 50, 14 END /* Dialog 'Encoding' */ @@ -180,5 +180,5 @@ STRING_LF "Unix (LF)" STRING_CR "Mac (CR)" STRING_LINE_COLUMN "线 %d, å %d" - STRING_PRINTERROR "Cannot print the file '%s'.\n\nMake sure that the printer is turned on and is configured properly." + STRING_PRINTERROR "ä¸è½æå°æ件 '%s'ã\n\n请确ä¿æå°æºå·²æå¼ï¼å¹¶ä¸å·²æ£ç¡®é ç½®ã" END Modified: trunk/reactos/base/setup/reactos/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/setup/reactos/lang/zh…
============================================================================== --- trunk/reactos/base/setup/reactos/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/base/setup/reactos/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -144,6 +144,6 @@ IDS_SUMMARYSUBTITLE "æ£æ¯å®è£ åååºå®è£ å±æ§ä»¥ä¾æ£æ¥" IDS_ABORTSETUP "ReactOS æªå¨æ¨ççµèä¸å®è£ å®æãå¦ææ¨ç°å¨éåºå®è£ ç¨åºï¼æ¨éè¦å¨ä¸æ¬¡è¿è¡å®è£ ç¨åºæ¥å®è£ ReactOSã ç¡®å®éåºï¼" IDS_ABORTSETUP2 "ç»æ¢å®è£ ï¼" - IDS_NO_TXTSETUP_SIF "Unable to find 'txtsetup.sif'\nSetup is unable to continue." + IDS_NO_TXTSETUP_SIF "æ æ³æ¾å° 'txtsetup.sif'\nå®è£ ç¨åºæ æ³ç»§ç»ã" IDS_CAPTION "ReactOS å®è£ " END Modified: trunk/reactos/dll/cpl/sysdm/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/lang/zh-CN.r…
============================================================================== --- trunk/reactos/dll/cpl/sysdm/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/sysdm/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -102,22 +102,22 @@ IDD_HARDWAREPROFILE DIALOGEX 0, 0, 212, 188 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "General" +CAPTION "常è§" FONT 8, "MS Shell Dlg" BEGIN ICON IDI_HARDPROF, IDC_STATIC, 10, 10, 18, 20, SS_ICON LTEXT "", IDC_HWPPROP_PROFILE, 48, 16, 150, 8 - LTEXT "Dock ID:", IDC_STATIC, 10, 42, 43, 8 + LTEXT "ææ¥ IDï¼", IDC_STATIC, 10, 42, 43, 8 LTEXT "", IDC_HWPPROP_DOCKID, 64, 42, 135, 8 - LTEXT "Serial Number:", IDC_STATIC, 10, 55, 52, 8 + LTEXT "åºåå·ï¼", IDC_STATIC, 10, 55, 52, 8 LTEXT "", IDC_HWPPROP_SERIAL, 64, 55, 135, 8 GROUPBOX "", IDC_STATIC, 10, 69, 192, 61 - AUTOCHECKBOX "This is a &portable computer", IDC_HWPPROP_PORTABLE, 17, 68, 115, 10, WS_GROUP | WS_TABSTOP - AUTORADIOBUTTON "The docking &state is unknown", IDC_HWPPROP_UNKNOWN, 22, 85, 160, 10, WS_GROUP | WS_TABSTOP - AUTORADIOBUTTON "The computer is &docked", IDC_HWPPROP_DOCKED, 22, 97, 160, 10 - AUTORADIOBUTTON "The computer is &undocked", IDC_HWPPROP_UNDOCKED, 22, 109, 160, 10 - GROUPBOX "Hardware profiles selection", IDC_STATIC, 10, 138, 192, 42 - AUTOCHECKBOX "Always &include this profile as an option when ReactOS starts", IDC_HWPPROP_INCLUDE, 17, 150, 164, 20, WS_GROUP | WS_TABSTOP | BS_MULTILINE + AUTOCHECKBOX "è¿æ¯ä¸å°ä¾¿æºå¼è®¡ç®æº(&P)", IDC_HWPPROP_PORTABLE, 17, 68, 115, 10, WS_GROUP | WS_TABSTOP + AUTORADIOBUTTON "ææ¥ç¶ææ¯æªç¥(&S)", IDC_HWPPROP_UNKNOWN, 22, 85, 160, 10, WS_GROUP | WS_TABSTOP + AUTORADIOBUTTON "计ç®æºè¢«ææ¥(&D)", IDC_HWPPROP_DOCKED, 22, 97, 160, 10 + AUTORADIOBUTTON "计ç®æºæªææ¥(&U)", IDC_HWPPROP_UNDOCKED, 22, 109, 160, 10 + GROUPBOX "硬件é ç½®æ件éæ©", IDC_STATIC, 10, 138, 192, 42 + AUTOCHECKBOX "å½çµèå¯å¨æ¶ä½ä¸ºä¸ä¸ªé项å§ç»å å«æ¤é ç½®æ件(&I)", IDC_HWPPROP_INCLUDE, 17, 150, 164, 20, WS_GROUP | WS_TABSTOP | BS_MULTILINE END IDD_COPYPROFILE DIALOGEX 12, 26, 256, 52 @@ -301,9 +301,9 @@ IDS_PAGEFILE_SYSTEM "ç³»ç»å·²ç®¡ç" IDS_INFOREBOOT "æ¨å¿ é¡»éæ°å¯å¨è®¡ç®æºï¼æè½åºç¨æ´æ¹ã" IDS_DEVS "\nReactOS Team\n\nProject Coordinator\n\nAleksey Bragin\n\nDevelopment Team\n\nAleksey Bragin\nAndrew Greenwood\nAndrey Korotaev\nArt Yerkes\nChristoph von Wittich\nColin Finck\nDaniel Reimer\nDmitry Chapyshev\nEric Kohl\nGed Murphy\nGregor Brunmar\nHervé Poussineau\nJames Tabor\nJeffrey Morlan\nJohannes Anderwald\nKamil HornÃÄek\nKJK::Hyperion\nMaarten Bosma\nMagnus Olsen\nMarc Piulachs\nMatthias Kupfer\nMike Nordell\nPeter Ward\nPierre Schweitzer\nSaveliy Tretiakov\nStefan Ginsberg\nSylvain Petreolle\nThomas Blümel\nTimo Kreuzer \n\nAlex Ionescu\nFilip Navara\nGunnar Dalsnes\nMartin Fuchs\nRoyce Mitchell III\nBrandon Turner\nBrian Palmer\nCasper Hornstrup\nDavid Welch\nEmanuele Aliberti\nGé van Geldorp\nGregor Anich\nJason Filby\nJens Collin\nMichael Wirth\nNathan Woods\nRobert Dickenson\nRex Jolliff\nVizzini \n\nRelease Engineers\n\nColin Finck\nZ98\n\nWebsite Team\n\nColin Finck\nJaix Bly\nKlemens Friedl\nZ98\n\nMedia Team\n\nMindflyer\nWierd_W\n\nfurther thanks go to\n\nall Contributers\nWine Team\n\n" - IDS_HWPROFILE_CONFIRM_DELETE_TITLE "Confirm Profile Delete" - IDS_HWPROFILE_CONFIRM_DELETE "Are you sure you want to delete the hardware profile ""%s""?" - IDS_HWPROFILE_ALREADY_IN_USE "The profile name is already in use." - IDS_HWPROFILE_PROFILE "Profile" - IDS_HWPROFILE_WARNING "Warning" -END + IDS_HWPROFILE_CONFIRM_DELETE_TITLE "确认é ç½®æ件å é¤" + IDS_HWPROFILE_CONFIRM_DELETE "ä½ ç¡®å®ä½ æ³è¦å é¤ç硬件é ç½®æä»¶ï¼ ""%s""?" + IDS_HWPROFILE_ALREADY_IN_USE "é ç½®å¼å称已å¨ä½¿ç¨ã" + IDS_HWPROFILE_PROFILE "é ç½®æ件" + IDS_HWPROFILE_WARNING "è¦å" +END Modified: trunk/reactos/dll/win32/ieframe/ieframe.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/ieframe.…
============================================================================== --- trunk/reactos/dll/win32/ieframe/ieframe.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ieframe/ieframe.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -50,6 +50,9 @@ #ifdef LANGUAGE_TR_TR #include "lang/tr-TR.rc" #endif +#ifdef LANGUAGE_ZH_CN + #include "lang/zh-CN.rc" +#endif LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL Added: trunk/reactos/dll/win32/ieframe/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ieframe/lang/zh-…
============================================================================== --- trunk/reactos/dll/win32/ieframe/lang/zh-CN.rc (added) +++ trunk/reactos/dll/win32/ieframe/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -0,0 +1,80 @@ +/* Simplified Chinese translation by Henry Tang Ih 2015 (henrytang2(a)hotmail.com) */ + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +IDR_BROWSE_MAIN_MENU MENU +{ + POPUP "æ件(&F)" + { + POPUP "æ°å»º(&N)" + { + MENUITEM "çªå£(&W)", ID_BROWSE_NEW_WINDOW + } + MENUITEM "æå¼...(&O)", ID_BROWSE_OPEN + MENUITEM "ä¿å(&S)", ID_BROWSE_SAVE + MENUITEM "å¦å为(&A)...", ID_BROWSE_SAVE_AS + MENUITEM SEPARATOR + MENUITEM "æå°æ ¼å¼...(&F)", ID_BROWSE_PRINT_FORMAT + MENUITEM "æå°(&I)...", ID_BROWSE_PRINT + MENUITEM "æå°é¢è§(&W)", ID_BROWSE_PRINT_PREVIEW + MENUITEM SEPARATOR + MENUITEM "å±æ§(&P)", ID_BROWSE_PROPERTIES + MENUITEM "å ³é(&C)", ID_BROWSE_QUIT + } + POPUP "è§å¾(&V)" + { + POPUP "å·¥å ·æ (&T)" + { + MENUITEM "æ åæ (&S)", ID_BROWSE_BAR_STD + MENUITEM "å°åæ (&A)", ID_BROWSE_BAR_ADDR + } + } + POPUP "æ¶è夹(&F)" + { + MENUITEM "æ·»å å°æ¶è夹...(&A)", ID_BROWSE_ADDFAV + MENUITEM SEPARATOR + } + POPUP "帮å©(&H)" + { + MENUITEM "å ³äºäºèç½æµè§å¨(&A)", ID_BROWSE_ABOUT + } +} + +STRINGTABLE +{ + IDS_TB_BACK "åé" + IDS_TB_FORWARD "åè¿" + IDS_TB_STOP "åæ¢" + IDS_TB_REFRESH "å·æ°" + IDS_TB_HOME "é¦é¡µ" + IDS_TB_PRINT "æå°..." +} + +STRINGTABLE +{ + IDS_ADDRESS "å°å" +} + +STRINGTABLE +{ + IDS_FINDINGRESOURCE "æç´¢ %s ä¸" + IDS_BEGINDOWNLOADDATA "å¼å§ä¸è½½ %s" + IDS_ENDDOWNLOADDATA "ä¸è½½ %s ä¸" + IDS_SENDINGREQUEST "è¦æ± %s" +} + + +IDD_BROWSE_OPEN DIALOGEX 10, 10, 200, 70 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION +CAPTION "æå¼ URL" +FONT 8, "MS Shell Dlg" +{ + LTEXT "æå®æ¨å¸æè¦å¨ Internet Explorer ä¸æå¼ç URL",-1, 35,5,160,25 + LTEXT "æå¼:", -1, 5, 32, 30, 15 +#ifdef __REACTOS__ + ICON IDC_PAGEICO, IDC_PAGEICO, 2, 5, 21, 20, SS_ICON +#endif + EDITTEXT IDC_BROWSE_OPEN_URL, 35, 30, 160, 13 + DEFPUSHBUTTON "ç¡®å®", IDOK, 90, 50, 50, 14 + PUSHBUTTON "åæ¶", IDCANCEL, 145, 50, 50, 14 +} Propchange: trunk/reactos/dll/win32/ieframe/lang/zh-CN.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/setupapi/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/setupapi/lang/zh…
============================================================================== --- trunk/reactos/dll/win32/setupapi/lang/zh-CN.rc (added) +++ trunk/reactos/dll/win32/setupapi/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -0,0 +1,23 @@ +/* Simplified Chinese translation by Henry Tang Ih 2015 (henrytang2(a)hotmail.com) */ + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +COPYFILEDLGORD DIALOGEX 20, 20, 208, 105 +STYLE DS_MODALFRAME | DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION +CAPTION "æ£å¨å¤å¶æ件..." +FONT 8, "MS Shell Dlg" +BEGIN + PUSHBUTTON "åæ¶", IDCANCEL, 79, 84, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "èµææ¥æºï¼", -1, 7, 7, 77, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "", SOURCESTRORD, 7, 18, 194, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "ç®çå°ï¼", -1, 7, 30, 77, 11, WS_CHILD | WS_VISIBLE | WS_GROUP + LTEXT "", DESTSTRORD, 7, 41, 194, 22, WS_CHILD | WS_VISIBLE | WS_GROUP + CONTROL "", PROGRESSORD, "setupx_progress", 7, 63, 194, 13, WS_CHILD | WS_VISIBLE | WS_TABSTOP +END + +STRINGTABLE +BEGIN + IDS_QUERY_REBOOT_TEXT "æ¨ç计ç®æºéè¦éæ°å¯å¨æè½å®æå®è£ ãæ¨è¦ç»§ç»åï¼" + IDS_QUERY_REBOOT_CAPTION "éæ°å¯å¨" + IDS_INF_FILE "å®è£ ç¨åºä¿¡æ¯" +END Propchange: trunk/reactos/dll/win32/setupapi/lang/zh-CN.rc ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/setupapi/setupapi.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/setupapi/setupap…
============================================================================== --- trunk/reactos/dll/win32/setupapi/setupapi.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/setupapi/setupapi.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -108,3 +108,6 @@ #ifdef LANGUAGE_UK_UA #include "lang/uk-UA.rc" #endif +#ifdef LANGUAGE_ZH_CN + #include "lang/zh-CN.rc" +#endif Modified: trunk/reactos/dll/win32/shell32/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/lang/zh-…
============================================================================== --- trunk/reactos/dll/win32/shell32/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -53,18 +53,18 @@ /* menubar EDIT menu */ MENU_003 MENU BEGIN - MENUITEM "&Undo\tCtrl+Z", FCIDM_SHVIEW_UNDO + MENUITEM "æ¤æ¶(&U)\tCtrl+Z", FCIDM_SHVIEW_UNDO MENUITEM SEPARATOR - MENUITEM "Cu&t\tCtrl+X", FCIDM_SHVIEW_CUT - MENUITEM "&Copy\tCtrl+C", FCIDM_SHVIEW_COPY - MENUITEM "&Paste\tCtrl+V", FCIDM_SHVIEW_INSERT - MENUITEM "Paste &shortcut", FCIDM_SHVIEW_INSERTLINK + MENUITEM "åªä¸(&T)\tCtrl+X", FCIDM_SHVIEW_CUT + MENUITEM "å¤å¶(&C)\tCtrl+C", FCIDM_SHVIEW_COPY + MENUITEM "è´´ä¸(&P)\tCtrl+V", FCIDM_SHVIEW_INSERT + MENUITEM "è´´ä¸å¿«æ·æ¹å¼(&S)", FCIDM_SHVIEW_INSERTLINK MENUITEM SEPARATOR - MENUITEM "Copy to &folder...", FCIDM_SHVIEW_COPYTO - MENUITEM "Mo&ve to folder...", FCIDM_SHVIEW_MOVETO + MENUITEM "å°å¤å¶å°æ件夹...(&F)", FCIDM_SHVIEW_COPYTO + MENUITEM "移å¨å°æ件夹...(&V)", FCIDM_SHVIEW_MOVETO MENUITEM SEPARATOR - MENUITEM "Select &all\tCtrl+A", FCIDM_SHVIEW_SELECTALL - MENUITEM "&Invert Selection", FCIDM_SHVIEW_INVERTSELECTION + MENUITEM "éæ©ææ(&A)\tCtrl+A", FCIDM_SHVIEW_SELECTALL + MENUITEM "ååéæ©(&I)", FCIDM_SHVIEW_INVERTSELECTION END /* shellview item menu */ @@ -72,7 +72,7 @@ BEGIN POPUP "" BEGIN - MENUITEM "E&xplore", FCIDM_SHVIEW_EXPLORE + MENUITEM "æµè§(&X)", FCIDM_SHVIEW_EXPLORE MENUITEM "æå¼(&O)", FCIDM_SHVIEW_OPEN MENUITEM SEPARATOR MENUITEM "åªå(&U)", FCIDM_SHVIEW_CUT @@ -88,7 +88,7 @@ IDD_BROWSE_FOR_FOLDER DIALOGEX 15, 40, 188, 192 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "Browse for Folder" +CAPTION "æµè§æ件夹" FONT 9, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "ç¡®å®", 1, 60, 175, 60, 15, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP @@ -100,28 +100,28 @@ IDD_BROWSE_FOR_FOLDER_NEW DIALOGEX 15, 40, 218, 196 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU -CAPTION "Browse for Folder" +CAPTION "æµè§æ件夹" FONT 9, "MS Shell Dlg" BEGIN LTEXT "", IDC_BROWSE_FOR_FOLDER_TITLE, 10, 8, 198, 24 LTEXT "", IDC_BROWSE_FOR_FOLDER_STATUS, 10, 25, 198, 12 - LTEXT "Folder:", IDC_BROWSE_FOR_FOLDER_FOLDER, 10, 152, 40, 12 + LTEXT "æ件夹:", IDC_BROWSE_FOR_FOLDER_FOLDER, 10, 152, 40, 12 CONTROL "", IDC_BROWSE_FOR_FOLDER_TREEVIEW, "SysTreeView32", TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | WS_BORDER | WS_TABSTOP, 12, 38, 194, 105 EDITTEXT IDC_BROWSE_FOR_FOLDER_FOLDER_TEXT, 46, 150, 160, 14, WS_BORDER | WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Make New Folder", IDC_BROWSE_FOR_FOLDER_NEW_FOLDER, 12, 174, 77, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "å建æ°æ件夹(&M)", IDC_BROWSE_FOR_FOLDER_NEW_FOLDER, 12, 174, 77, 14, WS_GROUP | WS_TABSTOP DEFPUSHBUTTON "ç¡®å®", IDOK, 102, 174, 50, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "åæ¶", IDCANCEL, 156, 174, 50, 14, WS_GROUP | WS_TABSTOP END IDD_YESTOALL_MSGBOX DIALOGEX 200, 100, 280, 90 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Message" -FONT 9, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON "&Yes", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Yes to &all", IDC_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&No", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Cancel", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP +CAPTION "ä¿¡æ¯" +FONT 9, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "æ¯(&Y)", IDYES, 34, 69, 53, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "å ¨æ¯(&A)", IDC_YESTOALL, 92, 69, 65, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "å¦(&N)", IDNO, 162, 69, 53, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "åæ¶(&C)", IDCANCEL, 220, 69, 53, 14, WS_GROUP | WS_TABSTOP ICON "", IDC_YESTOALL_ICON, 10, 10, 16, 16 LTEXT "", IDC_YESTOALL_MESSAGE, 40, 10, 238, 52, 0 END @@ -133,20 +133,20 @@ BEGIN ICON "", IDC_ABOUT_ICON, 7, 55, 21, 20 LTEXT "", IDC_ABOUT_APPNAME, 35, 55, 200, 10 - LTEXT "Version ", IDC_STATIC, 35, 65, 28, 10 + LTEXT "çæ¬ ", IDC_STATIC, 35, 65, 28, 10 LTEXT KERNEL_VERSION_STR, IDC_STATIC, 63, 65, 27, 10 LTEXT " (", IDC_STATIC, 90, 65, 5, 10 LTEXT KERNEL_VERSION_BUILD_STR, IDC_STATIC, 95, 65, 58, 10 LTEXT ")", IDC_STATIC, 153, 65, 5, 10 - LTEXT "Copyright 1998-", IDC_STATIC, 35, 75, 53, 10 + LTEXT "çæ 1998-", IDC_STATIC, 35, 75, 53, 10 LTEXT COPYRIGHT_YEAR, IDC_STATIC, 88, 75, 17, 10 LTEXT " ReactOS Team\0", IDC_STATIC, 105, 75, 53, 10 LTEXT "", IDC_ABOUT_OTHERSTUFF, 35, 90, 180, 20 - LTEXT "This ReactOS version is registered to:", IDC_STATIC, 35, 115, 180, 10 + LTEXT "æ¤ ReactOS çæ¬æ³¨åå°:", IDC_STATIC, 35, 115, 180, 10 LTEXT "", IDC_ABOUT_REG_USERNAME, 45, 125, 180, 10 LTEXT "", IDC_ABOUT_REG_ORGNAME, 45, 135, 180, 10 LTEXT "", IDC_STATIC, 35, 147, 235, 1, SS_ETCHEDHORZ - LTEXT "Installed physical memory:", IDC_STATIC, 35, 152, 130, 10 + LTEXT "å·²å®è£ çç©çå åï¼", IDC_STATIC, 35, 152, 130, 10 LTEXT "", IDC_ABOUT_PHYSMEM, 167, 152, 88, 10 DEFPUSHBUTTON "ç¡®å®", IDOK, 220, 178, 50, 14 PUSHBUTTON "", IDC_ABOUT_AUTHORS, 5, 178, 70, 14 @@ -156,13 +156,13 @@ STYLE DS_SHELLFONT | WS_CHILD FONT 9, "MS Shell Dlg" BEGIN - LTEXT "ReactOS was brought to you by:", IDC_STATIC, 0, 0, 180, 10 + LTEXT "ReactOS 被带å°ä½ çæ¯ï¼", IDC_STATIC, 0, 0, 180, 10 LISTBOX IDC_ABOUT_AUTHORS_LISTBOX, 0, 10, 165, 75 END IDD_RUN DIALOGEX 0, 0, 227, 95 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Run" +CAPTION "è¿è¡" FONT 9, "MS Shell Dlg" BEGIN ICON "", 12297, 7, 11, 18, 20, WS_VISIBLE @@ -176,202 +176,202 @@ IDD_SHORTCUT_PROPERTIES DIALOGEX 0, 0, 235, 215 STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION -CAPTION "Shortcut" +CAPTION "å¿«æ·æ¹å¼" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN ICON "", 14000, 8, 8, 21, 20, WS_VISIBLE EDITTEXT 14001, 49, 10, 180, 14, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL LTEXT "", -1, 8, 31, 223, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Target type:", 14004, 8, 38, 68, 10 + LTEXT "ç®æ ç±»åï¼", 14004, 8, 38, 68, 10 EDITTEXT 14005, 79, 37, 150, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Target location:", 14006, 8, 55, 68, 10 + LTEXT "ç®æ ä½ç½®ï¼", 14006, 8, 55, 68, 10 EDITTEXT 14007, 79, 53, 150, 12, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "&Target:", 14008, 8, 71, 68, 10 + LTEXT "ç®æ (&T):", 14008, 8, 71, 68, 10 EDITTEXT 14009, 79, 69, 150, 14, ES_AUTOHSCROLL LTEXT "", -1, 8, 88, 223, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "&Start in:", 14010, 8, 98, 68, 10 + LTEXT "å¼å§å¨(&S):", 14010, 8, 98, 68, 10 EDITTEXT 14011, 79, 96, 150, 14, ES_AUTOHSCROLL - LTEXT "Shortcut &key:", 14014, 8, 117, 68, 10 + LTEXT "å¿«æ·é®(&K):", 14014, 8, 117, 68, 10 CONTROL "", 14015, "msctls_hotkey32", WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP, 79, 115, 150, 14 - LTEXT "&Run:", 14016, 8, 136, 68, 10 + LTEXT "è¿è¡(&R):", 14016, 8, 136, 68, 10 COMBOBOX 14017, 79, 134, 150, 14, CBS_DROPDOWNLIST | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP - LTEXT "C&omment:", 14018, 8, 154, 68, 10 + LTEXT "注解(&O):", 14018, 8, 154, 68, 10 EDITTEXT 14019, 79, 152, 150, 14, ES_AUTOHSCROLL - PUSHBUTTON "&Find Target...", 14020, 9, 172, 70, 14, ES_LEFT - PUSHBUTTON "&Change Icon...", 14021, 84, 172, 70, 14, ES_LEFT - PUSHBUTTON "A&dvanced...", 14022, 159, 172, 70, 14, ES_LEFT + PUSHBUTTON "æ¥æ¾ç®æ ...(&F)", 14020, 9, 172, 70, 14, ES_LEFT + PUSHBUTTON "æ´æ¹å¾æ ...(&C)", 14021, 84, 172, 70, 14, ES_LEFT + PUSHBUTTON "é«çº§...(&D)", 14022, 159, 172, 70, 14, ES_LEFT END IDD_SHORTCUT_EXTENDED_PROPERTIES DIALOGEX 0, 0, 230, 150 STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION -CAPTION "Extended Properties" +CAPTION "æ©å±çå±æ§" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN ICON IDI_SHELL_EXTENDED_PROPERTIES, IDI_SHELL_EXTENDED_PROPERTIES, 5, 5, 21, 20, SS_ICON - LTEXT "Choose the advanced properties you want for this shortcut.", -1, 5, 30, 210, 10 - CHECKBOX "Run with different credentials", 14000, 25, 50, 150, 10 - LTEXT "This option can allow you to run the this shortcut as another user, or continue as yourself while protecting your computer and data from unauthorized program activity.", -1, 50, 60, 175, 40 - CHECKBOX "Run in seperate memory space", 14001, 25, 100, 90, 10, WS_DISABLED + LTEXT "éæ©ä½ æ³è¦ä¸ºè¿ä¸ªå¿«æ·æ¹å¼çé«çº§çå±æ§ã", -1, 5, 30, 210, 10 + CHECKBOX "以ä¸åç¨æ·èº«ä»½è¿è¡", 14000, 25, 50, 150, 10 + LTEXT "æ¤é项å¯ä»¥å 许æ¨è¿è¡æ¤å¿«æ·æ¹å¼ä½ä¸ºå¦ä¸ä¸ªç¨æ·ï¼æ继ç»ä½ä¸ºèªå·±åæ¶ä¿æ¤æ¨ç计ç®æºåæ°æ®å åæªç»ææçç¨åºæ´»å¨ã", -1, 50, 60, 175, 40 + CHECKBOX "å¨åç¬çå å空é´ä¸è¿è¡", 14001, 25, 100, 90, 10, WS_DISABLED PUSHBUTTON "ç¡®å®", 1, 63, 124, 50, 15, WS_VISIBLE - PUSHBUTTON "Abort", 2, 120, 124, 50, 15, WS_VISIBLE + PUSHBUTTON "ä¸æ¢", 2, 120, 124, 50, 15, WS_VISIBLE END IDD_FOLDER_PROPERTIES DIALOGEX 0, 0, 240, 205 STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION -CAPTION "General" +CAPTION "常è§" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN ICON "", 14000, 10, 3, 32, 32, WS_VISIBLE EDITTEXT 14001, 70, 9, 158, 14, ES_LEFT - LTEXT "Type of file:", 14004, 8, 40, 55, 10 - CONTROL "Folder", 14005, "edit", ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL, 68, 40, 160, 10 + LTEXT "æ件类åï¼", 14004, 8, 40, 55, 10 + CONTROL "æ件夹", 14005, "edit", ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL, 68, 40, 160, 10 LTEXT "", -1, 8, 31, 221, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Location:", 14008, 8, 56, 55, 10 + LTEXT "å°ç¹:", 14008, 8, 56, 55, 10 EDITTEXT 14009, 68, 56, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | ES_AUTOHSCROLL | NOT WS_TABSTOP - LTEXT "Size:", 14010, 8, 72, 55, 10 + LTEXT "大å°:", 14010, 8, 72, 55, 10 EDITTEXT 14011, 68, 72, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Size on disk:", 140101, 8, 88, 55, 10 + LTEXT "å¨ç£çä¸ç大å°ï¼", 140101, 8, 88, 55, 10 EDITTEXT 14012, 68, 88, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "Contains:", 14026, 8, 104, 55, 10 + LTEXT "å å«ï¼", 14026, 8, 104, 55, 10 EDITTEXT 14027, 68, 104, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL LTEXT "", -1, 8, 120, 221, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Created:", 14014, 8, 128, 55, 10 + LTEXT "å建ï¼", 14014, 8, 128, 55, 10 EDITTEXT 14015, 68, 128, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL LTEXT "", -1, 8, 144, 221, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Attributes:", 14020, 8, 152, 46, 10 - AUTOCHECKBOX "&Read-only", 14021, 56, 152, 70, 10 - AUTOCHECKBOX "&Hidden", 14022, 56, 166, 70, 10 - AUTOCHECKBOX "&Archive", 14023, 56, 180, 70, 10 - PUSHBUTTON "A&dvanced...", 14028, 158, 150, 70, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + LTEXT "å±æ§ï¼", 14020, 8, 152, 46, 10 + AUTOCHECKBOX "åªè¯»æ¨¡å¼(&R)", 14021, 56, 152, 70, 10 + AUTOCHECKBOX "éè(&H)", 14022, 56, 166, 70, 10 + AUTOCHECKBOX "åæ¡£(&A)", 14023, 56, 180, 70, 10 + PUSHBUTTON "é«çº§...(&D)", 14028, 158, 150, 70, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP END IDD_FILE_PROPERTIES DIALOGEX 0, 0, 240, 205 STYLE DS_SHELLFONT | WS_CHILD | WS_CAPTION -CAPTION "General" +CAPTION "常è§" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN ICON "", 14000, 10, 3, 32, 32, WS_VISIBLE EDITTEXT 14001, 70, 9, 158, 14, ES_LEFT | WS_TABSTOP LTEXT "", -1, 8, 29, 221, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Type of file:", 14004, 8, 35, 50, 10 + LTEXT "æ件类åï¼", 14004, 8, 35, 50, 10 CONTROL "File", 14005, "edit", ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP, 68, 35, 160, 10 - LTEXT "Opens with:", 14006, 8, 53, 50, 10 + LTEXT "æå¼æ¹å¼:", 14006, 8, 53, 50, 10 ICON "", 14025, 68, 52, 11, 10, NOT WS_VISIBLE - PUSHBUTTON "&Change...", 14024, 168, 50, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "æ´æ¢...(&C)", 14024, 168, 50, 60, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP EDITTEXT 14007, 68, 53, 90, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | ES_AUTOHSCROLL | NOT WS_TABSTOP LTEXT "", -1, 8, 68, 221, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Location:", 14008, 8, 75, 45, 10 + LTEXT "å°ç¹:", 14008, 8, 75, 45, 10 EDITTEXT 14009, 68, 75, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | ES_AUTOHSCROLL | NOT WS_TABSTOP - LTEXT "Size:", 14010, 8, 91, 45, 10 + LTEXT "大å°:", 14010, 8, 91, 45, 10 EDITTEXT 14011, 68, 91, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - LTEXT "Size on disk:", 140112, 8, 107, 55, 10 + LTEXT "å¨ç£çä¸ç大å°ï¼", 140112, 8, 107, 55, 10 EDITTEXT 14012, 68, 107, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP LTEXT "", -1, 8, 123, 221, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Created:", 14014, 8, 131, 45, 10 + LTEXT "å建ï¼", 14014, 8, 131, 45, 10 EDITTEXT 14015, 68, 131, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - LTEXT "Modified:", 14016, 8, 147, 45, 10 + LTEXT "修订æ¥æï¼", 14016, 8, 147, 45, 10 EDITTEXT 14017, 68, 147, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - LTEXT "Accessed:", 14018, 8, 163, 45, 10 + LTEXT "访é®ï¼", 14018, 8, 163, 45, 10 EDITTEXT 14019, 68, 163, 160, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP LTEXT "", -1, 8, 179, 221, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Attributes:", 14020, 8, 189, 45, 10 - AUTOCHECKBOX "&Read-only", 14021, 58, 189, 67, 10 - AUTOCHECKBOX "&Hidden", 14022, 126, 189, 50, 10 - AUTOCHECKBOX "&Archive", 14023, 181, 189, 49, 10 - PUSHBUTTON "A&dvanced...", 14028, 180, 185, 50, 15, WS_TABSTOP + LTEXT "å±æ§ï¼", 14020, 8, 189, 45, 10 + AUTOCHECKBOX "åªè¯»æ¨¡å¼(&R)", 14021, 58, 189, 67, 10 + AUTOCHECKBOX "éè(&H)", 14022, 126, 189, 50, 10 + AUTOCHECKBOX "åæ¡£(&A)", 14023, 181, 189, 49, 10 + PUSHBUTTON "é«çº§...(&A)", 14028, 180, 185, 50, 15, WS_TABSTOP END IDD_FILE_VERSION DIALOGEX 0, 0, 235, 215 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Version" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - LTEXT "File version: ", 14000, 10, 10, 55, 10 +CAPTION "çæ¬" +FONT 9, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "æ件çæ¬: ", 14000, 10, 10, 55, 10 EDITTEXT 14001, 77, 10, 152, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER - LTEXT "Description: ", 14002, 10, 27, 45, 10 + LTEXT "æè¿°: ", 14002, 10, 27, 45, 10 EDITTEXT 14003, 77, 27, 152, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER - LTEXT "Copyright: ", 14004, 10, 46, 66, 10 + LTEXT "çæ: ", 14004, 10, 46, 66, 10 EDITTEXT 14005, 77, 46, 152, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER - GROUPBOX "Other version information: ", 14006, 6, 70, 222, 115 - LTEXT "Item name: ", 14007, 13, 82, 50, 10 - LTEXT "Value: ", 14008, 112, 82, 45, 10 + GROUPBOX "å ¶ä»çæ¬ä¿¡æ¯: ", 14006, 6, 70, 222, 115 + LTEXT "项ç®å称: ", 14007, 13, 82, 50, 10 + LTEXT "å¼: ", 14008, 112, 82, 45, 10 LISTBOX 14009, 12, 94, 94, 83, LBS_STANDARD | WS_TABSTOP | LBS_NOTIFY EDITTEXT 14010, 112, 93, 109, 83, ES_LEFT | WS_BORDER | WS_VSCROLL | WS_GROUP | ES_MULTILINE | ES_READONLY END IDD_DRIVE_PROPERTIES DIALOGEX 0, 0, 240, 230 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "General" +CAPTION "常è§" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN ICON "", 14016, 10, 3, 32, 32, WS_VISIBLE EDITTEXT 14000, 40, 11, 190, 14, ES_LEFT | WS_BORDER | WS_GROUP | ES_AUTOHSCROLL LTEXT "", -1, 8, 32, 223, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Type:", -1, 8, 38, 95, 10 + LTEXT "ç±»åï¼", -1, 8, 38, 95, 10 EDITTEXT 14001, 110, 38, 120, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL - LTEXT "File system:", -1, 8, 51, 95, 10 + LTEXT "æ件系ç»ï¼", -1, 8, 51, 95, 10 EDITTEXT 14002, 110, 51, 120, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP LTEXT "", -1, 8, 64, 223, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE CONTROL "", 14013, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 69, 10, 10 - LTEXT "Used space:", -1, 25, 69, 80, 10 + LTEXT "å·²ç¨ç空é´ï¼", -1, 25, 69, 80, 10 EDITTEXT 14003, 110, 69, 86, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL EDITTEXT 14004, 197, 69, 33, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL CONTROL "", 14014, "Static", SS_SUNKEN | SS_OWNERDRAW, 8, 82, 10, 10 - LTEXT "Free space:", -1, 25, 82, 80, 10 + LTEXT "å¯ç¨ç©ºé´:", -1, 25, 82, 80, 10 EDITTEXT 14005, 110, 82, 86, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL EDITTEXT 14006, 197, 82, 33, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL LTEXT "", -1, 8, 97, 223, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - LTEXT "Capacity:", -1, 25, 103, 80, 10 + LTEXT "容éï¼", -1, 25, 103, 80, 10 EDITTEXT 14007, 110, 103, 86, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL EDITTEXT 14008, 197, 103, 33, 10, ES_LEFT | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP | ES_AUTOHSCROLL CONTROL "", 14015, "Static", SS_OWNERDRAW, 70, 116, 100, 30 - LTEXT "Drive %c", 14009, 100, 150, 70, 10 - PUSHBUTTON "&Disk Cleanup", 14010, 160, 154, 70, 15, WS_TABSTOP + LTEXT "ç£ç %c", 14009, 100, 150, 70, 10 + PUSHBUTTON "ç£çæ¸ ç(&D)", 14010, 160, 154, 70, 15, WS_TABSTOP LTEXT "", -1, 8, 171, 223, 1, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE - CHECKBOX "Compress drive to save disk space", 14011, 8, 191, 222, 10, WS_DISABLED - CHECKBOX "Allow Indexing Service to index this disk for fast file searching", 14012, 8, 205, 222, 10, WS_DISABLED + CHECKBOX "å缩ç£ç以èçç£ç空é´", 14011, 8, 191, 222, 10, WS_DISABLED + CHECKBOX "å 许索å¼æå¡ç¼å¶è¯¥ç£ççå¿«éæç´¢æ件", 14012, 8, 205, 222, 10, WS_DISABLED END IDD_DRIVE_TOOLS DIALOGEX 0, 0, 240, 230 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Tools" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Error-checking", -1, 5, 5, 230, 60 +CAPTION "å·¥å ·" +FONT 9, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "é误æ£æ¥", -1, 5, 5, 230, 60 ICON IDI_SHELL_TOOLS_CHKDSK, IDC_STATIC, 13, 25, 21, 20 - LTEXT "This option will check the volume for\nerrors.", -1, 40, 25, 160, 20 - PUSHBUTTON "Check Now...", 14000, 130, 45, 90, 15, WS_TABSTOP - GROUPBOX "Defragmentation", -1, 5, 65, 230, 60 + LTEXT "该é项å°æ£æ¥å®¹é\né误ã", -1, 40, 25, 160, 20 + PUSHBUTTON "ç°å¨æ£æ¥...", 14000, 130, 45, 90, 15, WS_TABSTOP + GROUPBOX "ç¢çæ´ç", -1, 5, 65, 230, 60 ICON IDI_SHELL_TOOLS_DEFRAG, IDC_STATIC, 13, 85, 21, 20 - LTEXT "This option will defragment files on the volume", -1, 40, 85, 160, 20 - PUSHBUTTON "Defragment Now...", 14001, 130, 105, 90, 15, WS_TABSTOP - GROUPBOX "Backup", -1, 5, 130, 230, 60 + LTEXT "æ¤é项å°å¯¹å®¹éä¸çæ件è¿è¡ç¢çæ´ç", -1, 40, 85, 160, 20 + PUSHBUTTON "ç«å³è¿è¡ç¢çæ´ç...", 14001, 130, 105, 90, 15, WS_TABSTOP + GROUPBOX "å¤ä»½", -1, 5, 130, 230, 60 ICON IDI_SHELL_TOOLS_BACKUP, IDC_STATIC, 13, 150, 21, 20 - LTEXT "This option will back up files on the volume.", -1, 40, 150, 160, 20 - PUSHBUTTON "Backup Now...", 14002, 130, 170, 90, 15, WS_TABSTOP + LTEXT "æ¤é项å°å¤ä»½å®¹éä¸çæ件ã", -1, 40, 150, 160, 20 + PUSHBUTTON "ç°å¨å¤ä»½...", 14002, 130, 170, 90, 15, WS_TABSTOP END IDD_DRIVE_HARDWARE DIALOGEX 0, 0, 240, 230 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Hardware" +CAPTION "硬件" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN END IDD_RUN_AS DIALOGEX 0, 0, 240, 190 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Run As" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - LTEXT "Which user account do you want to use to run this program?", -1, 10, 20, 220, 20 - CHECKBOX "Current User %s", 14000, 10, 45, 150, 10 - LTEXT "Protect my computer and data from unauthorized program activity", -1, 25, 57, 200, 10, WS_DISABLED - CHECKBOX "This option can prevent computer viruses from harming your computer or personal data, but selecting it might cause the program to function improperly.", 14001, 25, 68, 200, 30, WS_DISABLED | BS_MULTILINE - CHECKBOX "The following user:", 14002, 10, 100, 90, 10 - LTEXT "User name:", -1, 20, 118, 54, 10 +CAPTION "è¿è¡ä½ä¸º" +FONT 9, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "ä½ æ³è¦ä½¿ç¨æ¥è¿è¡è¿ä¸ªç¨åºåªä¸ä¸ªç¨æ·å¸æ·ï¼", -1, 10, 20, 220, 20 + CHECKBOX "å½åç¨æ· %s", 14000, 10, 45, 150, 10 + LTEXT "ä¿æ¤æç计ç®æºåæ°æ®ä¸åæªææçç¨åºçæ´»å¨", -1, 25, 57, 200, 10, WS_DISABLED + CHECKBOX "æ¤é项å¯é²æ¢è®¡ç®æºç æ¯å±å®³æ¨ç计ç®æºæ个人æ°æ®ï¼ä½éæ©å®å¯è½ä¼å¼èµ·ç¨åºå·¥ä½ä¸æ£å¸¸ã", 14001, 25, 68, 200, 30, WS_DISABLED | BS_MULTILINE + CHECKBOX "ä¸åç¨æ·:", 14002, 10, 100, 90, 10 + LTEXT "ç¨æ·å称ï¼", -1, 20, 118, 54, 10 COMBOBOX 14003, 75, 115, 100, 15, CBS_DROPDOWNLIST | WS_VSCROLL | WS_VISIBLE | WS_TABSTOP PUSHBUTTON "...", 14004, 180, 115, 30, 14, WS_TABSTOP - LTEXT "Password:", -1, 20, 143, 53, 10 + LTEXT "å¯ç ï¼", -1, 20, 143, 53, 10 EDITTEXT 14005, 74, 140, 100, 14, ES_LEFT | WS_BORDER | WS_GROUP PUSHBUTTON "...", 14006, 180, 140, 30, 14, WS_TABSTOP PUSHBUTTON "ç¡®å®", 14007, 57, 170, 60, 14, WS_TABSTOP @@ -380,154 +380,154 @@ IDD_RECYCLE_BIN_PROPERTIES DIALOGEX 0, 0, 240, 190 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Recycle Bin Properties" +CAPTION "åæ¶ç«å±æ§" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 10, 10, 220, 50 - GROUPBOX "Settings for selected location", -1, 10, 72, 220, 70 - RADIOBUTTON "&Custom size:", 14001, 20, 90, 80, 10, WS_TABSTOP + GROUPBOX "æéä½ç½®ç设置", -1, 10, 72, 220, 70 + RADIOBUTTON "èªå®ä¹å¤§å°(&C):", 14001, 20, 90, 80, 10, WS_TABSTOP EDITTEXT 14002, 106, 87, 50, 14, WS_TABSTOP | ES_NUMBER - LTEXT "M&aximum size(MB):", -1, 20, 105, 70, 10 - RADIOBUTTON "Do not move files to the &Recycle Bin. Remove files immediately when deleted.", 14003, 20, 117, 170, 20, BS_MULTILINE | WS_TABSTOP - AUTOCHECKBOX "&Display delete confirmation dialog", 14004, 20, 155, 140, 10, WS_TABSTOP + LTEXT "æ大大å°(MB)(&A):", -1, 20, 105, 70, 10 + RADIOBUTTON "ä¸å°æ件移å°åæ¶ç«ãå é¤æ件æ¶ï¼ç«å³å é¤ã(&R)", 14003, 20, 117, 170, 20, BS_MULTILINE | WS_TABSTOP + AUTOCHECKBOX "æ¾ç¤ºå é¤ç¡®è®¤å¯¹è¯æ¡(&D)", 14004, 20, 155, 140, 10, WS_TABSTOP END IDD_OPEN_WITH DIALOGEX 0, 0, 264, 256 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION -CAPTION "Open With" +CAPTION "å¼æ¾ä¸" FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN ICON IDI_SHELL_OPEN_WITH, -1, 8, 12, 21, 20 - LTEXT "Choose the program you want to use to open this file:", -1, 44, 12, 211, 10 - LTEXT "File: ", 14001, 44, 25, 188, 20 - GROUPBOX "&Programs", -1, 7, 42, 249, 187 - CONTROL "Programs", 14002, WC_TREEVIEW, WS_BORDER | WS_TABSTOP | TVS_SHOWSELALWAYS, 16 ,57, 230, 130 - AUTOCHECKBOX "&Always use the selected program to open this kind of file", 14003, 20, 193, 225, 10 - PUSHBUTTON "&Browse...", 14004, 198, 207, 50, 14 + LTEXT "éæ©æ¨æ³è¦ç¨æ¥æå¼æ¤æ件çç¨åº:", -1, 44, 12, 211, 10 + LTEXT "æ件: ", 14001, 44, 25, 188, 20 + GROUPBOX "ç¨åº(&P)", -1, 7, 42, 249, 187 + CONTROL "ç¨åº", 14002, WC_TREEVIEW, WS_BORDER | WS_TABSTOP | TVS_SHOWSELALWAYS, 16 ,57, 230, 130 + AUTOCHECKBOX "å§ç»ä½¿ç¨éæ©çç¨åºæå¼è¿ç§æ件(&A)", 14003, 20, 193, 225, 10 + PUSHBUTTON "æµè§...(&B)", 14004, 198, 207, 50, 14 DEFPUSHBUTTON "ç¡®å®", IDOK, 150, 236, 50, 14 PUSHBUTTON "åæ¶", IDCANCEL, 206, 236, 50, 14 END IDD_FOLDER_OPTIONS_GENERAL DIALOGEX 0, 0, 264, 256 STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION -CAPTION "General" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Tasks", -1, 7, 10, 249, 45 +CAPTION "常è§" +FONT 9, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "ä»»å¡", -1, 7, 10, 249, 45 ICON "", 30109, 14, 25, 21, 20, SS_REALSIZECONTROL - AUTORADIOBUTTON "Show common tasks in &folders", 14001, 40, 25, 120, 10, WS_TABSTOP | WS_GROUP - AUTORADIOBUTTON "Use ReactOS class&ic folders", 14002, 40, 37, 120, 10, WS_TABSTOP | WS_GROUP - GROUPBOX "Browse folders", -1, 7, 60, 249, 45, WS_TABSTOP + AUTORADIOBUTTON "å¨æ件夹ä¸æ¾ç¤ºå¸¸è§ä»»å¡(&F)", 14001, 40, 25, 120, 10, WS_TABSTOP | WS_GROUP + AUTORADIOBUTTON "使ç¨çµèç»å ¸æ件夹(&I)", 14002, 40, 37, 120, 10, WS_TABSTOP | WS_GROUP + GROUPBOX "æµè§æ件夹", -1, 7, 60, 249, 45, WS_TABSTOP ICON "", 30110, 14, 70, 21, 20, SS_REALSIZECONTROL - AUTORADIOBUTTON "Open each folder in the sa&me window", 14004, 40, 70, 140, 10, WS_TABSTOP | WS_GROUP - AUTORADIOBUTTON "Open each folder in its own &window", 14005, 40, 82, 140, 10, WS_TABSTOP | WS_GROUP - GROUPBOX "Click items as follows", -1, 7, 110, 249, 60 + AUTORADIOBUTTON "å¨åä¸çªå£ä¸æå¼æ¯ä¸ªæ件夹(&M)", 14004, 40, 70, 140, 10, WS_TABSTOP | WS_GROUP + AUTORADIOBUTTON "å¨å ¶èªå·±ççªå£ä¸æå¼æ¯ä¸ªæ件夹(&W)", 14005, 40, 82, 140, 10, WS_TABSTOP | WS_GROUP + GROUPBOX "åå»é¡¹ç®ï¼å¦ä¸æ示", -1, 7, 110, 249, 60 ICON "", 30111, 14, 120, 21, 20, SS_REALSIZECONTROL - AUTORADIOBUTTON "&Single-click to open an item (point to select)", 14007, 40, 120, 170, 10, WS_TABSTOP | WS_GROUP - AUTORADIOBUTTON "Underline icon titles consistent with my &browser", 14008, 50, 132, 170, 10, WS_TABSTOP | WS_GROUP - AUTORADIOBUTTON "Underline icon titles only when I &point at them", 14009, 50, 144, 170, 10, WS_TABSTOP | WS_GROUP - AUTORADIOBUTTON "&Double-click to open an item (single-click to select)", 14010, 40, 156, 170, 10, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&Restore Defaults", 14011, 180, 180, 60, 14, WS_TABSTOP + AUTORADIOBUTTON "éè¿åå»æå¼é¡¹ç® ï¼æåæ¶éå®ï¼(&s)", 14007, 40, 120, 170, 10, WS_TABSTOP | WS_GROUP + AUTORADIOBUTTON "强è°ç¬¦åæçæµè§å¨çå¾æ æ é¢(&B)", 14008, 50, 132, 170, 10, WS_TABSTOP | WS_GROUP + AUTORADIOBUTTON "ä» å½æåä»ä»¬å¼ºè°å¾æ æ é¢(&P)", 14009, 50, 144, 170, 10, WS_TABSTOP | WS_GROUP + AUTORADIOBUTTON "åå»è¦æå¼çé¡¹ç® ï¼ååå»å¯éæ©ï¼(&D)", 14010, 40, 156, 170, 10, WS_TABSTOP | WS_GROUP + PUSHBUTTON "è¿åé»è®¤å¼(&R)", 14011, 180, 180, 60, 14, WS_TABSTOP END IDD_FOLDER_OPTIONS_VIEW DIALOGEX 0, 0, 264, 256 STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION -CAPTION "View" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Folder views", -1, 7, 10, 249, 60 +CAPTION "è§å¾" +FONT 9, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "è§å¾", -1, 7, 10, 249, 60 //ICON - LTEXT "You can apply the view(such as Details or Tiles) that\nyou are using for this folder to all folders.", -1, 60, 20, 180, 20 - PUSHBUTTON "Apply to A&ll Folders", 14001, 60, 50, 80, 14, WS_TABSTOP - PUSHBUTTON "&Reset All Folders", 14002, 150, 50, 80, 14, WS_TABSTOP - LTEXT "Advanced settings:", -1, 7, 80, 100, 10 + LTEXT "æ¨å¯ä»¥åºç¨æ¨æ£å¨ä½¿ç¨æ¤æ件夹ç\næææ件夹çè§å¾ ï¼å¦è¯¦ç»ä¿¡æ¯æå¹³éº)ã", -1, 60, 20, 180, 20 + PUSHBUTTON "åºç¨å°æææ件夹(&L)", 14001, 60, 50, 80, 14, WS_TABSTOP + PUSHBUTTON "éç½®æææ件夹(&R)", 14002, 150, 50, 80, 14, WS_TABSTOP + LTEXT "é«çº§ç设置ï¼", -1, 7, 80, 100, 10 CONTROL "", 14003, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_NOCOLUMNHEADER | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 90, 249, 120 - PUSHBUTTON "Restore &Defaults", 14004, 180, 210, 80, 14, WS_TABSTOP + PUSHBUTTON "è¿åé»è®¤å¼(&D)", 14004, 180, 210, 80, 14, WS_TABSTOP END IDD_FOLDER_OPTIONS_FILETYPES DIALOGEX 0, 0, 264, 256 STYLE DS_SHELLFONT | WS_POPUP | WS_CAPTION -CAPTION "File Types" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - LTEXT "Registered file &types:", -1, 7, 10, 70, 10 +CAPTION "æ件类å" +FONT 9, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "已注åçæ件类å(&T):", -1, 7, 10, 70, 10 CONTROL "", 14000, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_SHAREIMAGELISTS | WS_BORDER | WS_TABSTOP, 7, 20, 249, 80 - PUSHBUTTON "&New", 14001, 120, 110, 50, 14, WS_TABSTOP - PUSHBUTTON "&Delete", 14002, 180, 110, 50, 14, WS_TABSTOP - GROUPBOX "Details for '%s' extension", 14003, 7, 130, 249, 70 - LTEXT "Opens with:", -1, 12, 140, 40, 10 + PUSHBUTTON "æ°å»º(&N)", 14001, 120, 110, 50, 14, WS_TABSTOP + PUSHBUTTON "å é¤(&D)", 14002, 180, 110, 50, 14, WS_TABSTOP + GROUPBOX "'%S' æ©å±ç详ç»ä¿¡æ¯", 14003, 7, 130, 249, 70 + LTEXT "æå¼æ¹å¼:", -1, 12, 140, 40, 10 //ICON - LTEXT "Appname", 14005, 100, 140, 40, 10 - PUSHBUTTON "&Change...", 14006, 180, 140, 50, 14, WS_TABSTOP + LTEXT "åºç¨ç¨åºå称", 14005, 100, 140, 40, 10 + PUSHBUTTON "æ´æ¢...(&C)", 14006, 180, 140, 50, 14, WS_TABSTOP LTEXT "", 14007, 12, 155, 160, 30 - PUSHBUTTON "Ad&vanced", 14008, 180, 175, 50, 14, WS_TABSTOP + PUSHBUTTON "é«çº§(&V)", 14008, 180, 175, 50, 14, WS_TABSTOP END IDD_CONFIRM_FILE_REPLACE DIALOGEX 0, 0, 282, 143 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION -CAPTION "Confirm File Replace" -FONT 9, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON "&Yes", IDYES, 20, 122, 60, 14 - PUSHBUTTON "Yes to &All", 12807, 85, 122, 60, 14 - PUSHBUTTON "&No", IDNO, 150, 122, 60, 14 +CAPTION "确认æ件æ¿æ¢" +FONT 9, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "æ¯(&Y)", IDYES, 20, 122, 60, 14 + PUSHBUTTON "å ¨æ¯(&A)", 12807, 85, 122, 60, 14 + PUSHBUTTON "å¦(&N)", IDNO, 150, 122, 60, 14 PUSHBUTTON "åæ¶", IDCANCEL, 215, 122, 60, 14 ICON 146, -1, 11, 10, 21, 20, SS_REALSIZECONTROL - LTEXT "This folder already contains a file named '%2'.", 12291, 44, 10, 231, 22, SS_NOPREFIX - LTEXT "This folder already contains a read-only file named '%2'.", 12292, 41, 10, 222, 22, SS_NOPREFIX - LTEXT "This folder already contains a system file named '%2'.", 12293, 41, 10, 222, 22, SS_NOPREFIX - LTEXT "Would you like to replace the existing file", -1, 44, 35, 228, 10, SS_NOPREFIX - LTEXT "(unknown date and size)", 12302, 79, 51, 198, 20, SS_NOPREFIX + LTEXT "æ¤æ件夹已å å«å为 '%2' çæ件ã", 12291, 44, 10, 231, 22, SS_NOPREFIX + LTEXT "æ¤æ件夹已å å«ä¸ä¸ªå为 '%2' çåªè¯»æ件ã", 12292, 41, 10, 222, 22, SS_NOPREFIX + LTEXT "æ¤æ件夹已å å«ä¸ä¸ªå为 '%2' çç³»ç»æ件ã", 12293, 41, 10, 222, 22, SS_NOPREFIX + LTEXT "ä½ æ³è¦æ¿æ¢ç°ææ件å", -1, 44, 35, 228, 10, SS_NOPREFIX + LTEXT "(æªç¥çæ¥æå大å°)", 12302, 79, 51, 198, 20, SS_NOPREFIX ICON "", 12300, 50, 49, 21, 20, SS_REALSIZECONTROL - LTEXT "with this one?", -1, 44, 75, 228, 10, SS_NOPREFIX - LTEXT "(unknown date and size)", 12303, 79, 91, 198, 20, SS_NOPREFIX + LTEXT "ç¨è¿ä¸ªåï¼", -1, 44, 75, 228, 10, SS_NOPREFIX + LTEXT "(æªç¥çæ¥æå大å°)", 12303, 79, 91, 198, 20, SS_NOPREFIX ICON "", 12301, 50, 89, 21, 20, SS_REALSIZECONTROL END IDD_LOG_OFF DIALOGEX 0, 0, 190, 60 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION -CAPTION "Log Off ReactOS" +CAPTION "注é ReactOS" FONT 9, "MS Shell Dlg" BEGIN ICON 45, 14344, 10, 10, 21, 20, SS_REALSIZECONTROL - LTEXT "Are you sure you want to log off?", -1, 43, 11, 140, 22 - DEFPUSHBUTTON "&Log Off", IDOK, 57, 40, 60, 14 + LTEXT "ç¡®ä¿¡ä½ æ³è¦æ³¨éå?", -1, 43, 11, 140, 22 + DEFPUSHBUTTON "注é(&L)", IDOK, 57, 40, 60, 14 PUSHBUTTON "åæ¶", IDCANCEL, 122, 40, 60, 14 END IDD_DISCONNECT DIALOGEX 0, 0, 190, 60 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION -CAPTION "Disconnect ReactOS" +CAPTION "æå¼ ReactOS" FONT 9, "MS Shell Dlg" BEGIN ICON 49, 14346, 10, 10, 21, 20, SS_REALSIZECONTROL - LTEXT "Are you sure you want to disconnect?", -1, 49, 12, 137, 23 - DEFPUSHBUTTON "&Disconnect", IDOK, 57, 40, 60, 14 + LTEXT "ç¡®å®è¦æå¼è¿æ¥å?", -1, 49, 12, 137, 23 + DEFPUSHBUTTON "æå¼(&D)", IDOK, 57, 40, 60, 14 PUSHBUTTON "åæ¶", IDCANCEL, 123, 40, 60, 14 END IDD_AUTOPLAY1 DIALOGEX 0, 0, 227, 218 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUPWINDOW | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION -CAPTION "AutoPlay" -FONT 9, "MS Shell Dlg" -BEGIN - LTEXT "&Select a content type, then choose an action for ReactOS to perform automatically when that type is used in this device:", 1000, 7, 7, 215, 20 +CAPTION "èªå¨ææ¾" +FONT 9, "MS Shell Dlg" +BEGIN + LTEXT "&éæ©ä¸ä¸ªå 容类åï¼ç¶åéæ©æä½çµèæ¥èªå¨æ§è¡å¨æ¤è®¾å¤ä¸ä½¿ç¨è¯¥ç±»åçæ¶å(&S):", 1000, 7, 7, 215, 20 CONTROL "", 1001, "COMBOBOXEX32", WS_TABSTOP | 0x00000043, 7, 27, 212, 200 - GROUPBOX "Actions", -1, 7, 45, 212, 146 - AUTORADIOBUTTON "Select an action to &perform:", 1005, 14, 54, 202, 10, WS_GROUP + GROUPBOX "è¡å¨", -1, 7, 45, 212, 146 + AUTORADIOBUTTON "éæ©è¦æ§è¡çæä½(&P):", 1005, 14, 54, 202, 10, WS_GROUP CONTROL "LIST2", 1002, "SYSLISTVIEW32", WS_BORDER | WS_TABSTOP | 0x0000C04D, 22, 66, 192, 107 - AUTORADIOBUTTON "Prompt me each time to &choose an action", 1006, 14, 177, 202, 10 - PUSHBUTTON "&Restore Defaults", 1008, 108, 197, 110, 14, WS_DISABLED + AUTORADIOBUTTON "æ¯æ¬¡éæ©æä½æ示æ(&C)", 1006, 14, 177, 202, 10 + PUSHBUTTON "è¿åé»è®¤å¼(&Rï¼", 1008, 108, 197, 110, 14, WS_DISABLED END IDD_MIXED_CONTENT1 DIALOGEX 0, 0, 227, 207 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION -CAPTION "Mixed Content" +CAPTION "æ··åçå 容" FONT 9, "MS Shell Dlg" BEGIN ICON "", 1000, 5, 7, 21, 20 - LTEXT "This disk or device contains more than one type of content.", 1001, 32, 7, 191, 20 - LTEXT "What do you want ReactOS to do?", 1002, 32, 31, 188, 8 + LTEXT "æ¤ç£çæ设å¤å å«å¤ä¸ªç±»åçå 容ã", 1001, 32, 7, 191, 20 + LTEXT "ä½ æ³è¦ ReactOS åçæ¯ä»ä¹ï¼", 1002, 32, 31, 188, 8 CONTROL "", 1003, "SYSLISTVIEW32", WS_BORDER | WS_TABSTOP | 0x0000C04D, 32, 43, 188, 139 DEFPUSHBUTTON "ç¡®å®", IDOK, 96, 186, 60, 14 PUSHBUTTON "åæ¶", IDCANCEL, 160, 186, 60, 14 @@ -535,46 +535,46 @@ IDD_MIXED_CONTENT2 DIALOGEX 0, 0, 227, 206 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION -CAPTION "Mixed Content" +CAPTION "æ··åçå 容" FONT 9, "MS Shell Dlg" BEGIN ICON "", 1000, 5, 7, 21, 20 - LTEXT "ReactOS can perform the same action each time you insert a disk or connect a device with this kind of file:", 1001, 30, 7, 193, 20 + LTEXT "ReactOS å¯ä»¥æ§è¡ç¸åçæä½æ¯æ¬¡æ¨æå ¥çæè¿æ¥ç设å¤ä¸æ¤ç±»åçæ件ï¼", 1001, 30, 7, 193, 20 ICON "", 1005, 32, 27, 11, 10, SS_REALSIZECONTROL EDITTEXT 1006, 49, 28, 177, 14, ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - LTEXT "What do you want ReactOS to do?", 1002, 32, 41, 190, 8 + LTEXT "ä½ æ³è¦ ReactOS åçæ¯ä»ä¹ï¼", 1002, 32, 41, 190, 8 CONTROL "", 1003, "SYSLISTVIEW32", WS_BORDER | WS_TABSTOP | 0x0000C04D, 32, 55, 188, 112 - AUTOCHECKBOX "Always do the selected action.", 1004, 32, 171, 190, 10 + AUTOCHECKBOX "å§ç»æ§è¡éæ©çæä½ã", 1004, 32, 171, 190, 10 DEFPUSHBUTTON "ç¡®å®", IDOK, 96, 185, 60, 14 PUSHBUTTON "åæ¶", IDCANCEL, 160, 185, 60, 14 END IDD_AUTOPLAY2 DIALOGEX 0, 0, 227, 181 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CAPTION -CAPTION "Autoplay" +CAPTION "èªå¨ææ¾" FONT 9, "MS Shell Dlg" BEGIN ICON "", 1000, 5, 7, 21, 20 - LTEXT "ReactOS can perform the same action each time you connect this device.", 1001, 32, 7, 190, 22 - LTEXT "&What do you want ReactOS to do?", 1002, 32, 31, 190, 8 + LTEXT "ReactOS å¯ä»¥æ§è¡ç¸åçæä½æ¯æ¬¡æ¨è¿æ¥æ¤è®¾å¤ã", 1001, 32, 7, 190, 22 + LTEXT "ä½ æ³è¦ ReactOS åçæ¯ä»ä¹ï¼(&W)", 1002, 32, 31, 190, 8 CONTROL "", 1003, "SYSLISTVIEW32", WS_BORDER | WS_TABSTOP | 0x0000C04D, 32, 43, 187, 96 - AUTOCHECKBOX "&Always perform the selected action", 1004, 32, 143, 190, 8 + AUTOCHECKBOX "æ»æ¯æ§è¡éå®çæä½(&A)", 1004, 32, 143, 190, 8 DEFPUSHBUTTON "ç¡®å®", IDOK, 94, 160, 60, 14 PUSHBUTTON "åæ¶", IDCANCEL, 159, 160, 60, 14 END IDD_SHUTDOWN DIALOGEX 0, 0, 211, 103 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUPWINDOW | WS_CAPTION -CAPTION "Shut Down ReactOS" +CAPTION "å ³é ReactOS" FONT 9, "MS Shell Dlg" BEGIN ICON 8240, -1, 6, 6, 21, 20, SS_REALSIZECONTROL | WS_GROUP - LTEXT "What do you want the computer to do?", -1, 39, 7, 167, 10 + LTEXT "ä½ æ³è®©è®¡ç®æºåä»ä¹ï¼", -1, 39, 7, 167, 10 COMBOBOX 8224, 39, 20, 165, 200, CBS_DROPDOWNLIST | WS_VSCROLL - LTEXT "Maintains your session, keeping the computer running on low power with data still in memory. The computer wakes up when you press a key or move the mouse.", 8225, 39, 40, 167, 37 + LTEXT "ç»´æ¤æ¨çä¼è¯ï¼ä¿æå¨ä½åèæ°æ®ä»å¨å åä¸è¿è¡ç计ç®æºãå½ä½ æä¸ä¸ä¸ªé®æ移å¨é¼ æ å°å¤éè¿å°è®¡ç®æºã", 8225, 39, 40, 167, 37 DEFPUSHBUTTON "ç¡®å®", 1, 7, 82, 60, 14, WS_GROUP PUSHBUTTON "åæ¶", IDCANCEL, 75, 82, 60, 14 - PUSHBUTTON "&Help", IDHELP, 144, 82, 60, 14 + PUSHBUTTON "帮å©(&H)", IDHELP, 144, 82, 60, 14 END IDD_FORMAT_DRIVE DIALOGEX 50, 50, 184, 218 @@ -600,14 +600,14 @@ IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115 STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION -CAPTION "Check Disk" -FONT 9, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON "Start", IDOK, 63, 95, 60, 14 - GROUPBOX "Check disk options", -1, 7, 6, 179, 40 - PUSHBUTTON "Cancel", IDCANCEL, 128, 95, 60, 14 - AUTOCHECKBOX "Automatically fix file system errors", 14000, 12, 15, 155, 10 - AUTOCHECKBOX "&Scan for and attempt recovery of bad sectors", 14001, 16, 30, 165, 10 +CAPTION "æ£æ¥ç£ç" +FONT 9, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "å¼å§", IDOK, 63, 95, 60, 14 + GROUPBOX "请æ£æ¥ç£çé项", -1, 7, 6, 179, 40 + PUSHBUTTON "åæ¶", IDCANCEL, 128, 95, 60, 14 + AUTOCHECKBOX "èªå¨ä¿®å¤æ件系ç»é误", 14000, 12, 15, 155, 10 + AUTOCHECKBOX "æ«æ并è¯å¾æ¢å¤åæåº(&S)", 14001, 16, 30, 165, 10 CONTROL "", 14002, "MSCTLS_PROGRESS32", 16, 7, 50, 179, 8 LTEXT "", 14003, 60, 80, 170, 10 END @@ -620,7 +620,7 @@ LTEXT "æ件å:", -1, 7, 14, 208, 10 PUSHBUTTON "æµè§...", IDC_BUTTON_PATH, 148, 24, 67, 14 EDITTEXT IDC_EDIT_PATH, 6, 24, 135, 15, ES_AUTOHSCROLL - LTEXT "Icons:", -1, 7, 47, 208, 10 + LTEXT "å¾æ :", -1, 7, 47, 208, 10 LISTBOX IDC_PICKICON_LIST, 7, 57, 208, 119, LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP, WS_EX_STATICEDGE DEFPUSHBUTTON "ç¡®å®", IDOK, 107, 181, 50, 14 PUSHBUTTON "åæ¶", IDCANCEL, 167, 181, 50, 14 @@ -628,16 +628,14 @@ IDD_NOOPEN DIALOGEX 0, 0, 240, 75 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Caution" +CAPTION "è¦å" FONT 9, "MS Shell Dlg" BEGIN ICON IDI_SHELL_SYSTEM_FILE, IDI_SHELL_SYSTEM_FILE, 5, 5, 21, 20 - LTEXT "This file could either be used by the operating system or by\n\ -another application. Modifying this file might damage your\n\ -system or make it less functional.\n\n\ -Are you sure you want to open this file?", IDC_STATIC, 35, 5, 230, 60 - DEFPUSHBUTTON "Yes", IDYES, 125, 55, 50, 14 - PUSHBUTTON "No", IDNO, 180, 55, 50, 14 + LTEXT "ç±æä½ç³»ç»æå¦ä¸ä¸ªåºç¨ç¨åºï¼ä¹å¯ä»¥ä½¿ç¨æ¤æ件ã\nä¿®æ¹æ¤æ件å¯è½ä¼æåæ¨çç³»ç»ï¼\næè 使å®çåè½è¾å¼±ã\n\n\ +ä½ ç¡®å®ä½ æ³è¦æå¼æ¤æ件ï¼", IDC_STATIC, 35, 5, 230, 60 + DEFPUSHBUTTON "æ¯", IDYES, 125, 55, 50, 14 + PUSHBUTTON "å¦", IDNO, 180, 55, 50, 14 END STRINGTABLE @@ -650,29 +648,29 @@ IDS_SHV_COLUMN5 "å±æ§" IDS_SHV_COLUMN6 "使ç¨ç©ºé´" IDS_SHV_COLUMN7 "å©ä½ç©ºé´" - IDS_SHV_COLUMN8 "Name" - IDS_SHV_COLUMN9 "Comments" - IDS_SHV_COLUMN10 "Owner" - IDS_SHV_COLUMN11 "Group" - IDS_SHV_COLUMN12 "Filename" - IDS_SHV_COLUMN13 "Category" - IDS_SHV_COLUMN_DELFROM "Original location" - IDS_SHV_COLUMN_DELDATE "Date deleted" - IDS_SHV_COLUMN_FONTTYPE "Fonttype" - IDS_SHV_COLUMN_WORKGROUP "Workgroup" - IDS_SHV_NETWORKLOCATION "Network Location" - IDS_SHV_COLUMN_DOCUMENTS "Documents" - IDS_SHV_COLUMN_STATUS "Status" - IDS_SHV_COLUMN_COMMENTS "Comments" - IDS_SHV_COLUMN_LOCATION "Location" - IDS_SHV_COLUMN_MODEL "Model" + IDS_SHV_COLUMN8 "å称" + IDS_SHV_COLUMN9 "è¯è®º" + IDS_SHV_COLUMN10 "ææè " + IDS_SHV_COLUMN11 "å°ç»" + IDS_SHV_COLUMN12 "æ件å" + IDS_SHV_COLUMN13 "ç±»å«" + IDS_SHV_COLUMN_DELFROM "åå§ä½ç½®" + IDS_SHV_COLUMN_DELDATE "å é¤æ¥æ" + IDS_SHV_COLUMN_FONTTYPE "åä½ç±»å" + IDS_SHV_COLUMN_WORKGROUP "å·¥ä½ç»" + IDS_SHV_NETWORKLOCATION "ç½ç»ä½ç½®" + IDS_SHV_COLUMN_DOCUMENTS "æ件" + IDS_SHV_COLUMN_STATUS "ç¶æ" + IDS_SHV_COLUMN_COMMENTS "è¯è®º" + IDS_SHV_COLUMN_LOCATION "ä½ç½®" + IDS_SHV_COLUMN_MODEL "模å" /* special folders */ IDS_DESKTOP "æ¡é¢" IDS_MYCOMPUTER "æççµè" IDS_RECYCLEBIN_FOLDER_NAME "åæ¶ç«" IDS_CONTROLPANEL "æ§å¶é¢æ¿" - IDS_ADMINISTRATIVETOOLS "Administrative Tools" + IDS_ADMINISTRATIVETOOLS "管çå·¥å ·" /* context menus */ IDS_VIEW_LARGE "大å¾æ (&G)" @@ -686,60 +684,60 @@ IDS_DELETE "å é¤(&D)" IDS_PROPERTIES "å±æ§(&P)" IDS_CUT "åªå(&U)" - IDS_RESTORE "Restore" - IDS_FORMATDRIVE "Format..." - IDS_RENAME "Rename" - IDS_PASTE "Paste" - - IDS_CREATEFOLDER_DENIED "Unable to create new Folder: Permission denied." - IDS_CREATEFOLDER_CAPTION "Error during creation of a new folder" - IDS_DELETEITEM_CAPTION "Confirm file deletion" - IDS_DELETEFOLDER_CAPTION "Confirm folder deletion" - IDS_DELETEITEM_TEXT "Are you sure you want to delete '%1'?" - IDS_DELETEMULTIPLE_TEXT "Are you sure you want to delete these %1 items?" - IDS_DELETESELECTED_TEXT "Are you sure you want to delete the selected item(s)?" - IDS_TRASHITEM_TEXT "Are you sure that you want to send '%1' to the Trash?" - IDS_TRASHFOLDER_TEXT "Are you sure that you want to send '%1' and all its content to the Trash?" - IDS_TRASHMULTIPLE_TEXT "Are you sure that you want to send these %1 items to the Trash?" - IDS_CANTTRASH_TEXT "The item '%1' can't be sent to Trash. Do you want to delete it instead?" - IDS_OVERWRITEFILE_TEXT "This folder already contains a file called '%1'.\n\nDo you want to replace it?" - IDS_OVERWRITEFILE_CAPTION "Confirm file overwrite" - IDS_OVERWRITEFOLDER_TEXT "This folder already contains a folder named '%1'.\n\nIf the files in the destination folder have the same names as files in the\nselected folder they will be replaced. Do you still want to move or copy\nthe folder?" - - IDS_FILEOOP_COPYING "Copying..." - IDS_FILEOOP_MOVING "Moving..." - IDS_FILEOOP_DELETING "Deleting..." - IDS_FILEOOP_FROM_TO "From %1 to %2" + IDS_RESTORE "è¿å" + IDS_FORMATDRIVE "æ ¼å¼..." + IDS_RENAME "éå½å" + IDS_PASTE "è´´ä¸" + + IDS_CREATEFOLDER_DENIED "æ æ³å建æ°æä»¶å¤¹ï¼ æé被æç»ã" + IDS_CREATEFOLDER_CAPTION "å建æ°æ件夹æ¶åºé" + IDS_DELETEITEM_CAPTION "确认æ件å é¤" + IDS_DELETEFOLDER_CAPTION "确认æ件夹å é¤" + IDS_DELETEITEM_TEXT "ç¡®å®è¦å é¤ '%1'?" + IDS_DELETEMULTIPLE_TEXT "ç¡®å®è¦å é¤è¿ '%1' 项?" + IDS_DELETESELECTED_TEXT "ç¡®å®è¦å é¤æéç项ç®å?" + IDS_TRASHITEM_TEXT "ä½ ç¡®å®ä½ æ³è¦åé '%1' å°åæ¶ç®±ï¼" + IDS_TRASHFOLDER_TEXT "ç¡®ä¿¡ä½ æ³è¦å° '%1' åå®çææå 容åéå°åæ¶ç«å?" + IDS_TRASHMULTIPLE_TEXT "ç¡®å®è¦å°è¿ '%1' 项åéå°åæ¶ç«å?" + IDS_CANTTRASH_TEXT "é¡¹ç® '%1' ä¸è½åéå°åæ¶ç«ãä½ æ³è¦å é¤å®ç¸ååï¼" + IDS_OVERWRITEFILE_TEXT "æ¤æ件夹已å å«å为 '%1' çæ件ã\n\nä½ æ³è¦æ¿æ¢å®åï¼" + IDS_OVERWRITEFILE_CAPTION "确认æ件è¦ç" + IDS_OVERWRITEFOLDER_TEXT "æ¤æ件夹已å å«ä¸ä¸ªå为 '%1' æ件夹ã\n\nå¦æç®æ æ件夹ä¸çæä»¶å ·æç¸åçå称ä½ä¸º\næéæ件夹ä¸çæ件ï¼ä»ä»¬å°è¢«æ¿æ¢ã ä½ ä»ç¶æ³è¦ç§»å¨æ\nå¤å¶è¯¥æ件夹åï¼" + + IDS_FILEOOP_COPYING "æ£å¨å¤å¶..." + IDS_FILEOOP_MOVING "æ£å¨ç§»å¨..." + IDS_FILEOOP_DELETING "æ£å¨å é¤..." + IDS_FILEOOP_FROM_TO "ä» %1 å° %2" IDS_FILEOOP_FROM "From %1" - IDS_FILEOOP_PREFLIGHT "Preflight" + IDS_FILEOOP_PREFLIGHT "å°åæ£æ¥" /* message box strings */ IDS_RESTART_TITLE "éæ°å¯å¨" IDS_RESTART_PROMPT "æ¯å¦éæ°å¯å¨ç³»ç»?" IDS_SHUTDOWN_TITLE "å ³æº" IDS_SHUTDOWN_PROMPT "æ¯å¦å ³éç³»ç»?" - IDS_LOGOFF_TITLE "Log Off" - IDS_LOGOFF_PROMPT "Do you want to log off?" + IDS_LOGOFF_TITLE "注é" + IDS_LOGOFF_PROMPT "ä½ æ³è¦æ³¨éåï¼" /* Run File dialog */ - IDS_RUNDLG_ERROR "Unable to display Run File dialog box (internal error)" - IDS_RUNDLG_BROWSE_ERROR "Unable to display Browse dialog box (internal error)" - IDS_RUNDLG_BROWSE_CAPTION "Browse" - IDS_RUNDLG_BROWSE_FILTER "Executable Files (*.exe)\0*.exe\0All Files (*.*)\0*.*\0" + IDS_RUNDLG_ERROR "æ æ³æ¾ç¤ºè¿è¡æ件对è¯æ¡ ï¼å é¨é误ï¼" + IDS_RUNDLG_BROWSE_ERROR "æ æ³æ¾ç¤ºæµè§å¯¹è¯æ¡ ï¼å é¨é误ï¼" + IDS_RUNDLG_BROWSE_CAPTION "æµè§" + IDS_RUNDLG_BROWSE_FILTER "å¯æ§è¡æ件 (*.exe)\0*.exe\0æææ件 (*.*)\0*.*\0" /* shell folder path default values */ IDS_PROGRAMS "Start Menu\\Programs" IDS_PERSONAL "æçææ¡£" - IDS_FAVORITES "Favorites" + IDS_FAVORITES "æ¶è夹" IDS_STARTUP "Start Menu\\Programs\\StartUp" - IDS_RECENT "Recent" - IDS_SENDTO "SendTo" - IDS_STARTMENU "Start Menu" - IDS_MYMUSIC "My Music" - IDS_MYVIDEO "My Videos" - IDS_DESKTOPDIRECTORY "Desktop" + IDS_RECENT "æè¿" + IDS_SENDTO "ä¸ºå¿ å¡«é¡¹" + IDS_STARTMENU "å¼å§èå" + IDS_MYMUSIC "æçé³ä¹" + IDS_MYVIDEO "æçè§é¢" + IDS_DESKTOPDIRECTORY "æ¡é¢" IDS_NETHOOD "NetHood" - IDS_TEMPLATES "Templates" + IDS_TEMPLATES "模æ¿" IDS_APPDATA "Application Data" IDS_PRINTHOOD "PrintHood" IDS_LOCAL_APPDATA "Local Settings\\Application Data" @@ -747,7 +745,7 @@ IDS_COOKIES "Cookies" IDS_HISTORY "Local Settings\\History" IDS_PROGRAM_FILES "Program Files" - IDS_MYPICTURES "My Pictures" + IDS_MYPICTURES "æçå¾ç" IDS_PROGRAM_FILES_COMMON "Program Files\\Common Files" IDS_COMMON_DOCUMENTS "Documents" IDS_ADMINTOOLS "Start Menu\\Programs\\Administrative Tools" @@ -757,74 +755,74 @@ IDS_CDBURN_AREA "Local Settings\\Application Data\\Microsoft\\CD Burning" IDS_NETWORKPLACE "ç½ä¸é»å± " - IDS_NEWFOLDER "New Folder" - - IDS_DRIVE_FIXED "Local Disk" - IDS_DRIVE_CDROM "CD Drive" - IDS_DRIVE_NETWORK "Network Disk" - IDS_DRIVE_FLOPPY "3.5 Floppy" - IDS_DRIVE_REMOVABLE "Removable Disk" - IDS_FS_UNKNOWN "Unknown" + IDS_NEWFOLDER "æ°çæ件夹" + + IDS_DRIVE_FIXED "æ¬å°ç£ç" + IDS_DRIVE_CDROM "CD ç£ç" + IDS_DRIVE_NETWORK "ç½ç»ç£ç" + IDS_DRIVE_FLOPPY "3.5 è±å¯¸è½¯ç" + IDS_DRIVE_REMOVABLE "å¯ç§»å¨ç£ç" + IDS_FS_UNKNOWN "æªç¥" /* Open With */ IDS_OPEN_WITH "æå¼æ¹å¼" IDS_OPEN_WITH_CHOOSE "éæ©ç¨åº" - IDS_OPEN_WITH_RECOMMENDED "Recommended Programs:" - IDS_OPEN_WITH_OTHER "Other Programs:" - - IDS_SHELL_ABOUT_AUTHORS "&Authors" - IDS_SHELL_ABOUT_BACK "< &Back" + IDS_OPEN_WITH_RECOMMENDED "æ¨èçç¨åºï¼" + IDS_OPEN_WITH_OTHER "å ¶ä»çç¨åºï¼" + + IDS_SHELL_ABOUT_AUTHORS "ä½è (&A)" + IDS_SHELL_ABOUT_BACK "< è¿å(&B)" FCIDM_SHVIEW_NEW "æ°å»º" FCIDM_SHVIEW_NEWFOLDER "æ件夹(&F)" FCIDM_SHVIEW_NEWLINK "å¿«æ·æ¹å¼(&L)" - IDS_FOLDER_OPTIONS "Folder Options" - IDS_RECYCLEBIN_LOCATION "Recycle Bin Location" - IDS_RECYCLEBIN_DISKSPACE "Space Available" - IDS_EMPTY_BITBUCKET "Empty Recycle Bin" - IDS_PICK_ICON_TITLE "Choose Icon" - IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe, *.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0" - IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files (*.*)\0*.*\0" - IDS_DIRECTORY "Folder" - IDS_VIRTUAL_DRIVER "Virtual Device Driver" - IDS_BAT_FILE "ReactOS Batch File" - IDS_CMD_FILE "ReactOS Command Script" - IDS_COM_FILE "Dos Application" - IDS_CPL_FILE "Control Panel Item" - IDS_CUR_FILE "Cursor" - IDS_DLL_FILE "Application Extension" - IDS_DRV_FILE "Device Driver" - IDS_EXE_FILE "Application" - IDS_FON_FILE "Font file" - IDS_TTF_FILE "TrueType Font file" - IDS_HLP_FILE "Help File" - IDS_INI_FILE "Configuration Settings" - IDS_LNK_FILE "Shortcut" - IDS_SYS_FILE "System file" - - IDS_OPEN_VERB "Open" - IDS_EXPLORE_VERB "Explore" - IDS_RUNAS_VERB "Run as " - IDS_EDIT_VERB "Edit" - IDS_FIND_VERB "Find" - IDS_PRINT_VERB "Print" - - IDS_FILE_FOLDER "%u Files, %u Folders" - IDS_PRINTERS "Printers" - IDS_FONTS "Fonts" - IDS_INSTALLNEWFONT "Install New Font..." - - IDS_DEFAULT_CLUSTER_SIZE "Default allocation size" - IDS_COPY_OF "Copy of" - - IDS_SHLEXEC_NOASSOC "There is no Windows program configured to open this type of file." - - IDS_FILE_DETAILS "Details for '%s' extension" - IDS_FILE_DETAILSADV "Files with extension '%s' are of type '%s'. To change settings that affect all '%s' files, click Advanced." - IDS_FILE_TYPES "FileTypes" - IDS_COLUMN_EXTENSION "Extensions" + IDS_FOLDER_OPTIONS "æ件夹é项" + IDS_RECYCLEBIN_LOCATION "åæ¶ç®±ä½ç½®" + IDS_RECYCLEBIN_DISKSPACE "å¯ç¨ç©ºé´" + IDS_EMPTY_BITBUCKET "æ¸ ç©ºåæ¶ç«" + IDS_PICK_ICON_TITLE "éæ©å¾æ " + IDS_PICK_ICON_FILTER "å¾æ æ件 (*.ico, *.icl, *.exe, *.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0" + IDS_OPEN_WITH_FILTER "å¯æ§è¡æ件 (*.exe)\0*.exe\0All Files (*.*)\0*.*\0" + IDS_DIRECTORY "æ件夹" + IDS_VIRTUAL_DRIVER "èæ设å¤é©±å¨ç¨åº" + IDS_BAT_FILE "ReactOS æ¹å¤çæ件" + IDS_CMD_FILE "ReactOS å½ä»¤èæ¬" + IDS_COM_FILE "Dos åºç¨ç¨åº" + IDS_CPL_FILE "æ§å¶é¢æ¿é¡¹" + IDS_CUR_FILE "å æ " + IDS_DLL_FILE "åºç¨ç¨åºæ©å±" + IDS_DRV_FILE "设å¤é©±å¨ç¨åº" + IDS_EXE_FILE "åºç¨ç¨åº" + IDS_FON_FILE "åä½æ件" + IDS_TTF_FILE "TrueType åä½æ件" + IDS_HLP_FILE "帮å©æ件" + IDS_INI_FILE "é 置设置" + IDS_LNK_FILE "å¿«æ·æ¹å¼" + IDS_SYS_FILE "ç³»ç»æ件" + + IDS_OPEN_VERB "æå¼" + IDS_EXPLORE_VERB "æµè§" + IDS_RUNAS_VERB "è¿è¡ä½ä¸º " + IDS_EDIT_VERB "ç¼è¾" + IDS_FIND_VERB "æ¥æ¾" + IDS_PRINT_VERB "æå°" + + IDS_FILE_FOLDER "%u æ件ï¼%u 个æ件夹" + IDS_PRINTERS "æå°æº" + IDS_FONTS "åä½" + IDS_INSTALLNEWFONT "å®è£ æ°åä½..." + + IDS_DEFAULT_CLUSTER_SIZE "é»è®¤åé 大å°" + IDS_COPY_OF "å¯æ¬" + + IDS_SHLEXEC_NOASSOC "没æ ReactOS ç¨åºé 置为æå¼è¿ç§ç±»åçæ件ã" + + IDS_FILE_DETAILS "'%S' æ©å±ç详ç»ä¿¡æ¯" + IDS_FILE_DETAILSADV "æ件æ©å±å为 '%s' çç±»å '%s'ãè¥è¦æ´æ¹ä¼å½±åææç '%s' æ件ç设置ï¼è¯·åå»é«çº§ã" + IDS_FILE_TYPES "æ件类å" + IDS_COLUMN_EXTENSION "æ©å±" IDS_BYTES_FORMAT "bytes" - IDS_UNKNOWN_APP "Unknown application" - IDS_EXE_DESCRIPTION "Description:" - - IDS_MENU_EMPTY "(Empty)" -END + IDS_UNKNOWN_APP "æªç¥åºç¨ç¨åº" + IDS_EXE_DESCRIPTION "æè¿°ï¼" + + IDS_MENU_EMPTY "(空)" +END Modified: trunk/reactos/media/inf/shortcuts.inf URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/inf/shortcuts.inf?re…
============================================================================== --- trunk/reactos/media/inf/shortcuts.inf [iso-8859-1] (original) +++ trunk/reactos/media/inf/shortcuts.inf [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -1406,59 +1406,59 @@ [Strings.0804] ACCESSORIES=é件 SYSTOOLS=ç³»ç»å·¥å · -ACCESSIBILITY=Accessibility -ENTERTAINMENT=Entertainment -COMMUNICATIONS=Communications +ACCESSIBILITY=è¾ å©åè½ +ENTERTAINMENT=å¨±ä¹ +COMMUNICATIONS=éä¿¡ GAMES=游æ CMD_TITLE=å½ä»¤æ示符 CMD_DESC=å½ä»¤æ示符 EXPLORER_TITLE=ReactOS èµæºç®¡çå¨ EXPLORER_DESC=ReactOS èµæºç®¡çå¨ -RAPPS_TITLE=ReactOS Applications Manager -RAPPS_TITLE_SHORT=Applications Manager +RAPPS_TITLE=ReactOS åºç¨ç¨åºç®¡çå¨ +RAPPS_TITLE_SHORT=åºç¨ç¨åºç®¡çå¨ RAPPS_DESC=ä¸è½½å¹¶å®è£ å ¶ä»åºç¨è½¯ä»¶ SERVMAN_TITLE=æå¡ SERVMAN_DESC=æå¡ DEVMGMT_TITLE=设å¤ç®¡ç DEVMGMT_DESC=设å¤ç®¡ç -EVENTVWR_TITLE=Event Viewer -EVENTVWR_DESC=Launch Event Viewer -MSCONFIG_TITLE=System Configuration -MSCONFIG_DESC=Launch System Configuration program +EVENTVWR_TITLE=äºä»¶æ¥çå¨ +EVENTVWR_DESC=å¯å¨äºä»¶æ¥çå¨ +MSCONFIG_TITLE=ç³»ç»é ç½® +MSCONFIG_DESC=å¯å¨ç³»ç»é ç½®ç¨åº CALC_TITLE=计ç®å¨ CALC_DESC=计ç®å¨ NOTEPAD_TITLE=è®°äºæ¬ NOTEPAD_DESC=è®°äºæ¬ MSTSC_TITLE=è¿ç¨æ¡é¢è¿æ¥ -MSTSC_DESC=Launch Remote Desktop Connection +MSTSC_DESC=å¯å¨è¿ç¨æ¡é¢è¿æ¥ SCREENSHOT_TITLE=å±å¹æªå¾ SCREENSHOT_DESC=å±å¹æªå¾ WORDPAD_TITLE=ååæ¿ WORDPAD_DESC=ååæ¿ -MSPAINT_TITLE=Paint -MSPAINT_DESC=Launch Paint +MSPAINT_TITLE=å°ç»å®¶ +MSPAINT_DESC=å¯å¨å°ç»å®¶ CHARMAP_TITLE=å符æ å°è¡¨ CHARMAP_DESC=å符æ å°è¡¨ -KBSWITCH_TITLE=Keyboard Layout Switcher -KBSWITCH_DESC=Keyboard Layout Switcher +KBSWITCH_TITLE=é®çå¸å±åæ¢å¨ +KBSWITCH_DESC=å¯å¨é®çå¸å±åæ¢å¨ REGEDIT_TITLE=注å表ç¼è¾å¨ -REGEDIT_DESC=注å表ç¼è¾å¨ -DXDIAG_TITLE=ReactX Diagnostic -DXDIAG_DESC=Launch ReactX-Diagnostic program +REGEDIT_DESC=å¯å¨æ³¨å表ç¼è¾å¨ +DXDIAG_TITLE=ReactX è¯æ +DXDIAG_DESC=å¯å¨ ReactX è¯æç¨åº MAGNIFY_TITLE=æ¾å¤§é MAGNIFY_DESC=æ¾å¤§é OSK_TITLE=å¨å±å¹é®çä¸ OSK_DESC=å¨å±å¹é®ççåå° -MPLAY_TITLE=Multimedia Player -MPLAY_DESC=Launch Multimedia Player -SNDVOL_TITLE=Volume Control -SNDVOL_DESC=Launch Volume Control -SNDREC32_TITLE=Audiorecorder -SNDREC32_DESC=Launch Sound Recorder +MPLAY_TITLE=å¤åªä½ææ¾å¨ +MPLAY_DESC=å¯å¨å¤åªä½ææ¾å¨ +SNDVOL_TITLE=é³éæ§å¶ +SNDVOL_DESC=å¯å¨é³éæ§å¶ +SNDREC32_TITLE=å½é³æº +SNDREC32_DESC=å¯å¨å½é³æº SOL_TITLE=纸ç SOL_DESC=纸ç WINMINE_TITLE=æ«é· WINMINE_DESC=æ«é· -SPIDER_TITLE=Spider Solitaire -SPIDER_DESC=Spider Solitaire +SPIDER_TITLE=èè纸ç +SPIDER_DESC=èè纸ç Modified: trunk/reactos/win32ss/user/winsrv/consrv/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv…
============================================================================== --- trunk/reactos/win32ss/user/winsrv/consrv/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/winsrv/consrv/lang/zh-CN.rc [iso-8859-1] Tue Jun 9 16:21:25 2015 @@ -2,5 +2,5 @@ STRINGTABLE BEGIN - IDS_CONSOLE_TITLE "ReactOS Console" + IDS_CONSOLE_TITLE "ReactOS æ§å¶å°" END
9 years, 6 months
1
0
0
0
[dreimer] 68092: [rapps] Add zh-CN translation in RAPPS by Henry Tang Ih CORE-9554 #resolve #comment Committed v4 and v5. Thx ^^
by dreimer@svn.reactos.org
Author: dreimer Date: Tue Jun 9 16:12:17 2015 New Revision: 68092 URL:
http://svn.reactos.org/svn/reactos?rev=68092&view=rev
Log: [rapps] Add zh-CN translation in RAPPS by Henry Tang Ih CORE-9554 #resolve #comment Committed v4 and v5. Thx ^^ Modified: trunk/reactos/media/rapps/mcwin32.txt trunk/reactos/media/rapps/md5summer.txt trunk/reactos/media/rapps/mfc40.txt trunk/reactos/media/rapps/miktex.txt trunk/reactos/media/rapps/mirandaim.txt trunk/reactos/media/rapps/mirc.txt trunk/reactos/media/rapps/mirc6.txt trunk/reactos/media/rapps/mono2.txt trunk/reactos/media/rapps/mpc.txt trunk/reactos/media/rapps/mpxplay.txt trunk/reactos/media/rapps/msxml3.txt trunk/reactos/media/rapps/net11.txt trunk/reactos/media/rapps/net20.txt trunk/reactos/media/rapps/net20sp2.txt trunk/reactos/media/rapps/neverball.txt trunk/reactos/media/rapps/nginx.txt trunk/reactos/media/rapps/nirlauncher.txt trunk/reactos/media/rapps/npp.txt trunk/reactos/media/rapps/nvdisp.txt trunk/reactos/media/rapps/offbyone.txt trunk/reactos/media/rapps/officeformatpack.txt trunk/reactos/media/rapps/opencodecs.txt trunk/reactos/media/rapps/openoffice.txt trunk/reactos/media/rapps/openoffice2.4.txt trunk/reactos/media/rapps/opera.txt trunk/reactos/media/rapps/opera9.txt trunk/reactos/media/rapps/pdfsam.txt trunk/reactos/media/rapps/peazip.txt trunk/reactos/media/rapps/pengupop.txt trunk/reactos/media/rapps/photofiltre.txt trunk/reactos/media/rapps/pingus.txt trunk/reactos/media/rapps/pptview.txt trunk/reactos/media/rapps/precisecalc.txt trunk/reactos/media/rapps/pspad.txt trunk/reactos/media/rapps/ptanks.txt trunk/reactos/media/rapps/putty.txt trunk/reactos/media/rapps/python.txt trunk/reactos/media/rapps/qb64sdl.txt trunk/reactos/media/rapps/qmmp.txt trunk/reactos/media/rapps/remood.txt trunk/reactos/media/rapps/reshack.txt trunk/reactos/media/rapps/revo.txt trunk/reactos/media/rapps/rfstools.txt trunk/reactos/media/rapps/rocks.txt trunk/reactos/media/rapps/rosbe.txt trunk/reactos/media/rapps/sambatng.txt trunk/reactos/media/rapps/sbforvmware.txt trunk/reactos/media/rapps/scite.txt trunk/reactos/media/rapps/scummvm.txt trunk/reactos/media/rapps/sdl_mixer.txt trunk/reactos/media/rapps/sdl_runtime.txt trunk/reactos/media/rapps/seamonkey.txt trunk/reactos/media/rapps/smplayer.txt trunk/reactos/media/rapps/snoopy.txt trunk/reactos/media/rapps/stamina.txt trunk/reactos/media/rapps/steam.txt trunk/reactos/media/rapps/sumatrapdf.txt trunk/reactos/media/rapps/summerbound.txt trunk/reactos/media/rapps/superdxb.txt trunk/reactos/media/rapps/superfinder.txt trunk/reactos/media/rapps/supertux.txt trunk/reactos/media/rapps/tahoma.txt trunk/reactos/media/rapps/thunderbird.txt trunk/reactos/media/rapps/thunderbird3.txt trunk/reactos/media/rapps/tightvnc.txt trunk/reactos/media/rapps/tileworld.txt trunk/reactos/media/rapps/totalcommander.txt trunk/reactos/media/rapps/tuxpaint.txt trunk/reactos/media/rapps/ultravnc.txt trunk/reactos/media/rapps/utorrent.txt trunk/reactos/media/rapps/vb5run.txt trunk/reactos/media/rapps/vb6run.txt trunk/reactos/media/rapps/vc2005sp1run.txt trunk/reactos/media/rapps/vc2008sp1run.txt trunk/reactos/media/rapps/vc2010sp1run.txt trunk/reactos/media/rapps/vc2012run.txt trunk/reactos/media/rapps/vc2013run.txt trunk/reactos/media/rapps/vc6run.txt trunk/reactos/media/rapps/vlc.txt trunk/reactos/media/rapps/winamp.txt trunk/reactos/media/rapps/winboard.txt trunk/reactos/media/rapps/winemono.txt trunk/reactos/media/rapps/wme9.txt trunk/reactos/media/rapps/wordview.txt trunk/reactos/media/rapps/zaz.txt [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/media/rapps/mcwin32.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mcwin32.txt?re…
Modified: trunk/reactos/media/rapps/md5summer.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/md5summer.txt?…
Modified: trunk/reactos/media/rapps/mfc40.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mfc40.txt?rev=…
Modified: trunk/reactos/media/rapps/miktex.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/miktex.txt?rev…
Modified: trunk/reactos/media/rapps/mirandaim.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mirandaim.txt?…
Modified: trunk/reactos/media/rapps/mirc.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mirc.txt?rev=6…
Modified: trunk/reactos/media/rapps/mirc6.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mirc6.txt?rev=…
Modified: trunk/reactos/media/rapps/mono2.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mono2.txt?rev=…
Modified: trunk/reactos/media/rapps/mpc.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mpc.txt?rev=68…
Modified: trunk/reactos/media/rapps/mpxplay.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/mpxplay.txt?re…
Modified: trunk/reactos/media/rapps/msxml3.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/msxml3.txt?rev…
Modified: trunk/reactos/media/rapps/net11.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/net11.txt?rev=…
Modified: trunk/reactos/media/rapps/net20.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/net20.txt?rev=…
Modified: trunk/reactos/media/rapps/net20sp2.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/net20sp2.txt?r…
Modified: trunk/reactos/media/rapps/neverball.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/neverball.txt?…
Modified: trunk/reactos/media/rapps/nginx.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/nginx.txt?rev=…
Modified: trunk/reactos/media/rapps/nirlauncher.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/nirlauncher.tx…
Modified: trunk/reactos/media/rapps/npp.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/npp.txt?rev=68…
Modified: trunk/reactos/media/rapps/nvdisp.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/nvdisp.txt?rev…
Modified: trunk/reactos/media/rapps/offbyone.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/offbyone.txt?r…
Modified: trunk/reactos/media/rapps/officeformatpack.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/officeformatpa…
Modified: trunk/reactos/media/rapps/opencodecs.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/opencodecs.txt…
Modified: trunk/reactos/media/rapps/openoffice.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/openoffice.txt…
Modified: trunk/reactos/media/rapps/openoffice2.4.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/openoffice2.4.…
Modified: trunk/reactos/media/rapps/opera.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/opera.txt?rev=…
Modified: trunk/reactos/media/rapps/opera9.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/opera9.txt?rev…
Modified: trunk/reactos/media/rapps/pdfsam.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/pdfsam.txt?rev…
Modified: trunk/reactos/media/rapps/peazip.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/peazip.txt?rev…
Modified: trunk/reactos/media/rapps/pengupop.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/pengupop.txt?r…
Modified: trunk/reactos/media/rapps/photofiltre.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/photofiltre.tx…
Modified: trunk/reactos/media/rapps/pingus.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/pingus.txt?rev…
Modified: trunk/reactos/media/rapps/pptview.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/pptview.txt?re…
Modified: trunk/reactos/media/rapps/precisecalc.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/precisecalc.tx…
Modified: trunk/reactos/media/rapps/pspad.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/pspad.txt?rev=…
Modified: trunk/reactos/media/rapps/ptanks.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/ptanks.txt?rev…
Modified: trunk/reactos/media/rapps/putty.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/putty.txt?rev=…
Modified: trunk/reactos/media/rapps/python.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/python.txt?rev…
Modified: trunk/reactos/media/rapps/qb64sdl.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/qb64sdl.txt?re…
Modified: trunk/reactos/media/rapps/qmmp.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/qmmp.txt?rev=6…
Modified: trunk/reactos/media/rapps/remood.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/remood.txt?rev…
Modified: trunk/reactos/media/rapps/reshack.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/reshack.txt?re…
Modified: trunk/reactos/media/rapps/revo.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/revo.txt?rev=6…
Modified: trunk/reactos/media/rapps/rfstools.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/rfstools.txt?r…
Modified: trunk/reactos/media/rapps/rocks.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/rocks.txt?rev=…
Modified: trunk/reactos/media/rapps/rosbe.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/rosbe.txt?rev=…
Modified: trunk/reactos/media/rapps/sambatng.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/sambatng.txt?r…
Modified: trunk/reactos/media/rapps/sbforvmware.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/sbforvmware.tx…
Modified: trunk/reactos/media/rapps/scite.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/scite.txt?rev=…
Modified: trunk/reactos/media/rapps/scummvm.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/scummvm.txt?re…
Modified: trunk/reactos/media/rapps/sdl_mixer.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/sdl_mixer.txt?…
Modified: trunk/reactos/media/rapps/sdl_runtime.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/sdl_runtime.tx…
Modified: trunk/reactos/media/rapps/seamonkey.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/seamonkey.txt?…
Modified: trunk/reactos/media/rapps/smplayer.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/smplayer.txt?r…
Modified: trunk/reactos/media/rapps/snoopy.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/snoopy.txt?rev…
Modified: trunk/reactos/media/rapps/stamina.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/stamina.txt?re…
Modified: trunk/reactos/media/rapps/steam.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/steam.txt?rev=…
Modified: trunk/reactos/media/rapps/sumatrapdf.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/sumatrapdf.txt…
Modified: trunk/reactos/media/rapps/summerbound.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/summerbound.tx…
Modified: trunk/reactos/media/rapps/superdxb.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/superdxb.txt?r…
Modified: trunk/reactos/media/rapps/superfinder.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/superfinder.tx…
Modified: trunk/reactos/media/rapps/supertux.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/supertux.txt?r…
Modified: trunk/reactos/media/rapps/tahoma.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/tahoma.txt?rev…
Modified: trunk/reactos/media/rapps/thunderbird.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/thunderbird.tx…
Modified: trunk/reactos/media/rapps/thunderbird3.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/thunderbird3.t…
Modified: trunk/reactos/media/rapps/tightvnc.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/tightvnc.txt?r…
Modified: trunk/reactos/media/rapps/tileworld.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/tileworld.txt?…
Modified: trunk/reactos/media/rapps/totalcommander.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/totalcommander…
Modified: trunk/reactos/media/rapps/tuxpaint.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/tuxpaint.txt?r…
Modified: trunk/reactos/media/rapps/ultravnc.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/ultravnc.txt?r…
Modified: trunk/reactos/media/rapps/utorrent.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/utorrent.txt?r…
Modified: trunk/reactos/media/rapps/vb5run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vb5run.txt?rev…
Modified: trunk/reactos/media/rapps/vb6run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vb6run.txt?rev…
Modified: trunk/reactos/media/rapps/vc2005sp1run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vc2005sp1run.t…
Modified: trunk/reactos/media/rapps/vc2008sp1run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vc2008sp1run.t…
Modified: trunk/reactos/media/rapps/vc2010sp1run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vc2010sp1run.t…
Modified: trunk/reactos/media/rapps/vc2012run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vc2012run.txt?…
Modified: trunk/reactos/media/rapps/vc2013run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vc2013run.txt?…
Modified: trunk/reactos/media/rapps/vc6run.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vc6run.txt?rev…
Modified: trunk/reactos/media/rapps/vlc.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/vlc.txt?rev=68…
Modified: trunk/reactos/media/rapps/winamp.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/winamp.txt?rev…
Modified: trunk/reactos/media/rapps/winboard.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/winboard.txt?r…
Modified: trunk/reactos/media/rapps/winemono.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/winemono.txt?r…
Modified: trunk/reactos/media/rapps/wme9.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/wme9.txt?rev=6…
Modified: trunk/reactos/media/rapps/wordview.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/wordview.txt?r…
Modified: trunk/reactos/media/rapps/zaz.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/rapps/zaz.txt?rev=68…
9 years, 6 months
1
0
0
0
[aandrejevic] 68091: [NTVDM] Properly clear the video memory when switching to a different mode.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Tue Jun 9 14:48:30 2015 New Revision: 68091 URL:
http://svn.reactos.org/svn/reactos?rev=68091&view=rev
Log: [NTVDM] Properly clear the video memory when switching to a different mode. Modified: trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c Modified: trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/bios…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c [iso-8859-1] Tue Jun 9 14:48:30 2015 @@ -2387,6 +2387,44 @@ return Bda->VideoMode | (Bda->VGAOptions & 0x80); } +static inline VOID VidBiosClearScreen(VOID) +{ + static const DWORD MemoryMaps[4] = { 0xA0000, 0xA0000, 0xB0000, 0xB8000 }; + static const DWORD MemorySizes[4] = { 0x20000, 0x10000, 0x10000, 0x8000 }; + + DWORD VideoAddress; + BYTE Buffer[0x20000]; + DWORD BufferSize; + BYTE Misc; + + /* Read the misc register */ + IOWriteB(VGA_GC_INDEX, VGA_GC_MISC_REG); + Misc = IOReadB(VGA_GC_DATA); + + /* Get the video address */ + VideoAddress = MemoryMaps[(Misc >> 2) & 3]; + BufferSize = MemorySizes[(Misc >> 2) & 3]; + + if (Misc & 1) + { + /* Graphics mode */ + RtlZeroMemory(Buffer, BufferSize); + } + else + { + INT i; + + /* Text mode */ + for (i = 0; i < (BufferSize >> 1); i++) + { + ((PWORD)Buffer)[i] = MAKEWORD(' ', DEFAULT_ATTRIBUTE); + } + } + + /* Write to video memory */ + EmulatorWriteMemory(&EmulatorContext, VideoAddress, Buffer, BufferSize); +} + static BOOLEAN VidBiosSetVideoMode(BYTE ModeNumber) { BYTE Page; @@ -2503,30 +2541,7 @@ for (Page = 0; Page < BIOS_MAX_PAGES; ++Page) VidBiosSetCursorPosition(0, 0, Page); - // HACK: We clear here all the text memory. TODO: Do it better! - if (!DoNotClear && ((ModeNumber >= 0x00 && ModeNumber <= 0x03) || (ModeNumber == 0x07))) - { - INT i, j; - DWORD VideoAddress; - WORD FillCharacter = MAKEWORD(' ', DEFAULT_ATTRIBUTE); - - for (Page = 0; Page < BIOS_MAX_PAGES; ++Page) - { - VideoAddress = TO_LINEAR(TEXT_VIDEO_SEG, Page * Bda->VideoPageSize); - - for (i = 0; i <= Bda->ScreenRows; i++) - { - for (j = 0; j <= Bda->ScreenColumns - 1; j++) - { - /* Write to video memory */ - EmulatorWriteMemory(&EmulatorContext, - VideoAddress + (i * Bda->ScreenColumns + j) * sizeof(WORD), - (LPVOID)&FillCharacter, - sizeof(FillCharacter)); - } - } - } - } + if (!DoNotClear) VidBiosClearScreen(); /* Refresh display */ VgaRefreshDisplay();
9 years, 6 months
1
0
0
0
[aandrejevic] 68090: [NTVDM] Adjust Bda->ScreenColumns in graphics modes. Fix line wrapping.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Tue Jun 9 14:00:43 2015 New Revision: 68090 URL:
http://svn.reactos.org/svn/reactos?rev=68090&view=rev
Log: [NTVDM] Adjust Bda->ScreenColumns in graphics modes. Fix line wrapping. Modified: trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c Modified: trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/bios…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c [iso-8859-1] Tue Jun 9 14:00:43 2015 @@ -2445,6 +2445,9 @@ Bda->ScreenColumns = Resolution.X; Bda->ScreenRows = Resolution.Y - 1; + /* Adjust the number of columns for graphics modes */ + if (ModeNumber > 3) Bda->ScreenColumns >>= 3; + /* Update the current font */ Bda->CharacterHeight = VideoModes[ModeNumber].CharacterHeight; switch (Bda->CharacterHeight) @@ -2614,15 +2617,17 @@ /* Read from VGA memory to load the latch register */ EmulatorReadMemory(&EmulatorContext, - TO_LINEAR(CgaSegment[(Row + i) & 1], - ((((Row + i) >> 1) * Bda->ScreenColumns) >> 2) + Column * 2), + TO_LINEAR(CgaSegment[(Row * Bda->CharacterHeight + i) & 1], + (((Row * Bda->CharacterHeight + i) >> 1) + * Bda->ScreenColumns + Column) * 2), (LPVOID)&Dummy, sizeof(USHORT)); } EmulatorWriteMemory(&EmulatorContext, - TO_LINEAR(CgaSegment[(Row + i) & 1], - ((((Row + i) >> 1) * Bda->ScreenColumns) >> 2) + Column * 2), + TO_LINEAR(CgaSegment[(Row * Bda->CharacterHeight + i) & 1], + (((Row * Bda->CharacterHeight + i) >> 1) + * Bda->ScreenColumns + Column) * 2), (LPVOID)&Pixel, sizeof(USHORT)); } @@ -2662,15 +2667,17 @@ /* Read from VGA memory to load the latch register */ EmulatorReadMemory(&EmulatorContext, - TO_LINEAR(CgaSegment[(Row + i) & 1], - ((((Row + i) >> 1) * Bda->ScreenColumns) >> 3) + Column), + TO_LINEAR(CgaSegment[(Row * Bda->CharacterHeight + i) & 1], + (((Row * Bda->CharacterHeight + i) >> 1) + * Bda->ScreenColumns) + Column), (LPVOID)&Dummy, sizeof(UCHAR)); } EmulatorWriteMemory(&EmulatorContext, - TO_LINEAR(CgaSegment[(Row + i) & 1], - ((((Row + i) >> 1) * Bda->ScreenColumns) >> 3) + Column), + TO_LINEAR(CgaSegment[(Row * Bda->CharacterHeight + i) & 1], + (((Row * Bda->CharacterHeight + i) >> 1) + * Bda->ScreenColumns) + Column), (LPVOID)&Glyph[i], sizeof(UCHAR)); } @@ -2734,14 +2741,16 @@ /* Read from VGA memory to load the latch register */ EmulatorReadMemory(&EmulatorContext, TO_LINEAR(GRAPHICS_VIDEO_SEG, - (((Row + i) * Bda->ScreenColumns) >> 3) + Column), + ((Row * Bda->CharacterHeight + i) + * Bda->ScreenColumns) + Column), (LPVOID)&Dummy, sizeof(UCHAR)); } EmulatorWriteMemory(&EmulatorContext, TO_LINEAR(GRAPHICS_VIDEO_SEG, - (((Row + i) * Bda->ScreenColumns) >> 3) + Column), + ((Row * Bda->CharacterHeight + i) + * Bda->ScreenColumns) + Column), (LPVOID)&Glyph[i], sizeof(UCHAR)); } @@ -2782,7 +2791,8 @@ EmulatorWriteMemory(&EmulatorContext, TO_LINEAR(GRAPHICS_VIDEO_SEG, - (Row + i) * Bda->ScreenColumns + Column * 8), + ((Row * Bda->CharacterHeight + i) + * Bda->ScreenColumns + Column) << 3), (LPVOID)PixelBuffer, sizeof(PixelBuffer)); }
9 years, 6 months
1
0
0
0
[cfinck] 68089: [LOCALSPL_APITEST] - Add more tests for fpEnumPrinters. For some reason, using SEH here works only once. We experience a hang in the testing process when you run the test again for ...
by cfinck@svn.reactos.org
Author: cfinck Date: Tue Jun 9 13:22:25 2015 New Revision: 68089 URL:
http://svn.reactos.org/svn/reactos?rev=68089&view=rev
Log: [LOCALSPL_APITEST] - Add more tests for fpEnumPrinters. For some reason, using SEH here works only once. We experience a hang in the testing process when you run the test again for a second time without restarting spoolsv. Needs more investigation. - Ensure that the spooler service is running before starting any testing. - Do proper cleanup in every case. [LOCALSPL] - Implement LocalEnumPrinters level 1 based on the API-Tests. - Use DllAllocSplMem/DllFreeSplMem instead of HeapAlloc/HeapFree. - Use AllocSplStr with DllFreeSplStr now that DuplicateStringW is gone. - Use _countof where applicable. [SPOOLSS] - Found out that I was not the only one needing a wcsdup equivalent. My DuplicateStringW from localspl is actually exported as AllocSplStr in spoolss. This is actually part of a range of undocumented memory functions in spoolss, so implement and document AllocSplStr, DllAllocSplMem, DllFreeSplMem, DllFreeSplStr, ReallocSplMem and ReallocSplStr. Information about some of them was gathered through black box testing and DDK samples (down to Win95 DDK), which at least contained prototypes of them. - Implement SplInitializeWinSpoolDrv based on the API-Test and simply return FALSE for SplIsUpgrade. [SPOOLSS_APITEST] - Add a test for ReallocSplStr, which was actually the most undocumented function of spoolss' memory functions. [WINSPOOL] SplInitializeWinSpoolDrv shows that we can't just auto-assign an ordinal to all winspool.drv functions. We even need to export some nameless functions by ordinal only. Redo the whole .spec file based on the ordinals found in Windows Server 2003's winspool.drv. Trust WINE for the nameless stubs. Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/memory.c (with props) branches/colins-printing-for-freedom/rostests/apitests/spoolss/ReallocSplStr.c (with props) Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec branches/colins-printing-for-freedom/reactos/win32ss/printing/include/spoolss.h branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/jobs.c branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printers.c branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/tools.c branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/CMakeLists.txt branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/fpEnumPrinters.c branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/main.c branches/colins-printing-for-freedom/rostests/apitests/localspl/tests.c branches/colins-printing-for-freedom/rostests/apitests/spoolss/CMakeLists.txt branches/colins-printing-for-freedom/rostests/apitests/spoolss/SplInitializeWinSpoolDrv.c branches/colins-printing-for-freedom/rostests/apitests/spoolss/testlist.c Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/CMakeLists.txt [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -4,6 +4,7 @@ list(APPEND SOURCE context.c main.c + memory.c precomp.h tools.c) Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/main.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -7,6 +7,7 @@ #include "precomp.h" +HANDLE hProcessHeap; PRINTPROVIDOR LocalSplFuncs; @@ -14,6 +15,20 @@ ClosePrinter(HANDLE hPrinter) { return FALSE; +} + +BOOL WINAPI +DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + switch (fdwReason) + { + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hinstDLL); + hProcessHeap = GetProcessHeap(); + break; + } + + return TRUE; } BOOL WINAPI @@ -95,6 +110,44 @@ return 0; } +BOOL WINAPI +SplInitializeWinSpoolDrv(PVOID* pTable) +{ + HINSTANCE hWinspool; + int i; + + hWinspool = LoadLibraryW(L"winspool.drv"); + if (!hWinspool) + { + ERR("Could not load winspool.drv, last error is %lu!\n", GetLastError()); + return FALSE; + } + + // Get the function pointers which are meant to be returned by this function. + pTable[0] = GetProcAddress(hWinspool, "OpenPrinterW"); + pTable[1] = GetProcAddress(hWinspool, "ClosePrinter"); + pTable[2] = GetProcAddress(hWinspool, "SpoolerDevQueryPrintW"); + pTable[3] = GetProcAddress(hWinspool, "SpoolerPrinterEvent"); + pTable[4] = GetProcAddress(hWinspool, "DocumentPropertiesW"); + pTable[5] = GetProcAddress(hWinspool, (LPSTR)212); + pTable[6] = GetProcAddress(hWinspool, (LPSTR)213); + pTable[7] = GetProcAddress(hWinspool, (LPSTR)214); + pTable[8] = GetProcAddress(hWinspool, (LPSTR)215); + + // Verify that all calls succeeded. + for (i = 0; i < 9; i++) + if (!pTable[i]) + return FALSE; + + return TRUE; +} + +BOOL WINAPI +SplIsUpgrade() +{ + return FALSE; +} + DWORD WINAPI SpoolerInit() { Added: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/memory.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/memory.c (added) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/memory.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -0,0 +1,168 @@ +/* + * PROJECT: ReactOS Spooler Router + * LICENSE: GNU LGPL v2.1 or any later version as published by the Free Software Foundation + * PURPOSE: Functions for allocating and freeing memory + * COPYRIGHT: Copyright 2015 Colin Finck <colin(a)reactos.org> + */ + +#include "precomp.h" + + +/** +* @name AllocSplStr +* +* Allocates memory for a Unicode string and copies the input string into it. +* Equivalent of wcsdup, but the returned buffer is allocated from the spooler heap and must be freed with DllFreeSplStr. +* +* @param pwszInput +* The input string to copy +* +* @return +* Pointer to the copied string or NULL if no memory could be allocated. +*/ +PWSTR WINAPI +AllocSplStr(PCWSTR pwszInput) +{ + DWORD cbInput; + PWSTR pwszOutput; + + // Sanity check + if (!pwszInput) + return NULL; + + // Get the length of the input string. + cbInput = (wcslen(pwszInput) + 1) * sizeof(WCHAR); + + // Allocate it. We don't use DllAllocSplMem here, because it unnecessarily zeroes the memory. + pwszOutput = HeapAlloc(hProcessHeap, 0, cbInput); + if (!pwszOutput) + { + ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + return NULL; + } + + // Copy the string and return it. + CopyMemory(pwszOutput, pwszInput, cbInput); + return pwszOutput; +} + +/** + * @name DllAllocSplMem + * + * Allocate a block of zeroed memory. + * Windows allocates from a separate spooler heap here while we just use the process heap. + * + * @param dwBytes + * Number of bytes to allocate. + * + * @return + * A pointer to the allocated memory or NULL in case of an error. + * You have to free this memory using DllFreeSplMem. + */ +PVOID WINAPI +DllAllocSplMem(DWORD dwBytes) +{ + return HeapAlloc(hProcessHeap, HEAP_ZERO_MEMORY, dwBytes); +} + +/** + * @name DllFreeSplMem + * + * Frees the memory allocated with DllAllocSplMem. + * + * @param pMem + * Pointer to the allocated memory. + * + * @return + * TRUE in case of success, FALSE otherwise. + */ +BOOL WINAPI +DllFreeSplMem(PVOID pMem) +{ + return HeapFree(hProcessHeap, 0, pMem); +} + +/** + * @name DllFreeSplStr + * + * Frees the string allocated with AllocSplStr. + * + * @param pwszString + * Pointer to the allocated string. + * + * @return + * TRUE in case of success, FALSE otherwise. + */ +BOOL WINAPI +DllFreeSplStr(PWSTR pwszString) +{ + return HeapFree(hProcessHeap, 0, pwszString); +} + +/** + * @name ReallocSplMem + * + * Allocates a new block of memory and copies the contents of the old block into the new one. + * + * @param pOldMem + * Pointer to the old block of memory. + * If this parameter is NULL, ReallocSplMem behaves exactly like DllAllocSplMem. + * + * @param cbOld + * Number of bytes to copy from the old block into the new one. + * + * @param cbNew + * Number of bytes to allocate for the new block. + * + * @return + * A pointer to the allocated new block or NULL in case of an error. + * You have to free this memory using DllFreeSplMem. + */ +PVOID WINAPI +ReallocSplMem(PVOID pOldMem, DWORD cbOld, DWORD cbNew) +{ + PVOID pNewMem; + + // Always allocate the new block of memory. + pNewMem = DllAllocSplMem(cbNew); + if (!pNewMem) + { + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); + return NULL; + } + + // Copy the old memory into the new block and free it. + if (pOldMem) + { + CopyMemory(pNewMem, pOldMem, min(cbOld, cbNew)); + DllFreeSplMem(pOldMem); + } + + return pNewMem; +} + +/** + * @name ReallocSplStr + * + * Frees a string allocated by AllocSplStr and copies the given Unicode string into a newly allocated block of memory. + * + * @param ppwszString + * Pointer to the string pointer allocated by AllocSplStr. + * When the function returns, the variable receives the pointer to the copied string. + * + * @param pwszInput + * The Unicode string to copy into the new block of memory. + * + * @return + * Returns TRUE in any case. +*/ +BOOL WINAPI +ReallocSplStr(PWSTR* ppwszString, PCWSTR pwszInput) +{ + if (*ppwszString) + DllFreeSplStr(*ppwszString); + + *ppwszString = AllocSplStr(pwszInput); + + return TRUE; +} Propchange: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/memory.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/precomp.h [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -16,10 +16,15 @@ #include <winspool.h> #include <winsplp.h> +#include <spoolss.h> + #include <wine/debug.h> WINE_DEFAULT_DEBUG_CHANNEL(spoolss); // Function pointer to InitializePrintProvidor of a provider DLL typedef BOOL (WINAPI *PInitializePrintProvidor)(LPPRINTPROVIDOR, DWORD, LPWSTR); +// main.c +extern HANDLE hProcessHeap; + #endif Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/spoolss/spoolss.spec [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -17,7 +17,7 @@ @ stub AdjustPointersInStructuresArray @ stub AlignKMPtr @ stub AlignRpcPtr -@ stub AllocSplStr +@ stdcall AllocSplStr(ptr) @ stub AllowRemoteCalls @ stub AppendPrinterNotifyInfoData @ stub bGetDevModePerUser @@ -53,9 +53,9 @@ @ stub DeletePrinterKeyW @ stub DeletePrintProcessorW @ stub DeletePrintProvidorW -@ stub DllAllocSplMem -@ stub DllFreeSplMem -@ stub DllFreeSplStr +@ stdcall DllAllocSplMem(long) +@ stdcall DllFreeSplMem(ptr) +@ stdcall DllFreeSplStr(ptr) @ stdcall EndDocPrinter(long) @ stdcall EndPagePrinter(long) @ stub EnumFormsW @@ -115,8 +115,8 @@ @ stub ProvidorFindFirstPrinterChangeNotification @ stub pszDbgAllocMsgA @ stub ReadPrinter -@ stub ReallocSplMem -@ stub ReallocSplStr +@ stdcall ReallocSplMem(ptr long long) +@ stdcall ReallocSplStr(ptr ptr) @ stub RemoteFindFirstPrinterChangeNotification @ stub ReplyClosePrinter @ stub ReplyOpenPrinter @@ -146,9 +146,9 @@ @ stub SplCommitSpoolData @ stub SplDriverUnloadComplete @ stub SplGetSpoolFileInfo -@ stub SplInitializeWinSpoolDrv +@ stdcall SplInitializeWinSpoolDrv(ptr) @ stub SplIsSessionZero -@ stub SplIsUpgrade +@ stdcall SplIsUpgrade() @ stub SplPowerEvent @ stub SplProcessPnPEvent @ stub SplPromptUIInUsersSession Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/base/winspool/winspool.spec [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -1,169 +1,200 @@ -@ stub AbortPrinter -@ stub AddFormA -@ stub AddFormW -@ stub AddJobA -@ stub AddJobW -@ stub AddMonitorA -@ stub AddMonitorW -@ stub AddPortA -@ stub AddPortExA -@ stub AddPortExW -@ stub AddPortW -@ stub AddPrinterA -@ stub AddPrinterConnectionA -@ stub AddPrinterConnectionW -@ stub AddPrinterDriverA -@ stub AddPrinterDriverExA -@ stub AddPrinterDriverExW -@ stub AddPrinterDriverW -@ stub AddPrinterW -@ stub AddPrintProcessorA -@ stub AddPrintProcessorW -@ stub AddPrintProvidorA -@ stub AddPrintProvidorW -@ stub AdvancedDocumentPropertiesA -@ stub AdvancedDocumentPropertiesW -@ stub ADVANCEDSETUPDIALOG -@ stub AdvancedSetupDialog -@ stdcall ClosePrinter(long) -@ stub CloseSpoolFileHandle -@ stub CommitSpoolData -@ stub ConfigurePortA -@ stub ConfigurePortW -@ stub ConnectToPrinterDlg -@ stub ConvertAnsiDevModeToUnicodeDevmode -@ stub ConvertUnicodeDevModeToAnsiDevmode -@ stub CreatePrinterIC -@ stub DeleteFormA -@ stub DeleteFormW -@ stub DeleteMonitorA -@ stub DeleteMonitorW -@ stub DeletePortA -@ stub DeletePortW -@ stub DeletePrinter -@ stub DeletePrinterConnectionA -@ stub DeletePrinterConnectionW -@ stub DeletePrinterDataA -@ stub DeletePrinterDataExA -@ stub DeletePrinterDataExW -@ stub DeletePrinterDataW -@ stub DeletePrinterDriverA -@ stub DeletePrinterDriverExA -@ stub DeletePrinterDriverExW -@ stub DeletePrinterDriverW -@ stub DeletePrinterIC -@ stub DeletePrinterKeyA -@ stub DeletePrinterKeyW -@ stub DeletePrintProcessorA -@ stub DeletePrintProcessorW -@ stub DeletePrintProvidorA -@ stub DeletePrintProvidorW -@ stub DEVICECAPABILITIES -@ stub DeviceCapabilities -@ stdcall DeviceCapabilitiesA(str str long ptr ptr) -@ stdcall DeviceCapabilitiesW(wstr wstr long ptr ptr) -@ stub DEVICEMODE -@ stub DeviceMode -@ stub DevicePropertySheets -@ stub DevQueryPrint -@ stub DevQueryPrintEx -@ stub DocumentEvent -@ stdcall DocumentPropertiesA(long long ptr ptr ptr long) -@ stdcall DocumentPropertiesW(long long ptr ptr ptr long) -@ stub DocumentPropertySheets -@ stdcall EndDocPrinter(long) -@ stdcall EndPagePrinter(long) -@ stub EnumFormsA -@ stub EnumFormsW -@ stub EnumJobsA -@ stub EnumJobsW -@ stub EnumMonitorsA -@ stub EnumMonitorsW -@ stub EnumPortsA -@ stub EnumPortsW -@ stub EnumPrinterDataA -@ stub EnumPrinterDataExA -@ stub EnumPrinterDataExW -@ stub EnumPrinterDataW -@ stub EnumPrinterDriversA -@ stub EnumPrinterDriversW -@ stub EnumPrinterKeyA -@ stub EnumPrinterKeyW -@ stdcall EnumPrintersA(long ptr long ptr long ptr ptr) -@ stdcall EnumPrintersW(long ptr long ptr long ptr ptr) -@ stdcall EnumPrintProcessorDatatypesA(ptr ptr long ptr long ptr ptr) -@ stdcall EnumPrintProcessorDatatypesW(ptr ptr long ptr long ptr ptr) -@ stub EnumPrintProcessorsA -@ stub EnumPrintProcessorsW -@ stub EXTDEVICEMODE -@ stub ExtDeviceMode -@ stub FindClosePrinterChangeNotification -@ stub FindFirstPrinterChangeNotification -@ stub FindNextPrinterChangeNotification -@ stub FlushPrinter -@ stub FreePrinterNotifyInfo -@ stdcall GetDefaultPrinterA(ptr ptr) -@ stdcall GetDefaultPrinterW(ptr ptr) -@ stub GetFormA -@ stub GetFormW -@ stub GetJobA -@ stub GetJobW -@ stdcall GetPrinterA(long long ptr long ptr) -@ stub GetPrinterDataA -@ stub GetPrinterDataExA -@ stub GetPrinterDataExW -@ stub GetPrinterDataW -@ stdcall GetPrinterDriverA(long str long ptr long ptr) -@ stub GetPrinterDriverDirectoryA -@ stub GetPrinterDriverDirectoryW -@ stdcall GetPrinterDriverW(long wstr long ptr long ptr) -@ stdcall GetPrinterW(long long ptr long ptr) -@ stub GetPrintProcessorDirectoryA -@ stdcall GetPrintProcessorDirectoryW(wstr wstr long ptr long ptr) -@ stub GetSpoolFileHandle -@ stub IsValidDevmodeA -@ stub IsValidDevmodeW -@ stdcall OpenPrinterA(str ptr ptr) -@ stdcall OpenPrinterW(wstr ptr ptr) -@ stub PerfClose -@ stub PerfCollect -@ stub PerfOpen -@ stub PlayGdiScriptOnPrinterIC -@ stub PrinterMessageBoxA -@ stub PrinterMessageBoxW -@ stub PrinterProperties -@ stub QueryColorProfile -@ stub QueryRemoteFonts -@ stub QuerySpoolMode -@ stub ReadPrinter -@ stub ResetPrinterA -@ stub ResetPrinterW -@ stub ScheduleJob -@ stub SeekPrinter -@ stub SetAllocFailCount -@ stub SetDefaultPrinterA -@ stub SetDefaultPrinterW -@ stub SetFormA -@ stub SetFormW -@ stub SetJobA -@ stub SetJobW -@ stub SetPortA -@ stub SetPortW -@ stub SetPrinterA -@ stub SetPrinterDataA -@ stub SetPrinterDataExA -@ stub SetPrinterDataExW -@ stub SetPrinterDataW -@ stub SetPrinterW -@ stub SplDriverUnloadComplete -@ stub SpoolerDevQueryPrintW -@ stdcall SpoolerInit() -@ stub SpoolerPrinterEvent -@ stub StartDocDlgA -@ stub StartDocDlgW -@ stub StartDocPrinterA -@ stdcall StartDocPrinterW(long long ptr) -@ stdcall StartPagePrinter(long) -@ stub WaitForPrinterChange -@ stdcall WritePrinter(long ptr long ptr) -@ stdcall XcvDataW(long wstr ptr long ptr long ptr ptr) +100 stub -noname EnumPrinterPropertySheets +101 stub -noname ClusterSplOpen +102 stub -noname ClusterSplClose +103 stub -noname ClusterSplIsAlive +104 stub PerfClose +105 stub PerfCollect +106 stub PerfOpen +107 stub ADVANCEDSETUPDIALOG +108 stub AbortPrinter +109 stub AddFormA +110 stub AddFormW +111 stub AddJobA +112 stub AddJobW +113 stub AddMonitorA +114 stub AddMonitorW +115 stub AddPortA +116 stub AddPortExA +117 stub AddPortExW +118 stub AddPortW +119 stub AddPrintProcessorA +120 stub AddPrintProcessorW +121 stub AddPrintProvidorA +122 stub AddPrintProvidorW +123 stub AddPrinterA +124 stub AddPrinterConnectionA +125 stub AddPrinterConnectionW +126 stub AddPrinterDriverA +127 stub AddPrinterDriverExA +128 stub AddPrinterDriverExW +129 stub AddPrinterDriverW +130 stub AddPrinterW +131 stub AdvancedDocumentPropertiesA +132 stub AdvancedDocumentPropertiesW +133 stub AdvancedSetupDialog +134 stdcall ClosePrinter(long) +135 stub CloseSpoolFileHandle +136 stub CommitSpoolData +137 stub ConfigurePortA +138 stub ConfigurePortW +139 stub ConnectToPrinterDlg +140 stub ConvertAnsiDevModeToUnicodeDevmode +141 stub ConvertUnicodeDevModeToAnsiDevmode +142 stub CreatePrinterIC +143 stub DEVICECAPABILITIES +144 stub DEVICEMODE +145 stub DeleteFormA +146 stub DeleteFormW +147 stub DeleteMonitorA +148 stub DeleteMonitorW +149 stub DeletePortA +150 stub DeletePortW +151 stub DeletePrintProcessorA +152 stub DeletePrintProcessorW +153 stub DeletePrintProvidorA +154 stub DeletePrintProvidorW +155 stub DeletePrinter +156 stub DeletePrinterConnectionA +157 stub DeletePrinterConnectionW +158 stub DeletePrinterDataA +159 stub DeletePrinterDataExA +160 stub DeletePrinterDataExW +161 stub DeletePrinterDataW +162 stub DeletePrinterDriverA +163 stub DeletePrinterDriverExA +164 stub DeletePrinterDriverExW +165 stub DeletePrinterDriverW +166 stub DeletePrinterIC +167 stub DeletePrinterKeyA +168 stub DeletePrinterKeyW +169 stub DevQueryPrint +170 stub DevQueryPrintEx +171 stub DeviceCapabilities +172 stdcall DeviceCapabilitiesA(str str long ptr ptr) +173 stdcall DeviceCapabilitiesW(wstr wstr long ptr ptr) +174 stub DeviceMode +175 stub DevicePropertySheets +176 stub DocumentEvent +177 stdcall DocumentPropertiesA(long long ptr ptr ptr long) +178 stdcall DocumentPropertiesW(long long ptr ptr ptr long) +179 stub DocumentPropertySheets +180 stub EXTDEVICEMODE +181 stdcall EndDocPrinter(long) +182 stdcall EndPagePrinter(long) +183 stub EnumFormsA +184 stub EnumFormsW +185 stub EnumJobsA +186 stub EnumJobsW +187 stub EnumMonitorsA +188 stub EnumMonitorsW +189 stub EnumPortsA +190 stub EnumPortsW +191 stdcall EnumPrintProcessorDatatypesA(ptr ptr long ptr long ptr ptr) +192 stdcall EnumPrintProcessorDatatypesW(ptr ptr long ptr long ptr ptr) +193 stub EnumPrintProcessorsA +194 stub EnumPrintProcessorsW +195 stub EnumPrinterDataA +196 stub EnumPrinterDataExA +197 stub EnumPrinterDataExW +198 stub EnumPrinterDataW +199 stub EnumPrinterDriversA +200 stub EnumPrinterDriversW +201 stdcall GetDefaultPrinterA(ptr ptr) +202 stub SetDefaultPrinterA +203 stdcall GetDefaultPrinterW(ptr ptr) +204 stub SetDefaultPrinterW +205 stub -noname SplReadPrinter +206 stub -noname AddPerMachineConnectionA +207 stub -noname AddPerMachineConnectionW +208 stub -noname DeletePerMachineConnectionA +209 stub -noname DeletePerMachineConnectionW +210 stub -noname EnumPerMachineConnectionsA +211 stub -noname EnumPerMachineConnectionsW +212 stub -noname LoadPrinterDriver +213 stub -noname RefCntLoadDriver +214 stub -noname RefCntUnloadDriver +215 stub -noname ForceUnloadDriver +216 stub -noname PublishPrinterA +217 stub -noname PublishPrinterW +218 stub -noname CallCommonPropertySheetUI +219 stub -noname PrintUIQueueCreate +220 stub -noname PrintUIPrinterPropPages +221 stub -noname PrintUIDocumentDefaults +222 stub -noname SendRecvBidiData +223 stub -noname RouterFreeBidiResponseContainer +224 stub -noname ExternalConnectToLd64In32Server +225 stub EnumPrinterKeyA +226 stub -noname PrintUIWebPnpEntry +227 stub -noname PrintUIWebPnpPostEntry +228 stub -noname PrintUICreateInstance +229 stub -noname PrintUIDocumentPropertiesWrap +230 stub -noname PrintUIPrinterSetup +231 stub -noname PrintUIServerPropPages +232 stub -noname AddDriverCatalog +233 stub EnumPrinterKeyW +234 stdcall EnumPrintersA(long ptr long ptr long ptr ptr) +235 stdcall EnumPrintersW(long ptr long ptr long ptr ptr) +236 stub ExtDeviceMode +237 stub FindClosePrinterChangeNotification +238 stub FindFirstPrinterChangeNotification +239 stub FindNextPrinterChangeNotification +240 stub FlushPrinter +241 stub FreePrinterNotifyInfo +242 stub GetFormA +243 stub GetFormW +244 stub GetJobA +245 stub GetJobW +246 stub GetPrintProcessorDirectoryA +247 stdcall GetPrintProcessorDirectoryW(wstr wstr long ptr long ptr) +248 stdcall GetPrinterA(long long ptr long ptr) +249 stub GetPrinterDataA +250 stub GetPrinterDataExA +251 stub GetPrinterDataExW +252 stub GetPrinterDataW +253 stdcall GetPrinterDriverA(long str long ptr long ptr) +254 stub GetPrinterDriverDirectoryA +255 stub GetPrinterDriverDirectoryW +256 stdcall GetPrinterDriverW(long wstr long ptr long ptr) +257 stdcall GetPrinterW(long long ptr long ptr) +258 stub GetSpoolFileHandle +259 stub IsValidDevmodeA +260 stub IsValidDevmodeW +261 stdcall OpenPrinterA(str ptr ptr) +262 stdcall OpenPrinterW(wstr ptr ptr) +263 stub PlayGdiScriptOnPrinterIC +264 stub PrinterMessageBoxA +265 stub PrinterMessageBoxW +266 stub PrinterProperties +267 stub QueryColorProfile +268 stub QueryRemoteFonts +269 stub QuerySpoolMode +270 stub ReadPrinter +271 stub ResetPrinterA +272 stub ResetPrinterW +273 stub ScheduleJob +274 stub SeekPrinter +275 stub SetAllocFailCount +276 stub SetFormA +277 stub SetFormW +278 stub SetJobA +279 stub SetJobW +280 stub SetPortA +281 stub SetPortW +282 stub SetPrinterA +283 stub SetPrinterDataA +284 stub SetPrinterDataExA +285 stub SetPrinterDataExW +286 stub SetPrinterDataW +287 stub SetPrinterW +288 stub SplDriverUnloadComplete +289 stub SpoolerDevQueryPrintW +290 stdcall SpoolerInit() +291 stub SpoolerPrinterEvent +292 stub StartDocDlgA +293 stub StartDocDlgW +294 stub StartDocPrinterA +295 stdcall StartDocPrinterW(long long ptr) +296 stdcall StartPagePrinter(long) +297 stub WaitForPrinterChange +298 stdcall WritePrinter(long ptr long ptr) +299 stdcall XcvDataW(long wstr ptr long ptr long ptr ptr) Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/include/spoolss.h URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/include/spoolss.h [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/include/spoolss.h [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -8,7 +8,13 @@ #ifndef _REACTOS_SPOOLSS_H #define _REACTOS_SPOOLSS_H -PBYTE WINAPI -PackStrings(PCWSTR* pSource, PBYTE pDest, PDWORD DestOffsets, PBYTE pEnd); +PWSTR WINAPI AllocSplStr(PCWSTR pwszInput); +PVOID WINAPI DllAllocSplMem(DWORD dwBytes); +BOOL WINAPI DllFreeSplMem(PVOID pMem); +BOOL WINAPI DllFreeSplStr(PWSTR pwszString); +PBYTE WINAPI PackStrings(PCWSTR* pSource, PBYTE pDest, PDWORD DestOffsets, PBYTE pEnd); +PVOID WINAPI ReallocSplMem(PVOID pOldMem, DWORD cbOld, DWORD cbNew); +BOOL WINAPI ReallocSplStr(PWSTR* ppwszString, PCWSTR pwszInput); +BOOL WINAPI SplInitializeWinSpoolDrv(PVOID* pTable); #endif Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/CMakeLists.txt [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -17,6 +17,6 @@ set_module_type(localspl win32dll UNICODE) target_link_libraries(localspl wine) -add_importlibs(localspl advapi32 msvcrt kernel32 ntdll) +add_importlibs(localspl advapi32 spoolss msvcrt kernel32 ntdll) add_pch(localspl precomp.h SOURCE) add_cd_file(TARGET localspl DESTINATION reactos/system32 FOR all) Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/jobs.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/jobs.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/jobs.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -13,7 +13,7 @@ InitializeJobQueue() { const WCHAR wszPath[] = L"\\PRINTERS\\?????.SHD"; - const DWORD cchPath = sizeof(wszPath) / sizeof(WCHAR) - 1; + const DWORD cchPath = _countof(wszPath) - 1; const DWORD cchFolders = sizeof("\\PRINTERS\\") - 1; const DWORD cchPattern = sizeof("?????") - 1; @@ -86,10 +86,10 @@ // Get its file size (small enough for a single DWORD) and allocate memory for all of it. cbFileSize = GetFileSize(hFile, NULL); - pShadowFile = HeapAlloc(hProcessHeap, 0, cbFileSize); + pShadowFile = DllAllocSplMem(cbFileSize); if (!pShadowFile) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } @@ -117,17 +117,17 @@ } // Create a new job structure and copy over the relevant fields. - pJob = HeapAlloc(hProcessHeap, 0, sizeof(LOCAL_JOB)); + pJob = DllAllocSplMem(sizeof(LOCAL_JOB)); if (!pJob) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } pJob->dwJobID = pShadowFile->dwJobID; pJob->Printer = pPrinter; - pJob->pwszDatatype = DuplicateStringW((PCWSTR)((ULONG_PTR)pShadowFile + pShadowFile->offDatatype)); - pJob->pwszDocumentName = DuplicateStringW((PCWSTR)((ULONG_PTR)pShadowFile + pShadowFile->offDocumentName)); + pJob->pwszDatatype = AllocSplStr((PCWSTR)((ULONG_PTR)pShadowFile + pShadowFile->offDatatype)); + pJob->pwszDocumentName = AllocSplStr((PCWSTR)((ULONG_PTR)pShadowFile + pShadowFile->offDocumentName)); pJob->pwszOutputFile = NULL; CopyMemory(&pJob->DevMode, (PDEVMODEW)((ULONG_PTR)pShadowFile + pShadowFile->offDevMode), sizeof(DEVMODEW)); @@ -135,7 +135,7 @@ Cleanup: if (pShadowFile) - HeapFree(hProcessHeap, 0, pShadowFile); + DllFreeSplMem(pShadowFile); if (hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile); @@ -171,10 +171,10 @@ cbFileSize = sizeof(SHD_HEADER) + cbDatatype + cbDocumentName + cbPrinterName; // Allocate memory for it. - pShadowFile = HeapAlloc(hProcessHeap, HEAP_ZERO_MEMORY, cbFileSize); + pShadowFile = DllAllocSplMem(cbFileSize); if (!pShadowFile) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } @@ -210,7 +210,7 @@ Cleanup: if (pShadowFile) - HeapFree(hProcessHeap, 0, pShadowFile); + DllFreeSplMem(pShadowFile); if (hFile != INVALID_HANDLE_VALUE) CloseHandle(hFile); @@ -223,10 +223,10 @@ { ////////// TODO ///////// /// Add some checks - HeapFree(hProcessHeap, 0, pJob->pwszDatatype); - HeapFree(hProcessHeap, 0, pJob->pwszDocumentName); - HeapFree(hProcessHeap, 0, pJob->pwszOutputFile); - HeapFree(hProcessHeap, 0, pJob); + DllFreeSplStr(pJob->pwszDatatype); + DllFreeSplStr(pJob->pwszDocumentName); + DllFreeSplStr(pJob->pwszOutputFile); + DllFreeSplMem(pJob); return TRUE; } Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/main.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -8,7 +8,6 @@ #include "precomp.h" // Global Variables -HANDLE hProcessHeap; WCHAR wszSpoolDirectory[MAX_PATH]; DWORD cchSpoolDirectory; @@ -23,6 +22,12 @@ #else #error Unsupported architecture #endif + +const WCHAR* wszPrintProviderInfo[3] = { + L"Windows NT Local Print Providor", // Name + L"Windows NT Local Printers", // Description + L"Locally connected Printers" // Comment +}; static const PRINTPROVIDOR PrintProviderFunctions = { LocalOpenPrinter, // fpOpenPrinter @@ -117,7 +122,7 @@ _GetSpoolDirectory() { const WCHAR wszSpoolPath[] = L"\\spool"; - const DWORD cchSpoolPath = sizeof(wszSpoolPath) / sizeof(WCHAR) - 1; + const DWORD cchSpoolPath = _countof(wszSpoolPath) - 1; // Get the system directory and append the "spool" subdirectory. // Forget about length checks here. If this doesn't fit into MAX_PATH, our OS has more serious problems... @@ -133,7 +138,6 @@ { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hinstDLL); - hProcessHeap = GetProcessHeap(); _GetSpoolDirectory(); InitializePrintProcessorTable(); InitializePrinterTable(); @@ -146,14 +150,7 @@ BOOL WINAPI InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor, DWORD cbPrintProvidor, LPWSTR pFullRegistryPath) { - DWORD cbCopy; - - if (cbPrintProvidor < sizeof(PRINTPROVIDOR)) - cbCopy = cbPrintProvidor; - else - cbCopy = sizeof(PRINTPROVIDOR); - - CopyMemory(pPrintProvidor, &PrintProviderFunctions, cbCopy); + CopyMemory(pPrintProvidor, &PrintProviderFunctions, min(cbPrintProvidor, sizeof(PRINTPROVIDOR))); return TRUE; } Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/precomp.h [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -10,6 +10,7 @@ #define WIN32_NO_STATUS #include <limits.h> +#include <stdlib.h> #include <wchar.h> #include <windef.h> @@ -19,6 +20,8 @@ #include <winspool.h> #include <winsplp.h> #include <ndk/rtlfuncs.h> + +#include <spoolss.h> #include <wine/debug.h> WINE_DEFAULT_DEBUG_CHANNEL(localspl); @@ -62,6 +65,8 @@ typedef struct _LOCAL_PRINTER { PWSTR pwszPrinterName; + PWSTR pwszPrinterDriver; + PWSTR pwszDescription; PWSTR pwszDefaultDatatype; DEVMODEW DefaultDevMode; PLOCAL_PRINT_PROCESSOR pPrintProcessor; @@ -157,7 +162,7 @@ // main.c extern const WCHAR wszCurrentEnvironment[]; -extern HANDLE hProcessHeap; +extern const WCHAR* wszPrintProviderInfo[3]; extern WCHAR wszSpoolDirectory[MAX_PATH]; extern DWORD cchSpoolDirectory; @@ -182,7 +187,6 @@ // tools.c PWSTR AllocAndRegQueryWSZ(HKEY hKey, PCWSTR pwszValueName); -PWSTR DuplicateStringW(PCWSTR pwszInput); PVOID NTAPI GenericTableAllocateRoutine(PRTL_GENERIC_TABLE Table, CLONG ByteSize); VOID NTAPI GenericTableFreeRoutine(PRTL_GENERIC_TABLE Table, PVOID Buffer); Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printers.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printers.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printers.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -90,20 +90,20 @@ if (pPrinter) { if (pPrinter->pwszDefaultDatatype) - HeapFree(hProcessHeap, 0, pPrinter->pwszDefaultDatatype); - - HeapFree(hProcessHeap, 0, pPrinter); + DllFreeSplStr(pPrinter->pwszDefaultDatatype); + + DllFreeSplMem(pPrinter); pPrinter = NULL; } if (pwszPrintProcessor) { - HeapFree(hProcessHeap, 0, pwszPrintProcessor); + DllFreeSplStr(pwszPrintProcessor); pwszPrintProcessor = NULL; } // Get the name of this printer. - cchPrinterName = sizeof(wszPrinterName) / sizeof(WCHAR); + cchPrinterName = _countof(wszPrinterName); lStatus = RegEnumKeyExW(hKey, i, wszPrinterName, &cchPrinterName, NULL, NULL, NULL, NULL); if (lStatus == ERROR_MORE_DATA) { @@ -138,16 +138,26 @@ } // Create a new LOCAL_PRINTER structure for it. - pPrinter = HeapAlloc(hProcessHeap, 0, sizeof(LOCAL_PRINTER)); + pPrinter = DllAllocSplMem(sizeof(LOCAL_PRINTER)); if (!pPrinter) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } - pPrinter->pwszPrinterName = DuplicateStringW(wszPrinterName); + pPrinter->pwszPrinterName = AllocSplStr(wszPrinterName); pPrinter->pPrintProcessor = pPrintProcessor; InitializeListHead(&pPrinter->JobQueue); + + // Get the printer driver. + pPrinter->pwszPrinterDriver = AllocAndRegQueryWSZ(hSubKey, L"Printer Driver"); + if (!pPrinter->pwszPrinterDriver) + continue; + + // Get the description. + pPrinter->pwszDescription = AllocAndRegQueryWSZ(hSubKey, L"Description"); + if (!pPrinter->pwszDescription) + continue; // Get the default datatype. pPrinter->pwszDefaultDatatype = AllocAndRegQueryWSZ(hSubKey, L"Datatype"); @@ -183,14 +193,14 @@ Cleanup: if (pwszPrintProcessor) - HeapFree(hProcessHeap, 0, pwszPrintProcessor); + DllFreeSplStr(pwszPrintProcessor); if (pPrinter) { if (pPrinter->pwszDefaultDatatype) - HeapFree(hProcessHeap, 0, pPrinter->pwszDefaultDatatype); - - HeapFree(hProcessHeap, 0, pPrinter); + DllFreeSplStr(pPrinter->pwszDefaultDatatype); + + DllFreeSplMem(pPrinter); } if (hSubKey) @@ -201,11 +211,189 @@ } +BOOL +_LocalEnumPrintersLevel1(DWORD Flags, LPWSTR Name, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned) +{ + const WCHAR wszComma[] = L","; + + DWORD cbName; + DWORD cbComment; + DWORD cbDescription; + DWORD cchComputerName = 0; + DWORD i; + PBYTE pPrinterInfo; + PBYTE pPrinterString; + PLOCAL_PRINTER pPrinter; + PRINTER_INFO_1W PrinterInfo1; + PVOID pRestartKey = NULL; + WCHAR wszComputerName[2 + MAX_COMPUTERNAME_LENGTH + 1 + 1]; + + DWORD dwOffsets[] = { + FIELD_OFFSET(PRINTER_INFO_1W, pName), + FIELD_OFFSET(PRINTER_INFO_1W, pDescription), + FIELD_OFFSET(PRINTER_INFO_1W, pComment), + MAXDWORD + }; + + if (Flags & PRINTER_ENUM_NAME) + { + if (Name) + { + // The user supplied a Computer Name (with leading double backslashes) or Print Provider Name. + // Only process what's directed at us and dismiss every other request with ERROR_INVALID_NAME. + if (Name[0] == L'\\' && Name[1] == L'\\') + { + // Prepend slashes to the computer name. + wszComputerName[0] = L'\\'; + wszComputerName[1] = L'\\'; + + // Get the local computer name for comparison. + cchComputerName = MAX_COMPUTERNAME_LENGTH + 1; + if (!GetComputerNameW(&wszComputerName[2], &cchComputerName)) + { + ERR("GetComputerNameW failed with error %lu!\n", GetLastError()); + return FALSE; + } + + // Add the leading slashes to the total length. + cchComputerName += 2; + + // Now compare this with the local computer name and reject if it doesn't match. + if (wcsicmp(&Name[2], &wszComputerName[2]) != 0) + { + SetLastError(ERROR_INVALID_NAME); + return FALSE; + } + + // Add a trailing backslash to wszComputerName, which will later be prepended in front of the printer names. + wszComputerName[cchComputerName++] = L'\\'; + wszComputerName[cchComputerName] = 0; + } + else if (wcsicmp(Name, wszPrintProviderInfo[0]) != 0) + { + // The user supplied a name that cannot be processed by the local print provider. + SetLastError(ERROR_INVALID_NAME); + return FALSE; + } + } + else + { + // The caller wants information about this Print Provider. + // spoolss packs this into an array of information about all Print Providers. + *pcbNeeded = sizeof(PRINTER_INFO_1W); + + for (i = 0; i < 3; i++) + *pcbNeeded += (wcslen(wszPrintProviderInfo[i]) + 1) * sizeof(WCHAR); + + *pcReturned = 1; + + // Check if the supplied buffer is large enough. + if (cbBuf < *pcbNeeded) + { + SetLastError(ERROR_INSUFFICIENT_BUFFER); + return FALSE; + } + + // Copy over the print processor information. + ((PPRINTER_INFO_1W)pPrinterEnum)->Flags = 0; + PackStrings(wszPrintProviderInfo, pPrinterEnum, dwOffsets, &pPrinterEnum[*pcbNeeded]); + return TRUE; + } + } + + // Count the required buffer size and the number of printers. + for (pPrinter = RtlEnumerateGenericTableWithoutSplaying(&PrinterTable, &pRestartKey); pPrinter; pPrinter = RtlEnumerateGenericTableWithoutSplaying(&PrinterTable, &pRestartKey)) + { + // This looks wrong, but is totally right. PRINTER_INFO_1W has three members pName, pComment and pDescription. + // But pComment equals the "Description" registry value while pDescription is concatenated out of pName and pComment. + // On top of this, the computer name is prepended to the printer name if the user supplied the local computer name during the query. + cbName = (wcslen(pPrinter->pwszPrinterName) + 1) * sizeof(WCHAR); + cbComment = (wcslen(pPrinter->pwszDescription) + 1) * sizeof(WCHAR); + cbDescription = cchComputerName * sizeof(WCHAR) + cbName + cbComment + sizeof(WCHAR); + + *pcbNeeded += sizeof(PRINTER_INFO_1W) + cchComputerName * sizeof(WCHAR) + cbName + cbComment + cbDescription; + *pcReturned++; + } + + // Check if the supplied buffer is large enough. + if (cbBuf < *pcbNeeded) + { + SetLastError(ERROR_INSUFFICIENT_BUFFER); + return FALSE; + } + + // Put the strings right after the last PRINTER_INFO_1W structure. + // Due to all the required string processing, we can't just use PackStrings here :( + pPrinterInfo = pPrinterEnum; + pPrinterString = pPrinterEnum + *pcReturned * sizeof(PRINTER_INFO_1W); + + // Copy over the printer information. + for (pPrinter = RtlEnumerateGenericTableWithoutSplaying(&PrinterTable, &pRestartKey); pPrinter; pPrinter = RtlEnumerateGenericTableWithoutSplaying(&PrinterTable, &pRestartKey)) + { + // FIXME: As for now, the Flags member returns no information. + PrinterInfo1.Flags = 0; + + // Copy the printer name. + PrinterInfo1.pName = (PWSTR)pPrinterString; + CopyMemory(pPrinterString, wszComputerName, cchComputerName * sizeof(WCHAR)); + pPrinterString += cchComputerName * sizeof(WCHAR); + cbName = (wcslen(pPrinter->pwszPrinterName) + 1) * sizeof(WCHAR); + CopyMemory(pPrinterString, pPrinter->pwszPrinterName, cbName); + pPrinterString += cbName; + + // Copy the printer comment (equals the "Description" registry value). + PrinterInfo1.pComment = (PWSTR)pPrinterString; + cbComment = (wcslen(pPrinter->pwszDescription) + 1) * sizeof(WCHAR); + CopyMemory(pPrinterString, pPrinter->pwszDescription, cbComment); + pPrinterString += cbComment; + + // Copy the description, which for PRINTER_INFO_1W has the form "Name,Comment," + PrinterInfo1.pDescription = (PWSTR)pPrinterString; + CopyMemory(pPrinterString, wszComputerName, cchComputerName * sizeof(WCHAR)); + pPrinterString += cchComputerName * sizeof(WCHAR); + CopyMemory(pPrinterString, pPrinter->pwszPrinterName, cbName - sizeof(WCHAR)); + pPrinterString += cbName - sizeof(WCHAR); + CopyMemory(pPrinterString, wszComma, sizeof(WCHAR)); + pPrinterString += sizeof(WCHAR); + CopyMemory(pPrinterString, pPrinter->pwszDescription, cbComment - sizeof(WCHAR)); + pPrinterString += cbComment - sizeof(WCHAR); + CopyMemory(pPrinterString, wszComma, sizeof(wszComma)); + pPrinterString += sizeof(wszComma); + + // Finally copy the structure and advance to the next one in the output buffer. + CopyMemory(pPrinterInfo, &PrinterInfo1, sizeof(PRINTER_INFO_1W)); + pPrinterInfo += sizeof(PRINTER_INFO_1W); + } + + return TRUE; +} + BOOL WINAPI LocalEnumPrinters(DWORD Flags, LPWSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned) { - ///////////// TODO ///////////////////// - return FALSE; + // Do no sanity checks here. This is verified by localspl_apitest! + + // Begin counting. + *pcbNeeded = 0; + *pcReturned = 0; + + // Think positive :) + SetLastError(ERROR_SUCCESS); + + if (Flags & PRINTER_ENUM_LOCAL) + { + // The function behaves quite differently for each level. + if (Level == 1) + return _LocalEnumPrintersLevel1(Flags, Name, pPrinterEnum, cbBuf, pcbNeeded, pcReturned); + + // TODO: Handle other levels. + + // The caller supplied an invalid level. + return FALSE; + } + + // Treat it as success if the caller queried no information and we don't need to return any. + return TRUE; } BOOL WINAPI @@ -250,7 +438,7 @@ *p = 0; // Get the local computer name for comparison. - cchComputerName = sizeof(wszComputerName) / sizeof(WCHAR); + cchComputerName = _countof(wszComputerName); if (!GetComputerNameW(wszComputerName, &cchComputerName)) { ERR("GetComputerNameW failed with error %lu!\n", GetLastError()); @@ -286,7 +474,7 @@ if (cchPrinterName) { // Yes, extract it. - pwszPrinterName = HeapAlloc(hProcessHeap, 0, (cchPrinterName + 1) * sizeof(WCHAR)); + pwszPrinterName = DllAllocSplMem((cchPrinterName + 1) * sizeof(WCHAR)); CopyMemory(pwszPrinterName, lpPrinterName, cchPrinterName * sizeof(WCHAR)); pwszPrinterName[cchPrinterName] = 0; @@ -300,7 +488,7 @@ } // Create a new printer handle. - pPrinterHandle = HeapAlloc(hProcessHeap, HEAP_ZERO_MEMORY, sizeof(LOCAL_PRINTER_HANDLE)); + pPrinterHandle = DllAllocSplMem(sizeof(LOCAL_PRINTER_HANDLE)); pPrinterHandle->Printer = pPrinter; // Check if a datatype was given. @@ -313,12 +501,12 @@ goto Cleanup; } - pPrinterHandle->pwszDatatype = DuplicateStringW(pDefault->pDatatype); + pPrinterHandle->pwszDatatype = AllocSplStr(pDefault->pDatatype); } else { // Use the default datatype. - pPrinterHandle->pwszDatatype = DuplicateStringW(pPrinter->pwszDefaultDatatype); + pPrinterHandle->pwszDatatype = AllocSplStr(pPrinter->pwszDefaultDatatype); } // Check if a DevMode was given, otherwise use the default. @@ -389,7 +577,7 @@ } // Create a new handle that references a printer. - pHandle = HeapAlloc(hProcessHeap, 0, sizeof(LOCAL_HANDLE)); + pHandle = DllAllocSplMem(sizeof(LOCAL_HANDLE)); pHandle->HandleType = Printer; pHandle->SpecificHandle = pPrinterHandle; } @@ -413,7 +601,7 @@ p += sizeof("XcvMonitor ") - 1; ///////////// TODO ///////////////////// - pHandle = HeapAlloc(hProcessHeap, 0, sizeof(LOCAL_HANDLE)); + pHandle = DllAllocSplMem(sizeof(LOCAL_HANDLE)); pHandle->HandleType = Monitor; //pHandle->SpecificHandle = pMonitorHandle; } @@ -423,7 +611,7 @@ p += sizeof("XcvPort ") - 1; //////////// TODO ////////////////////// - pHandle = HeapAlloc(hProcessHeap, 0, sizeof(LOCAL_HANDLE)); + pHandle = DllAllocSplMem(sizeof(LOCAL_HANDLE)); pHandle->HandleType = Port; //pHandle->SpecificHandle = pPortHandle; } @@ -445,13 +633,13 @@ if (pPrinterHandle) { if (pPrinterHandle->pwszDatatype) - HeapFree(hProcessHeap, 0, pPrinterHandle->pwszDatatype); - - HeapFree(hProcessHeap, 0, pPrinterHandle); + DllFreeSplStr(pPrinterHandle->pwszDatatype); + + DllFreeSplMem(pPrinterHandle); } if (pwszPrinterName) - HeapFree(hProcessHeap, 0, pwszPrinterName); + DllFreeSplMem(pwszPrinterName); return bReturnValue; } @@ -498,7 +686,7 @@ pDocumentInfo1 = (PDOC_INFO_1W)pDocInfo; // Create a new job. - pJob = HeapAlloc(hProcessHeap, HEAP_ZERO_MEMORY, sizeof(LOCAL_JOB)); + pJob = DllAllocSplMem(sizeof(LOCAL_JOB)); pJob->Printer = pPrinterHandle->Printer; // Check if a datatype was given. @@ -511,12 +699,12 @@ goto Cleanup; } - pJob->pwszDatatype = DuplicateStringW(pDocumentInfo1->pDatatype); + pJob->pwszDatatype = AllocSplStr(pDocumentInfo1->pDatatype); } else { // Use the printer handle datatype. - pJob->pwszDatatype = DuplicateStringW(pPrinterHandle->pwszDatatype); + pJob->pwszDatatype = AllocSplStr(pPrinterHandle->pwszDatatype); } // Copy over printer defaults. @@ -524,17 +712,17 @@ // Copy over supplied information. if (pDocumentInfo1->pDocName) - pJob->pwszDocumentName = DuplicateStringW(pDocumentInfo1->pDocName); + pJob->pwszDocumentName = AllocSplStr(pDocumentInfo1->pDocName); if (pDocumentInfo1->pOutputFile) - pJob->pwszOutputFile = DuplicateStringW(pDocumentInfo1->pOutputFile); + pJob->pwszOutputFile = AllocSplStr(pDocumentInfo1->pOutputFile); // Enqueue the job. ///////////// TODO ///////////////////// Cleanup: if (pJob) - HeapFree(hProcessHeap, 0, pJob); + DllFreeSplMem(pJob); return dwReturnValue; } @@ -584,7 +772,7 @@ /// Check the handle type, do thoroughful checks on all data fields and clean them. //////////////////////////////////////// - HeapFree(hProcessHeap, 0, pHandle); + DllFreeSplMem(pHandle); return TRUE; } Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/printprocessors.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -31,7 +31,7 @@ _OpenEnvironment(PCWSTR pEnvironment, PHKEY hKey) { const WCHAR wszEnvironmentsKey[] = L"SYSTEM\\CurrentControlSet\\Control\\Print\\Environments\\"; - const DWORD cchEnvironmentsKey = sizeof(wszEnvironmentsKey) / sizeof(WCHAR) - 1; + const DWORD cchEnvironmentsKey = _countof(wszEnvironmentsKey) - 1; BOOL bReturnValue = FALSE; DWORD cchEnvironment; @@ -44,10 +44,10 @@ // Construct the registry key of the demanded environment. cchEnvironment = wcslen(pEnvironment); - pwszEnvironmentKey = HeapAlloc(hProcessHeap, 0, (cchEnvironmentsKey + cchEnvironment + 1) * sizeof(WCHAR)); + pwszEnvironmentKey = DllAllocSplMem((cchEnvironmentsKey + cchEnvironment + 1) * sizeof(WCHAR)); if (!pwszEnvironmentKey) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } @@ -71,7 +71,7 @@ Cleanup: if (pwszEnvironmentKey) - HeapFree(hProcessHeap, 0, pwszEnvironmentKey); + DllFreeSplMem(pwszEnvironmentKey); return bReturnValue; } @@ -182,10 +182,10 @@ } // Allocate a temporary buffer for the Print Processor names. - pwszPrintProcessorName = HeapAlloc(hProcessHeap, 0, (cchMaxSubKey + 1) * sizeof(WCHAR)); + pwszPrintProcessorName = DllAllocSplMem((cchMaxSubKey + 1) * sizeof(WCHAR)); if (!pwszPrintProcessorName) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } @@ -202,15 +202,15 @@ if (pPrintProcessor) { if (pPrintProcessor->pwszName) - HeapFree(hProcessHeap, 0, pPrintProcessor->pwszName); - - HeapFree(hProcessHeap, 0, pPrintProcessor); + DllFreeSplStr(pPrintProcessor->pwszName); + + DllFreeSplMem(pPrintProcessor); pPrintProcessor = NULL; } if (pDatatypesInfo1) { - HeapFree(hProcessHeap, 0, pDatatypesInfo1); + DllFreeSplMem(pDatatypesInfo1); pDatatypesInfo1 = NULL; } @@ -259,8 +259,8 @@ } // Create a new LOCAL_PRINT_PROCESSOR structure for it. - pPrintProcessor = HeapAlloc(hProcessHeap, 0, sizeof(LOCAL_PRINT_PROCESSOR)); - pPrintProcessor->pwszName = DuplicateStringW(pwszPrintProcessorName); + pPrintProcessor = DllAllocSplMem(sizeof(LOCAL_PRINT_PROCESSOR)); + pPrintProcessor->pwszName = AllocSplStr(pwszPrintProcessorName); // Get and verify all its function pointers. pPrintProcessor->pfnClosePrintProcessor = (PClosePrintProcessor)GetProcAddress(hinstPrintProcessor, "ClosePrintProcessor"); @@ -307,10 +307,10 @@ // Get all supported datatypes. pPrintProcessor->pfnEnumPrintProcessorDatatypesW(NULL, NULL, 1, NULL, 0, &cbDatatypes, &dwDatatypes); - pDatatypesInfo1 = HeapAlloc(hProcessHeap, 0, cbDatatypes); + pDatatypesInfo1 = DllAllocSplMem(cbDatatypes); if (!pDatatypesInfo1) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } @@ -325,7 +325,7 @@ for (j = 0; j < dwDatatypes; j++) { - pwszDatatype = DuplicateStringW(pDatatypesInfo1->pName); + pwszDatatype = AllocSplStr(pDatatypesInfo1->pName); if (!RtlInsertElementGenericTable(&pPrintProcessor->DatatypeTable, pDatatypesInfo1->pName, sizeof(PWSTR), NULL)) { @@ -350,21 +350,21 @@ Cleanup: if (pwszDatatype) - HeapFree(hProcessHeap, 0, pwszDatatype); + DllFreeSplStr(pwszDatatype); if (pDatatypesInfo1) - HeapFree(hProcessHeap, 0, pDatatypesInfo1); + DllFreeSplMem(pDatatypesInfo1); if (pPrintProcessor) { if (pPrintProcessor->pwszName) - HeapFree(hProcessHeap, 0, pPrintProcessor->pwszName); - - HeapFree(hProcessHeap, 0, pPrintProcessor); + DllFreeSplStr(pPrintProcessor->pwszName); + + DllFreeSplMem(pPrintProcessor); } if (pwszPrintProcessorName) - HeapFree(hProcessHeap, 0, pwszPrintProcessorName); + DllFreeSplStr(pwszPrintProcessorName); if (hSubSubKey) RegCloseKey(hSubSubKey); @@ -482,7 +482,6 @@ PBYTE pCurrentOutputPrintProcessor; PBYTE pCurrentOutputPrintProcessorInfo; PRINTPROCESSOR_INFO_1W PrintProcessorInfo1; - PWSTR pwszEnvironmentKey = NULL; PWSTR pwszTemp = NULL; // Sanity checks @@ -520,10 +519,10 @@ } // Allocate a temporary buffer to let RegEnumKeyExW succeed. - pwszTemp = HeapAlloc(hProcessHeap, 0, (cchMaxSubKey + 1) * sizeof(WCHAR)); + pwszTemp = DllAllocSplMem((cchMaxSubKey + 1) * sizeof(WCHAR)); if (!pwszTemp) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); goto Cleanup; } @@ -585,10 +584,7 @@ Cleanup: if (pwszTemp) - HeapFree(hProcessHeap, 0, pwszTemp); - - if (pwszEnvironmentKey) - HeapFree(hProcessHeap, 0, pwszEnvironmentKey); + DllFreeSplMem(pwszTemp); if (hSubKey) RegCloseKey(hSubKey); @@ -634,13 +630,12 @@ LocalGetPrintProcessorDirectory(LPWSTR pName, LPWSTR pEnvironment, DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf, LPDWORD pcbNeeded) { const WCHAR wszPath[] = L"\\PRTPROCS\\"; - const DWORD cchPath = sizeof(wszPath) / sizeof(WCHAR) - 1; + const DWORD cchPath = _countof(wszPath) - 1; BOOL bReturnValue = FALSE; DWORD cbDataWritten; HKEY hKey = NULL; LONG lStatus; - PWSTR pwszEnvironmentKey = NULL; // Sanity checks if (Level != 1) @@ -695,9 +690,6 @@ bReturnValue = TRUE; Cleanup: - if (pwszEnvironmentKey) - HeapFree(hProcessHeap, 0, pwszEnvironmentKey); - if (hKey) RegCloseKey(hKey); Modified: branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/tools.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/rea…
============================================================================== --- branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/tools.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/reactos/win32ss/printing/providers/localspl/tools.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -11,7 +11,7 @@ * @name AllocAndRegQueryWSZ * * Queries a REG_SZ value in the registry, allocates memory for it and returns a buffer containing the value. - * You have to free this buffer using HeapFree. + * You have to free this buffer using DllFreeSplMem. * * @param hKey * HKEY variable of the key opened with RegOpenKeyExW. @@ -38,10 +38,10 @@ } // Allocate it. - pwszValue = HeapAlloc(hProcessHeap, 0, cbNeeded); + pwszValue = DllAllocSplMem(cbNeeded); if (!pwszValue) { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); + ERR("DllAllocSplMem failed with error %lu!\n", GetLastError()); return NULL; } @@ -50,7 +50,7 @@ if (lStatus != ERROR_SUCCESS) { ERR("RegQueryValueExW failed with status %ld!\n", lStatus); - HeapFree(hProcessHeap, 0, pwszValue); + DllFreeSplMem(pwszValue); return NULL; } @@ -58,55 +58,23 @@ } /** - * @name DuplicateStringW - * - * Allocates memory for a Unicode string and copies the input string into it. - * Equivalent of wcsdup, but the returned buffer must be freed with HeapFree instead of free. - * - * @param pwszInput - * The input string to copy - * - * @return - * Pointer to the copied string or NULL if no memory could be allocated. - */ -PWSTR -DuplicateStringW(PCWSTR pwszInput) -{ - DWORD cchInput; - PWSTR pwszOutput; - - cchInput = wcslen(pwszInput); - - pwszOutput = HeapAlloc(hProcessHeap, 0, (cchInput + 1) * sizeof(WCHAR)); - if (!pwszOutput) - { - ERR("HeapAlloc failed with error %lu!\n", GetLastError()); - return NULL; - } - - CopyMemory(pwszOutput, pwszInput, (cchInput + 1) * sizeof(WCHAR)); - - return pwszOutput; -} - -/** * @name GenericTableAllocateRoutine * - * RTL_GENERIC_ALLOCATE_ROUTINE for all our RTL_GENERIC_TABLEs, using HeapAlloc. + * RTL_GENERIC_ALLOCATE_ROUTINE for all our RTL_GENERIC_TABLEs, using DllAllocSplMem. */ PVOID NTAPI GenericTableAllocateRoutine(PRTL_GENERIC_TABLE Table, CLONG ByteSize) { - return HeapAlloc(hProcessHeap, 0, ByteSize); + return DllAllocSplMem(ByteSize); } /** * @name GenericTableFreeRoutine * - * RTL_GENERIC_FREE_ROUTINE for all our RTL_GENERIC_TABLEs, using HeapFree. + * RTL_GENERIC_FREE_ROUTINE for all our RTL_GENERIC_TABLEs, using DllFreeSplMem. */ VOID NTAPI GenericTableFreeRoutine(PRTL_GENERIC_TABLE Table, PVOID Buffer) { - HeapFree(hProcessHeap, 0, Buffer); + DllFreeSplMem(Buffer); } Modified: branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/CMakeLists.txt [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -1,3 +1,5 @@ + +include_directories(${REACTOS_SOURCE_DIR}/win32ss/printing/include) list(APPEND SOURCE fpEnumPrinters.c @@ -6,6 +8,6 @@ add_library(localspl_apitest.dll SHARED ${SOURCE}) target_link_libraries(localspl_apitest.dll wine ${PSEH_LIB}) set_module_type(localspl_apitest.dll win32dll) -add_importlibs(localspl_apitest.dll msvcrt kernel32 ntdll) +add_importlibs(localspl_apitest.dll spoolss msvcrt kernel32 ntdll) set_target_properties(localspl_apitest.dll PROPERTIES SUFFIX "") add_cd_file(TARGET localspl_apitest.dll DESTINATION reactos/bin FOR all) Modified: branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/fpEnumPrinters.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/fpEnumPrinters.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/fpEnumPrinters.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -16,15 +16,19 @@ #include <winsplp.h> #include "../localspl_apitest.h" +#include <spoolss.h> START_TEST(fpEnumPrinters) { DWORD cbNeeded; + DWORD cbTemp; DWORD dwReturned; + DWORD i; HMODULE hLocalspl; PInitializePrintProvidor pfnInitializePrintProvidor; PRINTPROVIDOR pp; PPRINTER_INFO_1W pPrinterInfo1; + PVOID pMem; // Get us a handle to the loaded localspl.dll. hLocalspl = GetModuleHandleW(L"localspl"); @@ -69,4 +73,88 @@ ok(wcscmp(pPrinterInfo1->pName, L"Windows NT Local Print Providor") == 0, "pPrinterInfo1->pName is \"%S\"!\n", pPrinterInfo1->pName); ok(wcscmp(pPrinterInfo1->pDescription, L"Windows NT Local Printers") == 0, "pPrinterInfo1->pDescription is \"%S\"!\n", pPrinterInfo1->pDescription); ok(wcscmp(pPrinterInfo1->pComment, L"Locally connected Printers") == 0, "pPrinterInfo1->pComment is \"%S\"!\n", pPrinterInfo1->pComment); + + // Level 7 is the highest supported for localspl under Windows Server 2003. + // Higher levels need to fail, but they don't set an error code, just cbNeeded to 0. + cbNeeded = 0xDEADBEEF; + dwReturned = 0xDEADBEEF; + SetLastError(0xDEADBEEF); + ok(!pp.fpEnumPrinters(PRINTER_ENUM_LOCAL, NULL, 8, NULL, 0, &cbNeeded, &dwReturned), "fpEnumPrinters returns TRUE!\n"); + ok(GetLastError() == ERROR_SUCCESS, "fpEnumPrinters returns error %lu!\n", GetLastError()); + ok(cbNeeded == 0, "cbNeeded is %lu!\n", cbNeeded); + ok(dwReturned == 0, "dwReturned is %lu!\n", dwReturned); + + // Verify that all valid levels work. + // In contrast to EnumPrintersW, which only accepts levels 0, 1, 2, 4 and 5, localspl returns information for level 0 to 7. + for (i = 0; i <= 7; i++) + { + // FIXME: For some reason, using SEH here works only once. + // We experience a hang in the testing process when you run the test again for a second time without restarting spoolsv. +#if 0 + // Try with no valid arguments at all. + // This scenario is usually caugt by RPC, so it just raises an exception here. + _SEH2_TRY + { + dwReturned = 0; + pp.fpEnumPrinters(PRINTER_ENUM_LOCAL, NULL, i, NULL, 0, NULL, NULL); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + dwReturned = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + ok(dwReturned == EXCEPTION_ACCESS_VIOLATION, "dwReturned is %lu for Level %lu!\n", dwReturned, i); +#endif + + // Now get the required buffer size. + cbNeeded = 0xDEADBEEF; + dwReturned = 0xDEADBEEF; + SetLastError(0xDEADBEEF); + ok(!pp.fpEnumPrinters(PRINTER_ENUM_LOCAL, NULL, i, NULL, 0, &cbNeeded, &dwReturned), "fpEnumPrinters returns TRUE for Level %lu!\n", i); + ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "fpEnumPrinters returns error %lu for Level %lu!\n", GetLastError(), i); + ok(cbNeeded > 0, "cbNeeded is 0 for Level %lu!\n", i); + ok(dwReturned == 0, "dwReturned is %lu for Level %lu!\n", dwReturned, i); + +#if 0 + // Now provide the demanded size, but no buffer. This also mustn't touch cbNeeded. + // This scenario is also caught by RPC and we just have an exception here. + _SEH2_TRY + { + dwReturned = 0; + pp.fpEnumPrinters(PRINTER_ENUM_LOCAL, NULL, i, NULL, cbNeeded, &cbTemp, &dwReturned); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + dwReturned = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + ok(dwReturned == EXCEPTION_ACCESS_VIOLATION, "dwReturned is %lu for Level %lu!\n", dwReturned, i); + ok(cbNeeded == cbTemp, "cbNeeded is %lu, cbTemp is %lu for Level %lu!\n", cbNeeded, cbTemp, i); +#endif + + // Finally use the function as intended and aim for success! + pMem = DllAllocSplMem(cbNeeded); + SetLastError(0xDEADBEEF); + ok(pp.fpEnumPrinters(PRINTER_ENUM_LOCAL, NULL, i, pMem, cbNeeded, &cbTemp, &dwReturned), "fpEnumPrinters returns FALSE for Level %lu!\n", i); + + // This is crazy. For level 3, fpEnumPrinters always returns ERROR_INSUFFICIENT_BUFFER even if we supply a buffer large enough. + if (i == 3) + ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "fpEnumPrinters returns error %lu for Level %lu!\n", GetLastError(), i); + else + ok(GetLastError() == ERROR_SUCCESS, "fpEnumPrinters returns error %lu for Level %lu!\n", GetLastError(), i); + + DllFreeSplMem(pMem); + } + + // fpEnumPrinters has to succeed independent of the level (valid or not) if we query no information. + for (i = 0; i < 10; i++) + { + SetLastError(0xDEADBEEF); + ok(pp.fpEnumPrinters(0, NULL, i, NULL, 0, &cbNeeded, &dwReturned), "fpEnumPrinters returns FALSE for Level %lu!\n", i); + ok(GetLastError() == ERROR_SUCCESS, "fpEnumPrinters returns error %lu for Level %lu!\n", GetLastError(), i); + ok(cbNeeded == 0, "cbNeeded is %lu for Level %lu!\n", cbNeeded, i); + ok(dwReturned == 0, "dwReturned is %lu for Level %lu!\n", dwReturned, i); + } } Modified: branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/main.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/main.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/rostests/apitests/localspl/dll/main.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -18,7 +18,6 @@ #include <winreg.h> #include <winspool.h> #include <winsplp.h> - #include "../localspl_apitest.h" Modified: branches/colins-printing-for-freedom/rostests/apitests/localspl/tests.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/localspl/tests.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/rostests/apitests/localspl/tests.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -40,14 +40,17 @@ static void _RunRemoteTest(const char* szTestName) { + BOOL bSuccessful = FALSE; char szBuffer[1024]; DWORD cbRead; DWORD cbWritten; - HANDLE hCommandPipe; - HANDLE hOutputPipe; + HANDLE hCommandPipe = INVALID_HANDLE_VALUE; + HANDLE hFind = NULL; + HANDLE hOutputPipe = INVALID_HANDLE_VALUE; PWSTR p; - SC_HANDLE hSC; - SC_HANDLE hService; + SC_HANDLE hSC = NULL; + SC_HANDLE hService = NULL; + SERVICE_STATUS ServiceStatus; WCHAR wszFilePath[MAX_PATH + 20]; WIN32_FIND_DATAW fd; @@ -59,7 +62,7 @@ if (!GetModuleFileNameW(NULL, wszFilePath, MAX_PATH)) { skip("GetModuleFileNameW failed with error %lu!\n", GetLastError()); - return; + goto Cleanup; } // Replace the extension. @@ -67,16 +70,17 @@ if (!p) { skip("File path has no file extension: %S\n", wszFilePath); - return; + goto Cleanup; } wcscpy(p, L".dll"); // Check if the corresponding DLL file exists. - if (!FindFirstFileW(wszFilePath, &fd)) + hFind = FindFirstFileW(wszFilePath, &fd); + if (!hFind) { skip("My DLL file \"%S\" does not exist!\n", wszFilePath); - return; + goto Cleanup; } // Change the extension back to .exe and add the parameters. @@ -87,8 +91,30 @@ if (!hSC) { skip("OpenSCManagerW failed with error %lu!\n", GetLastError()); - return; - } + goto Cleanup; + } + + // Ensure that the spooler service is running. + hService = OpenServiceW(hSC, L"spooler", SERVICE_QUERY_STATUS); + if (!hService) + { + skip("OpenServiceW failed for the spooler service with error %lu!\n", GetLastError()); + goto Cleanup; + } + + if (!QueryServiceStatus(hService, &ServiceStatus)) + { + skip("QueryServiceStatus failed for the spooler service with error %lu!\n", GetLastError()); + goto Cleanup; + } + + if (ServiceStatus.dwCurrentState != SERVICE_RUNNING) + { + skip("Spooler Service is not running!\n"); + goto Cleanup; + } + + CloseServiceHandle(hService); // Try to open the service if we've created it in a previous run. hService = OpenServiceW(hSC, SERVICE_NAME, SERVICE_ALL_ACCESS); @@ -101,13 +127,13 @@ if (!hService) { skip("CreateServiceW failed with error %lu!\n", GetLastError()); - return; + goto Cleanup; } } else { skip("OpenServiceW failed with error %lu!\n", GetLastError()); - return; + goto Cleanup; } } @@ -116,57 +142,70 @@ if (hCommandPipe == INVALID_HANDLE_VALUE) { skip("CreateNamedPipeW failed for the command pipe with error %lu!\n", GetLastError()); - return; + goto Cleanup; } hOutputPipe = CreateNamedPipeW(OUTPUT_PIPE_NAME, PIPE_ACCESS_INBOUND, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 1024, 1024, 10000, NULL); if (hOutputPipe == INVALID_HANDLE_VALUE) { skip("CreateNamedPipeW failed for the output pipe with error %lu!\n", GetLastError()); - return; + goto Cleanup; } // Start the service with "service" and a dummy parameter (to distinguish it from a call by rosautotest to localspl_apitest:service) if (!StartServiceW(hService, 0, NULL)) { skip("StartServiceW failed with error %lu!\n", GetLastError()); - return; - } - - CloseServiceHandle(hService); - CloseServiceHandle(hSC); + goto Cleanup; + } // Wait till it has injected the DLL and the DLL expects its test name. if (!ConnectNamedPipe(hCommandPipe, NULL) && GetLastError() != ERROR_PIPE_CONNECTED) { skip("ConnectNamedPipe failed for the command pipe with error %lu!\n", GetLastError()); - return; + goto Cleanup; } // Send the test name. if (!WriteFile(hCommandPipe, szTestName, strlen(szTestName) + sizeof(char), &cbWritten, NULL)) { skip("WriteFile failed with error %lu!\n", GetLastError()); - return; - } - - CloseHandle(hCommandPipe); + goto Cleanup; + } // Now wait for the DLL to connect to the output pipe. if (!ConnectNamedPipe(hOutputPipe, NULL)) { skip("ConnectNamedPipe failed for the output pipe with error %lu!\n", GetLastError()); - return; + goto Cleanup; } // Get all testing messages from the pipe and output them on stdout. while (ReadFile(hOutputPipe, szBuffer, sizeof(szBuffer), &cbRead, NULL) && cbRead) fwrite(szBuffer, sizeof(char), cbRead, stdout); - CloseHandle(hOutputPipe); - - // Prevent the testing framework from outputting a "0 tests executed" line here. - ExitProcess(0); + bSuccessful = TRUE; + +Cleanup: + if (hCommandPipe) + CloseHandle(hCommandPipe); + + if (hOutputPipe) + CloseHandle(hOutputPipe); + + if (hFind) + FindClose(hFind); + + if (hService) + CloseServiceHandle(hService); + + if (hSC) + CloseServiceHandle(hSC); + + // If we successfully received test output through the named pipe, we have also output a summary line already. + // Prevent the testing framework from outputting another "0 tests executed" line in this case. + if (bSuccessful) + ExitProcess(0); } START_TEST(fpEnumPrinters) Modified: branches/colins-printing-for-freedom/rostests/apitests/spoolss/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/spoolss/CMakeLists.txt [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/rostests/apitests/spoolss/CMakeLists.txt [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -3,6 +3,7 @@ list(APPEND SOURCE PackStrings.c + ReallocSplStr.c SplInitializeWinSpoolDrv.c testlist.c) Added: branches/colins-printing-for-freedom/rostests/apitests/spoolss/ReallocSplStr.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/spoolss/ReallocSplStr.c (added) +++ branches/colins-printing-for-freedom/rostests/apitests/spoolss/ReallocSplStr.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -0,0 +1,66 @@ +/* + * PROJECT: ReactOS Spooler Router API Tests + * LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation + * PURPOSE: Tests for ReallocSplStr + * COPYRIGHT: Copyright 2015 Colin Finck <colin(a)reactos.org> + */ + +#include <apitest.h> + +#define WIN32_NO_STATUS +#include <windef.h> +#include <winbase.h> +#include <spoolss.h> + +START_TEST(ReallocSplStr) +{ + const WCHAR wszTestString1[] = L"Test"; + const WCHAR wszTestString2[] = L"New"; + + DWORD dwResult; + PWSTR pwszBackup; + PWSTR pwszTest; + + // Verify that ReallocSplStr raises an exception if all parameters are NULL. + _SEH2_TRY + { + dwResult = 0; + ReallocSplStr(NULL, NULL); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + dwResult = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + ok(dwResult == EXCEPTION_ACCESS_VIOLATION, "dwResult is %lx!\n", dwResult); + + // Allocate a string for testing. + pwszTest = AllocSplStr(wszTestString1); + if (!pwszTest) + { + skip("AllocSplStr failed with error %lu!\n", GetLastError()); + return; + } + + // Verify that ReallocSplStr frees the old string even if pwszInput is NULL. + ok(ReallocSplStr(&pwszTest, NULL), "ReallocSplStr is FALSE!\n"); + ok(pwszTest == NULL, "pwszTest is %p\n", pwszTest); + + // Now verify that ReallocSplStr copies the new string into a new block and frees the old one. + pwszBackup = pwszTest; + ok(ReallocSplStr(&pwszTest, wszTestString2), "ReallocSplStr is FALSE!\n"); + ok(wcscmp(pwszTest, wszTestString2) == 0, "New string was not copied into pwszTest!\n"); + + _SEH2_TRY + { + dwResult = (DWORD)wcscmp(pwszBackup, wszTestString1); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + dwResult = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + ok(dwResult == EXCEPTION_ACCESS_VIOLATION, "dwResult is %lx!\n", dwResult); +} Propchange: branches/colins-printing-for-freedom/rostests/apitests/spoolss/ReallocSplStr.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: branches/colins-printing-for-freedom/rostests/apitests/spoolss/SplInitializeWinSpoolDrv.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/spoolss/SplInitializeWinSpoolDrv.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/rostests/apitests/spoolss/SplInitializeWinSpoolDrv.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -15,9 +15,14 @@ START_TEST(SplInitializeWinSpoolDrv) { HINSTANCE hWinspool; - void* Table[9]; + PVOID Table[9]; hWinspool = LoadLibraryW(L"winspool.drv"); + if (!hWinspool) + { + skip("Could not load winspool.drv, last error is %lu!\n", GetLastError()); + return; + } ok(SplInitializeWinSpoolDrv(Table), "SplInitializeWinSpoolDrv returns FALSE!\n"); ok(Table[0] == GetProcAddress(hWinspool, "OpenPrinterW"), "Table[0] is %p\n", Table[0]); Modified: branches/colins-printing-for-freedom/rostests/apitests/spoolss/testlist.c URL:
http://svn.reactos.org/svn/reactos/branches/colins-printing-for-freedom/ros…
============================================================================== --- branches/colins-printing-for-freedom/rostests/apitests/spoolss/testlist.c [iso-8859-1] (original) +++ branches/colins-printing-for-freedom/rostests/apitests/spoolss/testlist.c [iso-8859-1] Tue Jun 9 13:22:25 2015 @@ -11,11 +11,13 @@ #include <apitest.h> extern void func_PackStrings(void); +extern void func_ReallocSplStr(void); extern void func_SplInitializeWinSpoolDrv(void); const struct test winetest_testlist[] = { { "PackStrings", func_PackStrings }, + { "ReallocSplStr", func_ReallocSplStr }, { "SplInitializeWinSpoolDrv", func_SplInitializeWinSpoolDrv }, { 0, 0 }
9 years, 6 months
1
0
0
0
[hbelusca] 68088: [NTVDM]: Fix INT 10h, AH=09h/0Ah by correctly advancing the write position (but scrolling is not supported in those functions), and make VidBiosDrawGlyph support using or not the ...
by hbelusca@svn.reactos.org
Author: hbelusca Date: Tue Jun 9 12:47:58 2015 New Revision: 68088 URL:
http://svn.reactos.org/svn/reactos?rev=68088&view=rev
Log: [NTVDM]: Fix INT 10h, AH=09h/0Ah by correctly advancing the write position (but scrolling is not supported in those functions), and make VidBiosDrawGlyph support using or not the attribute byte (for text modes only). Modified: trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c Modified: trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/bios…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/bios/vidbios.c [iso-8859-1] Tue Jun 9 12:47:58 2015 @@ -2561,7 +2561,7 @@ return TRUE; } -static VOID VidBiosDrawGlyph(WORD CharData, BYTE Page, BYTE Row, BYTE Column) +static VOID VidBiosDrawGlyph(WORD CharData, BOOLEAN UseAttr, BYTE Page, BYTE Row, BYTE Column) { switch (Bda->VideoMode) { @@ -2576,8 +2576,7 @@ Page * Bda->VideoPageSize + (Row * Bda->ScreenColumns + Column) * sizeof(WORD)), (LPVOID)&CharData, - sizeof(WORD)); - + UseAttr ? sizeof(WORD) : sizeof(BYTE)); break; } @@ -2831,7 +2830,7 @@ /* Erase the existing character */ CharData = MAKEWORD(' ', Attribute); - VidBiosDrawGlyph(CharData, Page, Row, Column); + VidBiosDrawGlyph(CharData, TRUE, Page, Row, Column); } else if (Character == '\t') { @@ -2857,10 +2856,8 @@ { /* Default character */ - /* Write the character */ - VidBiosDrawGlyph(CharData, Page, Row, Column); - - /* Advance the cursor */ + /* Write the character and advance the cursor */ + VidBiosDrawGlyph(CharData, TRUE, Page, Row, Column); Column++; } @@ -2957,7 +2954,7 @@ /* Read Character and Attribute at Cursor Position */ case 0x08: { - WORD CharacterData; + WORD CharData; BYTE Page = getBH(); DWORD Offset; @@ -2972,11 +2969,11 @@ /* Read from the video memory */ EmulatorReadMemory(&EmulatorContext, TO_LINEAR(TEXT_VIDEO_SEG, Offset), - (LPVOID)&CharacterData, + (LPVOID)&CharData, sizeof(WORD)); /* Return the character data in AX */ - setAX(CharacterData); + setAX(CharData); break; } @@ -2986,21 +2983,40 @@ /* Write Character only (PCjr: + Attribute) at Cursor Position */ case 0x0A: { - WORD CharacterData = MAKEWORD(getAL(), getBL()); - BYTE Page = getBH(); - DWORD Counter = getCX(); + WORD Counter = getCX(); + WORD CharData = MAKEWORD(getAL(), getBL()); + BOOLEAN UseAttr = (getAH() == 0x09); + BYTE Page = getBH(); + BYTE Row, Column; /* Check if the page exists */ if (Page >= BIOS_MAX_PAGES) break; + /* Get the cursor location */ + // VidBiosGetCursorPosition(&Row, &Column, Page); + Row = HIBYTE(Bda->CursorPosition[Page]); + Column = LOBYTE(Bda->CursorPosition[Page]); + /* Write to video memory a certain number of times */ - while (Counter > 0) + while (Counter-- > 0) { - VidBiosDrawGlyph(CharacterData, - CharacterData, - HIBYTE(Bda->CursorPosition[Page]), - LOBYTE(Bda->CursorPosition[Page])); - Counter--; + /* Write the character and advance the position */ + VidBiosDrawGlyph(CharData, UseAttr, Page, Row, Column); + Column++; + + /* Check if it passed the end of the row */ + if (Column >= Bda->ScreenColumns) + { + /* Return to the first column and go to the next line */ + Column = 0; + Row++; + } + + /* Contrary to the "Teletype Output" function, the screen is not scrolled */ + if (Row > Bda->ScreenRows) + { + Row = Bda->ScreenRows; + } } break;
9 years, 6 months
1
0
0
0
← Newer
1
...
21
22
23
24
25
26
27
...
35
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
Results per page:
10
25
50
100
200