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
September 2011
----- 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
20 participants
399 discussions
Start a n
N
ew thread
[cmihail] 53650: [shell32.dll] - Fix bug 6336 of shell32_new. The bug was caused by not properly verifying the return value of ShellExecuteExW. [FORMATTING] - First wave of accidental formatting (s...
by cmihail@svn.reactos.org
Author: cmihail Date: Thu Sep 8 22:42:01 2011 New Revision: 53650 URL:
http://svn.reactos.org/svn/reactos?rev=53650&view=rev
Log: [shell32.dll] - Fix bug 6336 of shell32_new. The bug was caused by not properly verifying the return value of ShellExecuteExW. [FORMATTING] - First wave of accidental formatting (sorry again about mixing code and formatting heh). Modified: branches/shell32_new-bringup/dll/win32/shell32/shfldr_cpanel.cpp Modified: branches/shell32_new-bringup/dll/win32/shell32/shfldr_cpanel.cpp URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
============================================================================== --- branches/shell32_new-bringup/dll/win32/shell32/shfldr_cpanel.cpp [iso-8859-1] (original) +++ branches/shell32_new-bringup/dll/win32/shell32/shfldr_cpanel.cpp [iso-8859-1] Thu Sep 8 22:42:01 2011 @@ -22,7 +22,7 @@ /* TODO: 1. The selected items list should not be stored in CControlPanelFolder, it should - be a result returned by an internal method. + be a result returned by an internal method. */ #include <precomp.h> @@ -34,20 +34,20 @@ */ class CControlPanelEnum : - public IEnumIDListImpl + public IEnumIDListImpl { private: public: - CControlPanelEnum(); - ~CControlPanelEnum(); - HRESULT WINAPI Initialize(DWORD dwFlags); - BOOL SHELL_RegisterCPanelApp(LPCSTR path); - int SHELL_RegisterRegistryCPanelApps(HKEY hkey_root, LPCSTR szRepPath); - int SHELL_RegisterCPanelFolders(HKEY hkey_root, LPCSTR szRepPath); - BOOL CreateCPanelEnumList(DWORD dwFlags); + CControlPanelEnum(); + ~CControlPanelEnum(); + HRESULT WINAPI Initialize(DWORD dwFlags); + BOOL SHELL_RegisterCPanelApp(LPCSTR path); + int SHELL_RegisterRegistryCPanelApps(HKEY hkey_root, LPCSTR szRepPath); + int SHELL_RegisterCPanelFolders(HKEY hkey_root, LPCSTR szRepPath); + BOOL CreateCPanelEnumList(DWORD dwFlags); BEGIN_COM_MAP(CControlPanelEnum) - COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList) + COM_INTERFACE_ENTRY_IID(IID_IEnumIDList, IEnumIDList) END_COM_MAP() }; @@ -72,52 +72,52 @@ HRESULT WINAPI CControlPanelEnum::Initialize(DWORD dwFlags) { - if (CreateCPanelEnumList(dwFlags) == FALSE) - return E_FAIL; - return S_OK; + if (CreateCPanelEnumList(dwFlags) == FALSE) + return E_FAIL; + return S_OK; } static LPITEMIDLIST _ILCreateCPanelApplet(LPCSTR name, LPCSTR displayName, LPCSTR comment, int iconIdx) { - PIDLCPanelStruct *p; - LPITEMIDLIST pidl; - PIDLDATA tmp; - int size0 = (char*)&tmp.u.cpanel.szName - (char*)&tmp.u.cpanel; - int size = size0; - int l; - - tmp.type = PT_CPLAPPLET; - tmp.u.cpanel.dummy = 0; - tmp.u.cpanel.iconIdx = iconIdx; - - l = strlen(name); - size += l + 1; - - tmp.u.cpanel.offsDispName = l+1; - l = strlen(displayName); - size += l + 1; - - tmp.u.cpanel.offsComment = tmp.u.cpanel.offsDispName + 1 + l; - l = strlen(comment); - size += l + 1; - - pidl = (LPITEMIDLIST)SHAlloc(size + 4); - if (!pidl) - return NULL; - - pidl->mkid.cb = size + 2; - memcpy(pidl->mkid.abID, &tmp, 2 + size0); - - p = &((PIDLDATA *)pidl->mkid.abID)->u.cpanel; - strcpy(p->szName, name); - strcpy(p->szName+tmp.u.cpanel.offsDispName, displayName); - strcpy(p->szName+tmp.u.cpanel.offsComment, comment); - - *(WORD*)((char*)pidl + (size + 2)) = 0; - - pcheck(pidl); - - return pidl; + PIDLCPanelStruct *p; + LPITEMIDLIST pidl; + PIDLDATA tmp; + int size0 = (char*)&tmp.u.cpanel.szName - (char*)&tmp.u.cpanel; + int size = size0; + int l; + + tmp.type = PT_CPLAPPLET; + tmp.u.cpanel.dummy = 0; + tmp.u.cpanel.iconIdx = iconIdx; + + l = strlen(name); + size += l + 1; + + tmp.u.cpanel.offsDispName = l+1; + l = strlen(displayName); + size += l + 1; + + tmp.u.cpanel.offsComment = tmp.u.cpanel.offsDispName + 1 + l; + l = strlen(comment); + size += l + 1; + + pidl = (LPITEMIDLIST)SHAlloc(size + 4); + if (!pidl) + return NULL; + + pidl->mkid.cb = size + 2; + memcpy(pidl->mkid.abID, &tmp, 2 + size0); + + p = &((PIDLDATA *)pidl->mkid.abID)->u.cpanel; + strcpy(p->szName, name); + strcpy(p->szName+tmp.u.cpanel.offsDispName, displayName); + strcpy(p->szName+tmp.u.cpanel.offsComment, comment); + + *(WORD*)((char*)pidl + (size + 2)) = 0; + + pcheck(pidl); + + return pidl; } /************************************************************************** @@ -126,114 +126,114 @@ */ static PIDLCPanelStruct *_ILGetCPanelPointer(LPCITEMIDLIST pidl) { - LPPIDLDATA pdata = _ILGetDataPointer(pidl); - - if (pdata && pdata->type == PT_CPLAPPLET) - return (PIDLCPanelStruct *)&(pdata->u.cpanel); - - return NULL; + LPPIDLDATA pdata = _ILGetDataPointer(pidl); + + if (pdata && pdata->type == PT_CPLAPPLET) + return (PIDLCPanelStruct *)&(pdata->u.cpanel); + + return NULL; } BOOL CControlPanelEnum::SHELL_RegisterCPanelApp(LPCSTR path) { - LPITEMIDLIST pidl; - CPlApplet* applet; - CPanel panel; - CPLINFO info; - unsigned i; - int iconIdx; - - char displayName[MAX_PATH]; - char comment[MAX_PATH]; - - WCHAR wpath[MAX_PATH]; - - MultiByteToWideChar(CP_ACP, 0, path, -1, wpath, MAX_PATH); - - panel.first = NULL; - applet = Control_LoadApplet(0, wpath, &panel); - - if (applet) - { - for (i = 0; i < applet->count; ++i) - { - WideCharToMultiByte(CP_ACP, 0, applet->info[i].szName, -1, displayName, MAX_PATH, 0, 0); - WideCharToMultiByte(CP_ACP, 0, applet->info[i].szInfo, -1, comment, MAX_PATH, 0, 0); - - applet->proc(0, CPL_INQUIRE, i, (LPARAM)&info); - - if (info.idIcon > 0) - iconIdx = -info.idIcon; /* negative icon index instead of icon number */ - else - iconIdx = 0; - - pidl = _ILCreateCPanelApplet(path, displayName, comment, iconIdx); - - if (pidl) - AddToEnumList(pidl); - } - Control_UnloadApplet(applet); - } - return TRUE; + LPITEMIDLIST pidl; + CPlApplet* applet; + CPanel panel; + CPLINFO info; + unsigned i; + int iconIdx; + + char displayName[MAX_PATH]; + char comment[MAX_PATH]; + + WCHAR wpath[MAX_PATH]; + + MultiByteToWideChar(CP_ACP, 0, path, -1, wpath, MAX_PATH); + + panel.first = NULL; + applet = Control_LoadApplet(0, wpath, &panel); + + if (applet) + { + for (i = 0; i < applet->count; ++i) + { + WideCharToMultiByte(CP_ACP, 0, applet->info[i].szName, -1, displayName, MAX_PATH, 0, 0); + WideCharToMultiByte(CP_ACP, 0, applet->info[i].szInfo, -1, comment, MAX_PATH, 0, 0); + + applet->proc(0, CPL_INQUIRE, i, (LPARAM)&info); + + if (info.idIcon > 0) + iconIdx = -info.idIcon; /* negative icon index instead of icon number */ + else + iconIdx = 0; + + pidl = _ILCreateCPanelApplet(path, displayName, comment, iconIdx); + + if (pidl) + AddToEnumList(pidl); + } + Control_UnloadApplet(applet); + } + return TRUE; } int CControlPanelEnum::SHELL_RegisterRegistryCPanelApps(HKEY hkey_root, LPCSTR szRepPath) { - char name[MAX_PATH]; - char value[MAX_PATH]; - HKEY hkey; - - int cnt = 0; - - if (RegOpenKeyA(hkey_root, szRepPath, &hkey) == ERROR_SUCCESS) - { - int idx = 0; - - for(; ; idx++) - { - DWORD nameLen = MAX_PATH; - DWORD valueLen = MAX_PATH; - - if (RegEnumValueA(hkey, idx, name, &nameLen, NULL, NULL, (LPBYTE)&value, &valueLen) != ERROR_SUCCESS) - break; - - if (SHELL_RegisterCPanelApp(value)) - ++cnt; - } - RegCloseKey(hkey); - } - - return cnt; + char name[MAX_PATH]; + char value[MAX_PATH]; + HKEY hkey; + + int cnt = 0; + + if (RegOpenKeyA(hkey_root, szRepPath, &hkey) == ERROR_SUCCESS) + { + int idx = 0; + + for(; ; idx++) + { + DWORD nameLen = MAX_PATH; + DWORD valueLen = MAX_PATH; + + if (RegEnumValueA(hkey, idx, name, &nameLen, NULL, NULL, (LPBYTE)&value, &valueLen) != ERROR_SUCCESS) + break; + + if (SHELL_RegisterCPanelApp(value)) + ++cnt; + } + RegCloseKey(hkey); + } + + return cnt; } int CControlPanelEnum::SHELL_RegisterCPanelFolders(HKEY hkey_root, LPCSTR szRepPath) { - char name[MAX_PATH]; - HKEY hkey; - - int cnt = 0; - - if (RegOpenKeyA(hkey_root, szRepPath, &hkey) == ERROR_SUCCESS) - { - int idx = 0; - for (; ; idx++) - { - if (RegEnumKeyA(hkey, idx, name, MAX_PATH) != ERROR_SUCCESS) - break; - - if (*name == '{') - { - LPITEMIDLIST pidl = _ILCreateGuidFromStrA(name); - - if (pidl && AddToEnumList(pidl)) - ++cnt; - } - } - - RegCloseKey(hkey); - } - - return cnt; + char name[MAX_PATH]; + HKEY hkey; + + int cnt = 0; + + if (RegOpenKeyA(hkey_root, szRepPath, &hkey) == ERROR_SUCCESS) + { + int idx = 0; + for (; ; idx++) + { + if (RegEnumKeyA(hkey, idx, name, MAX_PATH) != ERROR_SUCCESS) + break; + + if (*name == '{') + { + LPITEMIDLIST pidl = _ILCreateGuidFromStrA(name); + + if (pidl && AddToEnumList(pidl)) + ++cnt; + } + } + + RegCloseKey(hkey); + } + + return cnt; } /************************************************************************** @@ -241,79 +241,79 @@ */ BOOL CControlPanelEnum::CreateCPanelEnumList(DWORD dwFlags) { - CHAR szPath[MAX_PATH]; - WIN32_FIND_DATAA wfd; - HANDLE hFile; - - TRACE("(%p)->(flags=0x%08x)\n", this, dwFlags); - - /* enumerate control panel folders */ - if (dwFlags & SHCONTF_FOLDERS) - SHELL_RegisterCPanelFolders(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace"); - - /* enumerate the control panel applets */ - if (dwFlags & SHCONTF_NONFOLDERS) - { - LPSTR p; - - GetSystemDirectoryA(szPath, MAX_PATH); - p = PathAddBackslashA(szPath); - strcpy(p, "*.cpl"); - - TRACE("-- (%p)-> enumerate SHCONTF_NONFOLDERS of %s\n", this, debugstr_a(szPath)); - hFile = FindFirstFileA(szPath, &wfd); - - if (hFile != INVALID_HANDLE_VALUE) - { - do - { - if (!(dwFlags & SHCONTF_INCLUDEHIDDEN) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)) - continue; - - if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { - strcpy(p, wfd.cFileName); - if (strcmp(wfd.cFileName, "ncpa.cpl")) - SHELL_RegisterCPanelApp(szPath); - } - } while(FindNextFileA(hFile, &wfd)); - FindClose(hFile); - } - - SHELL_RegisterRegistryCPanelApps(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Cpls"); - SHELL_RegisterRegistryCPanelApps(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Cpls"); - } - return TRUE; + CHAR szPath[MAX_PATH]; + WIN32_FIND_DATAA wfd; + HANDLE hFile; + + TRACE("(%p)->(flags=0x%08x)\n", this, dwFlags); + + /* enumerate control panel folders */ + if (dwFlags & SHCONTF_FOLDERS) + SHELL_RegisterCPanelFolders(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ControlPanel\\NameSpace"); + + /* enumerate the control panel applets */ + if (dwFlags & SHCONTF_NONFOLDERS) + { + LPSTR p; + + GetSystemDirectoryA(szPath, MAX_PATH); + p = PathAddBackslashA(szPath); + strcpy(p, "*.cpl"); + + TRACE("-- (%p)-> enumerate SHCONTF_NONFOLDERS of %s\n", this, debugstr_a(szPath)); + hFile = FindFirstFileA(szPath, &wfd); + + if (hFile != INVALID_HANDLE_VALUE) + { + do + { + if (!(dwFlags & SHCONTF_INCLUDEHIDDEN) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)) + continue; + + if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { + strcpy(p, wfd.cFileName); + if (strcmp(wfd.cFileName, "ncpa.cpl")) + SHELL_RegisterCPanelApp(szPath); + } + } while(FindNextFileA(hFile, &wfd)); + FindClose(hFile); + } + + SHELL_RegisterRegistryCPanelApps(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Cpls"); + SHELL_RegisterRegistryCPanelApps(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Control Panel\\Cpls"); + } + return TRUE; } CControlPanelFolder::CControlPanelFolder() { - pidlRoot = NULL; /* absolute pidl */ - dwAttributes = 0; /* attributes returned by GetAttributesOf FIXME: use it */ - apidl = NULL; - cidl = 0; + pidlRoot = NULL; /* absolute pidl */ + dwAttributes = 0; /* attributes returned by GetAttributesOf FIXME: use it */ + apidl = NULL; + cidl = 0; } CControlPanelFolder::~CControlPanelFolder() { - TRACE("-- destroying IShellFolder(%p)\n", this); - SHFree(pidlRoot); + TRACE("-- destroying IShellFolder(%p)\n", this); + SHFree(pidlRoot); } HRESULT WINAPI CControlPanelFolder::FinalConstruct() { - pidlRoot = _ILCreateControlPanel(); /* my qualified pidl */ - if (pidlRoot == NULL) - return E_OUTOFMEMORY; - return S_OK; -} - -/************************************************************************** -* ISF_ControlPanel_fnParseDisplayName + pidlRoot = _ILCreateControlPanel(); /* my qualified pidl */ + if (pidlRoot == NULL) + return E_OUTOFMEMORY; + return S_OK; +} + +/************************************************************************** +* ISF_ControlPanel_fnParseDisplayName */ HRESULT WINAPI CControlPanelFolder::ParseDisplayName(HWND hwndOwner, - LPBC pbc, - LPOLESTR lpszDisplayName, - DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes) + LPBC pbc, + LPOLESTR lpszDisplayName, + DWORD * pchEaten, LPITEMIDLIST * ppidl, DWORD * pdwAttributes) { WCHAR szElement[MAX_PATH]; LPCWSTR szNext = NULL; @@ -369,40 +369,40 @@ } /************************************************************************** -* ISF_ControlPanel_fnEnumObjects +* ISF_ControlPanel_fnEnumObjects */ HRESULT WINAPI CControlPanelFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST * ppEnumIDList) { - CComObject<CControlPanelEnum> *theEnumerator; - CComPtr<IEnumIDList> result; - HRESULT hResult; - - TRACE ("(%p)->(HWND=%p flags=0x%08x pplist=%p)\n", this, hwndOwner, dwFlags, ppEnumIDList); - - if (ppEnumIDList == NULL) - return E_POINTER; - *ppEnumIDList = NULL; - ATLTRY (theEnumerator = new CComObject<CControlPanelEnum>); - if (theEnumerator == NULL) - return E_OUTOFMEMORY; - hResult = theEnumerator->QueryInterface (IID_IEnumIDList, (void **)&result); - if (FAILED (hResult)) - { - delete theEnumerator; - return hResult; - } - hResult = theEnumerator->Initialize (dwFlags); - if (FAILED (hResult)) - return hResult; - *ppEnumIDList = result.Detach (); + CComObject<CControlPanelEnum> *theEnumerator; + CComPtr<IEnumIDList> result; + HRESULT hResult; + + TRACE ("(%p)->(HWND=%p flags=0x%08x pplist=%p)\n", this, hwndOwner, dwFlags, ppEnumIDList); + + if (ppEnumIDList == NULL) + return E_POINTER; + *ppEnumIDList = NULL; + ATLTRY (theEnumerator = new CComObject<CControlPanelEnum>); + if (theEnumerator == NULL) + return E_OUTOFMEMORY; + hResult = theEnumerator->QueryInterface (IID_IEnumIDList, (void **)&result); + if (FAILED (hResult)) + { + delete theEnumerator; + return hResult; + } + hResult = theEnumerator->Initialize (dwFlags); + if (FAILED (hResult)) + return hResult; + *ppEnumIDList = result.Detach (); TRACE ("-- (%p)->(new ID List: %p)\n", this, *ppEnumIDList); - return S_OK; -} - -/************************************************************************** -* ISF_ControlPanel_fnBindToObject + return S_OK; +} + +/************************************************************************** +* ISF_ControlPanel_fnBindToObject */ HRESULT WINAPI CControlPanelFolder::BindToObject(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID * ppvOut) { @@ -412,7 +412,7 @@ } /************************************************************************** -* ISF_ControlPanel_fnBindToStorage +* ISF_ControlPanel_fnBindToStorage */ HRESULT WINAPI CControlPanelFolder::BindToStorage(LPCITEMIDLIST pidl, LPBC pbcReserved, REFIID riid, LPVOID * ppvOut) { @@ -423,7 +423,7 @@ } /************************************************************************** -* ISF_ControlPanel_fnCompareIDs +* ISF_ControlPanel_fnCompareIDs */ HRESULT WINAPI CControlPanelFolder::CompareIDs(LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) @@ -437,30 +437,30 @@ } /************************************************************************** -* ISF_ControlPanel_fnCreateViewObject +* ISF_ControlPanel_fnCreateViewObject */ HRESULT WINAPI CControlPanelFolder::CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID * ppvOut) { - CComPtr<IShellView> pShellView; + CComPtr<IShellView> pShellView; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(hwnd=%p,%s,%p)\n", this, hwndOwner, shdebugstr_guid(&riid), ppvOut); if (ppvOut) { - *ppvOut = NULL; - - if (IsEqualIID(riid, IID_IDropTarget)) { - WARN("IDropTarget not implemented\n"); - hr = E_NOTIMPL; - } else if (IsEqualIID(riid, IID_IContextMenu)) { - WARN("IContextMenu not implemented\n"); - hr = E_NOTIMPL; - } else if (IsEqualIID(riid, IID_IShellView)) { - hr = IShellView_Constructor((IShellFolder *)this, &pShellView); - if (pShellView) { - hr = pShellView->QueryInterface(riid, ppvOut); - } - } + *ppvOut = NULL; + + if (IsEqualIID(riid, IID_IDropTarget)) { + WARN("IDropTarget not implemented\n"); + hr = E_NOTIMPL; + } else if (IsEqualIID(riid, IID_IContextMenu)) { + WARN("IContextMenu not implemented\n"); + hr = E_NOTIMPL; + } else if (IsEqualIID(riid, IID_IShellView)) { + hr = IShellView_Constructor((IShellFolder *)this, &pShellView); + if (pShellView) { + hr = pShellView->QueryInterface(riid, ppvOut); + } + } } TRACE("--(%p)->(interface=%p)\n", this, ppvOut); return hr; @@ -482,13 +482,13 @@ return E_INVALIDARG; if (*rgfInOut == 0) - *rgfInOut = ~0; + *rgfInOut = ~0; while(cidl > 0 && *apidl) { - pdump(*apidl); - SHELL32_GetItemAttributes(this, *apidl, rgfInOut); - apidl++; - cidl--; + pdump(*apidl); + SHELL32_GetItemAttributes(this, *apidl, rgfInOut); + apidl++; + cidl--; } /* make sure SFGAO_VALIDATE is cleared, some apps depend on that */ *rgfInOut &= ~SFGAO_VALIDATE; @@ -498,7 +498,7 @@ } /************************************************************************** -* ISF_ControlPanel_fnGetUIObjectOf +* ISF_ControlPanel_fnGetUIObjectOf * * PARAMETERS * HWND hwndOwner, //[in ] Parent window for any output @@ -510,59 +510,59 @@ * */ HRESULT WINAPI CControlPanelFolder::GetUIObjectOf(HWND hwndOwner, - UINT cidl, LPCITEMIDLIST * apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut) + UINT cidl, LPCITEMIDLIST * apidl, REFIID riid, UINT * prgfInOut, LPVOID * ppvOut) { LPITEMIDLIST pidl; IUnknown *pObj = NULL; HRESULT hr = E_INVALIDARG; TRACE("(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n", - this, hwndOwner, cidl, apidl, shdebugstr_guid(&riid), prgfInOut, ppvOut); + this, hwndOwner, cidl, apidl, shdebugstr_guid(&riid), prgfInOut, ppvOut); if (ppvOut) { - *ppvOut = NULL; - - if (IsEqualIID(riid, IID_IContextMenu) &&(cidl >= 1)) { - // TODO - // create a seperate item struct - // - pObj = (IContextMenu *)this; - this->apidl = apidl; - cidl = cidl; - pObj->AddRef(); - hr = S_OK; - } else if (IsEqualIID(riid, IID_IDataObject) &&(cidl >= 1)) { - hr = IDataObject_Constructor(hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj); - } else if (IsEqualIID(riid, IID_IExtractIconA) &&(cidl == 1)) { - pidl = ILCombine(pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconA_Constructor(pidl); - SHFree(pidl); - hr = S_OK; - } else if (IsEqualIID(riid, IID_IExtractIconW) &&(cidl == 1)) { - pidl = ILCombine(pidlRoot, apidl[0]); - pObj = (LPUNKNOWN) IExtractIconW_Constructor(pidl); - SHFree(pidl); - hr = S_OK; - } else if ((IsEqualIID(riid, IID_IShellLinkW) || IsEqualIID(riid, IID_IShellLinkA)) - && (cidl == 1)) { - pidl = ILCombine(pidlRoot, apidl[0]); - hr = IShellLink_ConstructFromFile(NULL, riid, pidl,(LPVOID*)&pObj); - SHFree(pidl); - } else { - hr = E_NOINTERFACE; - } - - if (SUCCEEDED(hr) && !pObj) - hr = E_OUTOFMEMORY; - - *ppvOut = pObj; + *ppvOut = NULL; + + if (IsEqualIID(riid, IID_IContextMenu) &&(cidl >= 1)) { + // TODO + // create a seperate item struct + // + pObj = (IContextMenu *)this; + this->apidl = apidl; + cidl = cidl; + pObj->AddRef(); + hr = S_OK; + } else if (IsEqualIID(riid, IID_IDataObject) &&(cidl >= 1)) { + hr = IDataObject_Constructor(hwndOwner, pidlRoot, apidl, cidl, (IDataObject **)&pObj); + } else if (IsEqualIID(riid, IID_IExtractIconA) &&(cidl == 1)) { + pidl = ILCombine(pidlRoot, apidl[0]); + pObj = (LPUNKNOWN) IExtractIconA_Constructor(pidl); + SHFree(pidl); + hr = S_OK; + } else if (IsEqualIID(riid, IID_IExtractIconW) &&(cidl == 1)) { + pidl = ILCombine(pidlRoot, apidl[0]); + pObj = (LPUNKNOWN) IExtractIconW_Constructor(pidl); + SHFree(pidl); + hr = S_OK; + } else if ((IsEqualIID(riid, IID_IShellLinkW) || IsEqualIID(riid, IID_IShellLinkA)) + && (cidl == 1)) { + pidl = ILCombine(pidlRoot, apidl[0]); + hr = IShellLink_ConstructFromFile(NULL, riid, pidl,(LPVOID*)&pObj); + SHFree(pidl); + } else { + hr = E_NOINTERFACE; + } + + if (SUCCEEDED(hr) && !pObj) + hr = E_OUTOFMEMORY; + + *ppvOut = pObj; } TRACE("(%p)->hr=0x%08x\n", this, hr); return hr; } /************************************************************************** -* ISF_ControlPanel_fnGetDisplayNameOf +* ISF_ControlPanel_fnGetDisplayNameOf */ HRESULT WINAPI CControlPanelFolder::GetDisplayNameOf(LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet) { @@ -576,43 +576,53 @@ pdump(pidl); if (!pidl || !strRet) - return E_INVALIDARG; + return E_INVALIDARG; pcpanel = _ILGetCPanelPointer(pidl); - if (pcpanel) { - lstrcpyA(szPath, pcpanel->szName+pcpanel->offsDispName); - - if (!(dwFlags & SHGDN_FORPARSING)) - FIXME("retrieve display name from control panel app\n"); + if (pcpanel) + { + lstrcpyA(szPath, pcpanel->szName+pcpanel->offsDispName); + + if (!(dwFlags & SHGDN_FORPARSING)) + FIXME("retrieve display name from control panel app\n"); } /* take names of special folders only if it's only this folder */ - else if (_ILIsSpecialFolder(pidl)) { - BOOL bSimplePidl = _ILIsPidlSimple(pidl); - - if (bSimplePidl) { - _ILSimpleGetTextW(pidl, wszPath, MAX_PATH); /* append my own path */ - } else { - FIXME("special pidl\n"); - } - - if ((dwFlags & SHGDN_FORPARSING) && !bSimplePidl) { /* go deeper if needed */ - int len = 0; - - PathAddBackslashW(wszPath); - len = wcslen(wszPath); - - if (!SUCCEEDED - (SHELL32_GetDisplayNameOfChild(this, pidl, dwFlags, wszPath + len, MAX_PATH + 1 - len))) - return E_OUTOFMEMORY; - if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH, NULL, NULL)) - wszPath[0] = '\0'; - } else { - if (bSimplePidl) { - if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH, NULL, NULL)) - wszPath[0] = '\0'; - } - } + else if (_ILIsSpecialFolder(pidl)) + { + BOOL bSimplePidl = _ILIsPidlSimple(pidl); + + if (bSimplePidl) + { + _ILSimpleGetTextW(pidl, wszPath, MAX_PATH); /* append my own path */ + } + else + { + FIXME("special pidl\n"); + } + + if ((dwFlags & SHGDN_FORPARSING) && !bSimplePidl) + { + /* go deeper if needed */ + int len = 0; + + PathAddBackslashW(wszPath); + len = wcslen(wszPath); + + if (!SUCCEEDED(SHELL32_GetDisplayNameOfChild(this, pidl, dwFlags, wszPath + len, MAX_PATH + 1 - len))) + return E_OUTOFMEMORY; + + if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH, NULL, NULL)) + wszPath[0] = '\0'; + } + else + { + if (bSimplePidl) + { + if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH, NULL, NULL)) + wszPath[0] = '\0'; + } + } } strRet->uType = STRRET_CSTR; @@ -634,8 +644,8 @@ * DWORD dwFlags, //[in ] SHGNO formatting flags * LPITEMIDLIST* ppidlOut) //[out] simple pidl returned */ -HRESULT WINAPI CControlPanelFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl, /*simple pidl */ - LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut) +HRESULT WINAPI CControlPanelFolder::SetNameOf(HWND hwndOwner, LPCITEMIDLIST pidl, /*simple pidl */ + LPCOLESTR lpName, DWORD dwFlags, LPITEMIDLIST * pPidlOut) { FIXME("(%p)->(%p,pidl=%p,%s,%u,%p)\n", this, hwndOwner, pidl, debugstr_w(lpName), dwFlags, pPidlOut); return E_FAIL; @@ -684,26 +694,26 @@ TRACE("(%p)->(%p %i %p)\n", this, pidl, iColumn, psd); if (!psd || iColumn >= CONROLPANELSHELLVIEWCOLUMNS) - return E_INVALIDARG; + return E_INVALIDARG; if (!pidl) { - psd->fmt = ControlPanelSFHeader[iColumn].fmt; - psd->cxChar = ControlPanelSFHeader[iColumn].cxChar; - psd->str.uType = STRRET_CSTR; - LoadStringA(shell32_hInstance, ControlPanelSFHeader[iColumn].colnameid, psd->str.cStr, MAX_PATH); - return S_OK; + psd->fmt = ControlPanelSFHeader[iColumn].fmt; + psd->cxChar = ControlPanelSFHeader[iColumn].cxChar; + psd->str.uType = STRRET_CSTR; + LoadStringA(shell32_hInstance, ControlPanelSFHeader[iColumn].colnameid, psd->str.cStr, MAX_PATH); + return S_OK; } else { - psd->str.cStr[0] = 0x00; - psd->str.uType = STRRET_CSTR; - switch(iColumn) { - case 0: /* name */ - hr = GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str); - break; - case 1: /* comment */ - _ILGetFileType(pidl, psd->str.cStr, MAX_PATH); - break; - } - hr = S_OK; + psd->str.cStr[0] = 0x00; + psd->str.uType = STRRET_CSTR; + switch(iColumn) { + case 0: /* name */ + hr = GetDisplayNameOf(pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &psd->str); + break; + case 1: /* comment */ + _ILGetFileType(pidl, psd->str.cStr, MAX_PATH); + break; + } + hr = S_OK; } return hr; @@ -715,21 +725,21 @@ } /************************************************************************ - * ICPanel_PersistFolder2_GetClassID + * ICPanel_PersistFolder2_GetClassID */ HRESULT WINAPI CControlPanelFolder::GetClassID(CLSID *lpClassId) { TRACE("(%p)\n", this); if (!lpClassId) - return E_POINTER; + return E_POINTER; *lpClassId = CLSID_ControlPanel; return S_OK; } /************************************************************************ - * ICPanel_PersistFolder2_Initialize + * ICPanel_PersistFolder2_Initialize * * NOTES: it makes no sense to change the pidl */ @@ -743,14 +753,14 @@ } /************************************************************************** - * IPersistFolder2_fnGetCurFolder + * IPersistFolder2_fnGetCurFolder */ HRESULT WINAPI CControlPanelFolder::GetCurFolder(LPITEMIDLIST * pidl) { TRACE("(%p)->(%p)\n", this, pidl); if (!pidl) - return E_POINTER; + return E_POINTER; *pidl = ILClone(pidlRoot); return S_OK; } @@ -759,8 +769,8 @@ { PIDLCPanelStruct* pcpanel = _ILGetCPanelPointer(pidl); - if (!pcpanel) - return E_INVALIDARG; + if (!pcpanel) + return E_INVALIDARG; MultiByteToWideChar(CP_ACP, 0, pcpanel->szName, -1, szIconFile, cchMax); *piIndex = (int)pcpanel->iconIdx != -1 ? pcpanel->iconIdx : 0; @@ -803,7 +813,7 @@ ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); - if (!CreateProcessW(NULL, szExpCmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) + if (!CreateProcessW(NULL, szExpCmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) return E_FAIL; CloseHandle(pi.hProcess); @@ -885,12 +895,12 @@ TRACE("(%p)->execute(%p)\n", this, psei); if (!psei) - return E_INVALIDARG; + return E_INVALIDARG; pcpanel = _ILGetCPanelPointer(ILFindLastID((LPCITEMIDLIST)psei->lpIDList)); if (!pcpanel) - return E_INVALIDARG; + return E_INVALIDARG; path[0] = '\"'; lstrcpyA(path+1, pcpanel->szName); @@ -905,9 +915,9 @@ ret = ShellExecuteExA(&sei_tmp); if (ret) - return S_OK; + return S_OK; else - return S_FALSE; + return S_FALSE; } /************************************************************************** @@ -918,11 +928,11 @@ * ICPanel_IContextMenu_QueryContextMenu() */ HRESULT WINAPI CControlPanelFolder::QueryContextMenu( - HMENU hMenu, - UINT indexMenu, - UINT idCmdFirst, - UINT idCmdLast, - UINT uFlags) + HMENU hMenu, + UINT indexMenu, + UINT idCmdFirst, + UINT idCmdLast, + UINT uFlags) { WCHAR szBuffer[30] = {0}; ULONG Count = 1; @@ -963,9 +973,9 @@ WCHAR* pszPath; INT Length, cLength; PIDLCPanelStruct *pcpanel; - CComPtr<IPersistFile> ppf; - CComPtr<IShellLinkA> isl; - HRESULT hResult; + CComPtr<IPersistFile> ppf; + CComPtr<IShellLinkA> isl; + HRESULT hResult; TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n",this,lpcmi,lpcmi->lpVerb, lpcmi->hwnd); @@ -978,9 +988,9 @@ sei.hwnd = lpcmi->hwnd; sei.nShow = SW_SHOWNORMAL; sei.lpVerb = L"open"; - ShellExecuteExW(&sei); - if (sei.hInstApp == FALSE) - return E_FAIL; + + if (ShellExecuteExW(&sei) == FALSE) + return E_FAIL; } else if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_CREATELINK)) //FIXME { @@ -1029,7 +1039,7 @@ FIXME("Couldn't retrieve pointer to cpl structure\n"); return E_FAIL; } - hResult = ShellLink::_CreatorClass::CreateInstance(NULL, IID_IShellLinkA, (void **)&isl); + hResult = ShellLink::_CreatorClass::CreateInstance(NULL, IID_IShellLinkA, (void **)&isl); if (SUCCEEDED(hResult)) { isl->SetPath(szTarget); @@ -1046,25 +1056,25 @@ * */ HRESULT WINAPI CControlPanelFolder::GetCommandString( - UINT_PTR idCommand, - UINT uFlags, - UINT* lpReserved, - LPSTR lpszName, - UINT uMaxNameLen) -{ - TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",this, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen); - - FIXME("unknown command string\n"); - return E_FAIL; + UINT_PTR idCommand, + UINT uFlags, + UINT* lpReserved, + LPSTR lpszName, + UINT uMaxNameLen) +{ + TRACE("(%p)->(idcom=%lx flags=%x %p name=%p len=%x)\n",this, idCommand, uFlags, lpReserved, lpszName, uMaxNameLen); + + FIXME("unknown command string\n"); + return E_FAIL; } /************************************************************************** * ICPanel_IContextMenu_HandleMenuMsg() */ HRESULT WINAPI CControlPanelFolder::HandleMenuMsg( - UINT uMsg, - WPARAM wParam, - LPARAM lParam) + UINT uMsg, + WPARAM wParam, + LPARAM lParam) { TRACE("ICPanel_IContextMenu_HandleMenuMsg (%p)->(msg=%x wp=%lx lp=%lx)\n",this, uMsg, wParam, lParam);
13 years, 3 months
1
0
0
0
[gedmurphy] 53649: [DEVMGMT] Add the resources
by gedmurphy@svn.reactos.org
Author: gedmurphy Date: Thu Sep 8 22:04:51 2011 New Revision: 53649 URL:
http://svn.reactos.org/svn/reactos?rev=53649&view=rev
Log: [DEVMGMT] Add the resources Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/bg-BG.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/de-DE.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/el-GR.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/en-US.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/es-ES.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/fr-FR.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/id-ID.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/it-IT.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ja-JP.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ko-KR.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/no-NO.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/pl-PL.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ro-RO.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ru-RU.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sk-SK.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sv-SE.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/th-TH.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/uk-UA.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/lang/zh-CN.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/res/ (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/res/computer.ico (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/res/exit.bmp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/res/help.bmp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/res/properties.bmp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/res/refresh.bmp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/res/root.bmp (with props) Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Thu Sep 8 22:04:51 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ ------------------------------------------------------------------------------ bugtraq:number = true Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/bg-BG.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/bg-BG.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/bg-BG.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "&Ôàéë" + BEGIN + MENUITEM "Èç&õîä", IDC_EXIT + END + POPUP "Äåéñòâèå" + BEGIN + MENUITEM "Îòïå÷àòâàíå", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Ñâîéñòâà", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Ïîìîù", IDC_PROGHELP, GRAYED + END + POPUP "Èçãëåä" + BEGIN + MENUITEM "Óñòðîéñòâàòà ñïîðåä âèä", IDC_DEVBYTYPE, CHECKED + MENUITEM "Óñòðîéñòâàòà ñïîðåä ñâúðçâàíåòî", IDC_STATIC, GRAYED + MENUITEM "Ñðåäñòâàòà ñïîðåä âèäà", IDC_STATIC, GRAYED + MENUITEM "Ñðåäñòâàòà ñïîðåä ñâúðçâàíåòî", IDC_STATIC, GRAYED + END + POPUP "Ïîìîù" + BEGIN + MENUITEM "Ïîìîù", IDC_PROGHELP + MENUITEM "Çà", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Ñâîéñòâà", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Ïîìîù", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Çà óïðàâèòåëÿ íà óñòðîéñòâàòà" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Device Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Ñâîéñòâà" + IDS_TOOLTIP_REFRESH "Îïðåñíÿâàíå" + IDS_TOOLTIP_HELP "Ïîìîù" + IDS_TOOLTIP_EXIT "Èçõîä" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Óïðàâèòåë íà óñòðîéñòâàòà íà ÐåàêòÎÑ" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Èçëèçà îò ïðèëîæåíèåòî." + IDS_HINT_REFRESH " Îïðåñíÿâà ñïèñúêà íà óñëóãèòå." + IDS_HINT_PROP " Îòâàðÿ ëèñò çà ñâîéñòâà çà òåêóùèÿ èçáîð." + IDS_HINT_HELP " Ïîêàçâà ïîìîùåí ïðîçîðåö." + IDS_HINT_ABOUT " Çà óïðàâèòåëÿ íà óñòðéñòâàòà íà ÐåàêòÎÑ." + + IDS_HINT_SYS_RESTORE " Âúçñòàíîâÿâà ïðîçîðåöà äî îáè÷àéíèÿ ìó ðàìåð." + IDS_HINT_SYS_MOVE " Ïðåìåñòâà ïðîçîðåöà." + IDS_HINT_SYS_SIZE " Ïðåîðàçìåðÿâà ïðîçîðåöà." + IDS_HINT_SYS_MINIMIZE " Ñâèâà ïðîçîðåöà â çíà÷êà." + IDS_HINT_SYS_MAXIMIZE " Ðàçãðúùà ïðîçîðåöà, äîêàòî çàïúëíè öåëèÿ åêðàí." + IDS_HINT_SYS_CLOSE " Çàòâàðÿ ïðîçîðåöà." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/bg-BG.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/de-DE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/de-DE.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/de-DE.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL + +IDR_MAINMENU MENU +BEGIN + POPUP "&Datei" + BEGIN + MENUITEM "&Beenden", IDC_EXIT + END + POPUP "Aktion" + BEGIN + MENUITEM "Drucken", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Eigenschaften", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Hilfe", IDC_PROGHELP, GRAYED + END + POPUP "Ansicht" + BEGIN + MENUITEM "Geräte nach Typ", IDC_DEVBYTYPE, CHECKED + MENUITEM "Geräte nach Verbindung", IDC_STATIC, GRAYED + MENUITEM "Resourcen nach Typ", IDC_STATIC, GRAYED + MENUITEM "Resourcen nach Verbindung", IDC_STATIC, GRAYED + END + POPUP "&?" + BEGIN + MENUITEM "Hilfe", IDC_PROGHELP + MENUITEM "Info", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Eigenschaften", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Hilfe", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Über Geräte-Manager" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Geräte-Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Schließen", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Dieses Programm ist kostenlos; Sie können es frei verteilen mit od. ohne Änderungen unter der GNU Lesser General Public License, wie es von der Free Software Foundation veröffentlicht wurde; entweder Version 2.1 der Lizenz, oder eine spätere Version (ihrer Wahl).\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Eigenschaften" + IDS_TOOLTIP_REFRESH "Aktualisieren" + IDS_TOOLTIP_HELP "Hilfe" + IDS_TOOLTIP_EXIT "Beenden" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS Geräte-Manager" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Das Programm beenden." + IDS_HINT_REFRESH " Die Service-Liste aktualisieren." + IDS_HINT_PROP " Eigenschaften-Seite für die aktuelle Auswahl anzeigen." + IDS_HINT_HELP " Hilfe-Fenster anzeigen." + IDS_HINT_ABOUT " Über ReactOS Geräte-Manager." + + IDS_HINT_SYS_RESTORE " Dieses Fenster auf normale Größe wiederherstellen." + IDS_HINT_SYS_MOVE " Dieses Fenster verschieben." + IDS_HINT_SYS_SIZE " Größe dieses Fensters ändern." + IDS_HINT_SYS_MINIMIZE " Dieses Fenster zu einem Symbol verkleinern." + IDS_HINT_SYS_MAXIMIZE " Dieses Fenster auf Bildschirmgröße vergrößern." + IDS_HINT_SYS_CLOSE " Dieses Fenster schließen." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/de-DE.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/el-GR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/el-GR.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/el-GR.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_GREEK, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "&Áñ÷åßï" + BEGIN + MENUITEM "¸&îïäïò", IDC_EXIT + END + POPUP "ÅíÝñãåéá" + BEGIN + MENUITEM "Åêôýðùóç", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Éäéüôçôåò", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "ÂïÞèåéá", IDC_PROGHELP, GRAYED + END + POPUP "ÅìöÜíéóç" + BEGIN + MENUITEM "ÓõóêåõÝò áíÜ ôýðï", IDC_DEVBYTYPE, CHECKED + MENUITEM "ÓõóêåõÝò áíÜ óýíäåóç", IDC_STATIC, GRAYED + MENUITEM "ÐçãÝò áíÜ ôýðï", IDC_STATIC, GRAYED + MENUITEM "ÐçãÝò áíÜ óýíäåóç", IDC_STATIC, GRAYED + END + POPUP "ÂïÞèåéá" + BEGIN + MENUITEM "ÂïÞèåéá", IDC_PROGHELP + MENUITEM "Ó÷åôéêÜ...", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Éäéüôçôåò", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "ÂïÞèåéá", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Ó÷åôéêÜ ìå ç äéá÷åßñéóç óõóêåþí" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Device Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Éäéüôçôåò" + IDS_TOOLTIP_REFRESH "ÁíáíÝùóç" + IDS_TOOLTIP_HELP "ÂïÞèåéá" + IDS_TOOLTIP_EXIT "¸îïäïò" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Äéá÷åßñéóç Óõóêåõþí ôïõ ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Ôåñìáôßæåé ôï ðñüãñáììá." + IDS_HINT_REFRESH " ÁíáíÝùóç ôçò ëßóôáò äéåñãáóéþí." + IDS_HINT_PROP " ¢íïéãìá ðáñáèýñïõ éäéïôÞôùí ãéá ôç óõãêåêñéìÝíç åðéëïãÞ." + IDS_HINT_HELP " ÅìöÜíéóç ðáñáèýñïõ âïÞèåéáò." + IDS_HINT_ABOUT " Ó÷åôéêÜ ìå ôç Äéá÷åßñéóç Óõóêåõþí ôïõ ReactOS." + + IDS_HINT_SYS_RESTORE " ÅðáíáöÝñåé ôï ðáñÜèõñï áõôü óôï êáíïíéêï ôïõ ìÝãåèïò." + IDS_HINT_SYS_MOVE " Ìåôáêéíåß áõôü ôï ðáñÜèõñï." + IDS_HINT_SYS_SIZE " ÁëëÜæåé ôï ìÝãåèïò áõôïý ôïõ ðáñáèýñïõ." + IDS_HINT_SYS_MINIMIZE " Ìéêñáßíåé áõôü ôï ðáñÜèõñï óå Ýíá åéêïíßäéï." + IDS_HINT_SYS_MAXIMIZE " Ðñïóáñìüæåé ôï ìÝãåèïò ôïõ ðáñáèýñïõ áõôïý óôçí ïèüíç." + IDS_HINT_SYS_CLOSE " Êëåßíåé áõôü ôï ðáñÜèõñï." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/el-GR.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/en-US.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/en-US.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/en-US.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +IDR_MAINMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "E&xit", IDC_EXIT + END + POPUP "Action" + BEGIN + MENUITEM "Print", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Properties", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Help", IDC_PROGHELP, GRAYED + END + POPUP "View" + BEGIN + MENUITEM "Devices by type", IDC_DEVBYTYPE, CHECKED + MENUITEM "Devices by connection", IDC_STATIC, GRAYED + MENUITEM "Resources by type", IDC_STATIC, GRAYED + MENUITEM "Resources by connection", IDC_STATIC, GRAYED + END + POPUP "Help" + BEGIN + MENUITEM "Help", IDC_PROGHELP + MENUITEM "About", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Properties", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Help", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "About Device Manager" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Device Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Properties" + IDS_TOOLTIP_REFRESH "Refresh" + IDS_TOOLTIP_HELP "Help" + IDS_TOOLTIP_EXIT "Exit" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS Device Manager" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Exits the program." + IDS_HINT_REFRESH " Refresh the service list." + IDS_HINT_PROP " Open property sheet for the current selection." + IDS_HINT_HELP " Display help window." + IDS_HINT_ABOUT " About ReactOS Device Manager." + + IDS_HINT_SYS_RESTORE " Restores this window to normal size." + IDS_HINT_SYS_MOVE " Moves this window." + IDS_HINT_SYS_SIZE " Resizes this window." + IDS_HINT_SYS_MINIMIZE " Collapses this window to an icon." + IDS_HINT_SYS_MAXIMIZE " Expands this window to fill this screen." + IDS_HINT_SYS_CLOSE " Closes this window." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/en-US.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/es-ES.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/es-ES.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/es-ES.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,86 @@ +/* + *Spanish Language resource file + * Traducido por: Javier Remacha 2007-12-21 + */ +LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL + +IDR_MAINMENU MENU +BEGIN + POPUP "&Archivo" + BEGIN + MENUITEM "&Salir", IDC_EXIT + END + POPUP "Acción" + BEGIN + MENUITEM "Imprimir", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Propiedades", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Ayuda", IDC_PROGHELP, GRAYED + END + POPUP "Ver" + BEGIN + MENUITEM "Dispositivos por tipo", IDC_DEVBYTYPE, CHECKED + MENUITEM "Dispositivos por conexión", IDC_STATIC, GRAYED + MENUITEM "Recursos por tipo", IDC_STATIC, GRAYED + MENUITEM "Recursos por conexión", IDC_STATIC, GRAYED + END + POPUP "Ayuda" + BEGIN + MENUITEM "Ayuda", IDC_PROGHELP + MENUITEM "Acerca de", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Propiedades", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Ayuda", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Acerca del Gestor de Dispositivos" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Gestor de Dispositivos v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Cerrar", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Propiedades" + IDS_TOOLTIP_REFRESH "Actualizar" + IDS_TOOLTIP_HELP "Ayuda" + IDS_TOOLTIP_EXIT "Salir" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Gestor de Dispositivos de ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Cerrar el programa." + IDS_HINT_REFRESH " Actualizar la lista de servicios." + IDS_HINT_PROP " Abre la pestaña de propiedades de la selección actual." + IDS_HINT_HELP " Mostrar la ventana de ayuda." + IDS_HINT_ABOUT " Acerca del Gestor de Dispositivos de ReactOS." + + IDS_HINT_SYS_RESTORE " Devuelve esta ventana al tamaño normal." + IDS_HINT_SYS_MOVE " Mueve esta ventana." + IDS_HINT_SYS_SIZE " Redimensiona esta ventana." + IDS_HINT_SYS_MINIMIZE " Colapsa esta ventana a un icono." + IDS_HINT_SYS_MAXIMIZE " Expande esta ventana hasta llenar esta pantalla." + IDS_HINT_SYS_CLOSE " Cerrar esta ventana." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/es-ES.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/fr-FR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/fr-FR.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/fr-FR.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL + +IDR_MAINMENU MENU +BEGIN + POPUP "&Fichier" + BEGIN + MENUITEM "&Quitter", IDC_EXIT + END + POPUP "Action" + BEGIN + MENUITEM "Imprimer", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Propriétés", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Aide", IDC_PROGHELP, GRAYED + END + POPUP "Affichage" + BEGIN + MENUITEM "Périphériques par type", IDC_DEVBYTYPE, CHECKED + MENUITEM "Périphériques par connexion", IDC_STATIC, GRAYED + MENUITEM "Ressources par type", IDC_STATIC, GRAYED + MENUITEM "Ressources par connexion", IDC_STATIC, GRAYED + END + POPUP "Aide" + BEGIN + MENUITEM "Aide", IDC_PROGHELP + MENUITEM "À propos", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Propriétés", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Aide", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "À propos du Gestionnaire de Périphériques" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Gestionnaire de Périphériques v0.1\nCopyright (C) 2006\npar Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Fermer", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier tout en respectant les termes de la ""GNU General Public License"" publiée par la Free Software Foundation; dans sa version 2 (ou selon votre préférence) toute version ultérieure.\r\n\r\nCe programme est distribué dans l'espoir qu'il sera utile, cependant SANS GARANTIE D'AUCUNE SORTE ; sans même une garantie implicite de COMMERCIABILITÉ ou DE CONFORMITÉ À UNE UTILISATION PARTICULIÈRE. \r\n\r\nVoir la Licence Publique Générale GNU pour plus de détails. Vous devriez avoir reçu un exemplaire de la Licence Publique Générale GNU avec ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Propriétés" + IDS_TOOLTIP_REFRESH "Actualiser" + IDS_TOOLTIP_HELP "Aide" + IDS_TOOLTIP_EXIT "Quitter" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Gestionnaire de périphériques ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Quitte le programme." + IDS_HINT_REFRESH " Actualise la liste des périphériques." + IDS_HINT_PROP " Ouvre la feuille de propriétés pour la sélection actuelle." + IDS_HINT_HELP " Affiche la fenêtre d'aide." + IDS_HINT_ABOUT " À propos du Gestionnaire de Périphériques de ReactOS." + + IDS_HINT_SYS_RESTORE " Restaure cette fenêtre à sa taille normale." + IDS_HINT_SYS_MOVE " Bouge cette fenêtre." + IDS_HINT_SYS_SIZE " Redimensionne cette fenêtre." + IDS_HINT_SYS_MINIMIZE " Réduit cette fenêtre à une icône." + IDS_HINT_SYS_MAXIMIZE " Étend cette fenêtre à l'écran." + IDS_HINT_SYS_CLOSE " Ferme cette fenêtre." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/fr-FR.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/id-ID.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/id-ID.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/id-ID.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "E&xit", IDC_EXIT + END + POPUP "Aksi" + BEGIN + MENUITEM "Cetak", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Properti", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Bantuan", IDC_PROGHELP, GRAYED + END + POPUP "Lihat" + BEGIN + MENUITEM "Device dengan tipe", IDC_DEVBYTYPE, CHECKED + MENUITEM "Device dengan koneksi", IDC_STATIC, GRAYED + MENUITEM "Resource dengan tipe", IDC_STATIC, GRAYED + MENUITEM "Resource dengan koneksi", IDC_STATIC, GRAYED + END + POPUP "Bantuan" + BEGIN + MENUITEM "Bantuan", IDC_PROGHELP + MENUITEM "Tentang", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Properti", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Bantuan", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Tentang Manajer Device" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Manajer Device v0.1\nHak Cipta (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Tutup", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Program ini adalah software bebas; anda dapat mendistribusikan dan/atau mengubahnya di bawah term GNU General Public License seperti dipublikasikan oleh Free Software Foundation; baik Lisensi versi 2, atau (menurut opini anda) setiap versi berikutnya.\r\n\r\nProgram ini didistribusikan dengan harapan ia akan berguna, tetapi TANPA JAMINAN APAPUN; bahkan tanpa jaminan berarti dari MERCANTABILITAS atau KECUKUPAN UNTUK KEPERLUAN TERTENTU. Lihat GNU General Public License untuk lebih jelasnya.\r\n\r\nAnda seharusnya menerima duplikat GNU General Public License bersamaan dengan program ini; jika tidak, tulis ke Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Properti" + IDS_TOOLTIP_REFRESH "Segarkan" + IDS_TOOLTIP_HELP "Bantuan" + IDS_TOOLTIP_EXIT "Keluar" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Manajer Device ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Keluar dari program." + IDS_HINT_REFRESH " Segarkan daftar layanan." + IDS_HINT_PROP " VBuka lembar properti untuk pilihan saat ini." + IDS_HINT_HELP " Menampilkan jendela bantuan." + IDS_HINT_ABOUT " Tentang Manajer Device ReactOS." + + IDS_HINT_SYS_RESTORE " Menyimpan kembali jendela ini ke ukuran normal." + IDS_HINT_SYS_MOVE " Memindahkan jendela ini." + IDS_HINT_SYS_SIZE " Mengukur ulang jendela ini." + IDS_HINT_SYS_MINIMIZE " Menyempitkan jendela ini menjadi ikon." + IDS_HINT_SYS_MAXIMIZE " Melebarkan jendela ini untuk memenuhi layar ini." + IDS_HINT_SYS_CLOSE " Menutup jendela ini." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/id-ID.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/it-IT.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/it-IT.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/it-IT.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +IDR_MAINMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "E&sci", IDC_EXIT + END + POPUP "Azioni" + BEGIN + MENUITEM "Stampa", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Proprietà", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Aiuto", IDC_PROGHELP, GRAYED + END + POPUP "Visualizza" + BEGIN + MENUITEM "Dispositivi per tipo", IDC_DEVBYTYPE, CHECKED + MENUITEM "Dispositivi per connessione", IDC_STATIC, GRAYED + MENUITEM "Risorse per tipo", IDC_STATIC, GRAYED + MENUITEM "Risorse per connessione", IDC_STATIC, GRAYED + END + POPUP "Aiuto" + BEGIN + MENUITEM "Aiuto", IDC_PROGHELP + MENUITEM "Informazioni su", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Proprietà", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Aiuto", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Informazioni su Gestione Dispositivi" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Gestione dispositivi v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Questo programma è software libero; puoi distribuirlo e/o modificarlo nei termini di licenza di 'GNU General Public License' come pubblicata dalla 'Free Software Foundation'; entrambe le versioni 2 della Licenza, o (a vostra scelta) qualunque versione successiva.\r\n\r\nQuesto programma è distribuito con l'augurio che sia utile, ma PRIVO DI OGNI GARANZIA; privo anche della garanzia implicita di COMMERCIABILITÀ o UTILIZZABILITÀ PER UNO SPECIFICO USO. Vedi la 'GNU General Public License' per ulteriori dettagli.\r\n\r\nVoi dovreste aver ricevuto una copia della 'GNU General Public License' assieme a questo programma; se non è cosi' scrivete a 'Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Proprietà" + IDS_TOOLTIP_REFRESH "Aggiorna" + IDS_TOOLTIP_HELP "Aiuto" + IDS_TOOLTIP_EXIT "Esci" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS: Gestione Dispositivi" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Esci dal programma." + IDS_HINT_REFRESH " Aggiorna la lista dei servizi." + IDS_HINT_PROP " Apri le proprietà per la selezione attuale." + IDS_HINT_HELP " Visualizza la finestra di aiuto." + IDS_HINT_ABOUT " Informazioni su Gestione dispositivi di ReactOS." + + IDS_HINT_SYS_RESTORE " Ripristina la dimensione normale di questa finestra." + IDS_HINT_SYS_MOVE " Muove questa finestra." + IDS_HINT_SYS_SIZE " Cambia la dimensione di questa finestra." + IDS_HINT_SYS_MINIMIZE " Riduce a icona questa finestra." + IDS_HINT_SYS_MAXIMIZE " Espande questa finestra fino a riempire lo schermo." + IDS_HINT_SYS_CLOSE " Chiude questa finestra." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/it-IT.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ja-JP.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ja-JP.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ja-JP.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "t@C(&F)" + BEGIN + MENUITEM "I¹(&X)", IDC_EXIT + END + POPUP "ì" + BEGIN + MENUITEM "óü", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "vpeB", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "wv", IDC_PROGHELP, GRAYED + END + POPUP "\\¦" + BEGIN + MENUITEM "foCX (íÞÊ)", IDC_DEVBYTYPE, CHECKED + MENUITEM "foCX (Ú±Ê)", IDC_STATIC, GRAYED + MENUITEM "\\[X (íÞÊ)", IDC_STATIC, GRAYED + MENUITEM "\\[X (Ú±Ê)", IDC_STATIC, GRAYED + END + POPUP "wv" + BEGIN + MENUITEM "wv", IDC_PROGHELP + MENUITEM "o[Wîñ", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "vpeB", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "wv", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "foCX }l[WÉ¢Ä" +FONT 9, "MS UI Gothic",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "foCX }l[W v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "¶é", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "vpeB" + IDS_TOOLTIP_REFRESH "XV" + IDS_TOOLTIP_HELP "wv" + IDS_TOOLTIP_EXIT "I¹" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS foCX }l[W" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " ±ÌvOðI¹µÜ·B" + IDS_HINT_REFRESH " T[rXÌXgðXVµÜ·B" + IDS_HINT_PROP " »ÝIð³êÄ¢éV[gÌvpeBðJ«Ü·B" + IDS_HINT_HELP " wv EBhEð\\¦µÜ·B" + IDS_HINT_ABOUT " ReactOS foCX }l[WÉ¢Ä\\¦µÜ·B" + + IDS_HINT_SYS_RESTORE " ±ÌEBhEðÊíÌ嫳ɳµÜ·B" + IDS_HINT_SYS_MOVE " ±ÌEBhEðÚ®µÜ·B" + IDS_HINT_SYS_SIZE " ±ÌEBhEÌ嫳ðÏXµÜ·B" + IDS_HINT_SYS_MINIMIZE " ±ÌEBhEðACRÉÜè½½ÝÜ·B" + IDS_HINT_SYS_MAXIMIZE " ±ÌEBhEðæÊ¢ÁÏ¢ÉJ«Ü·B" + IDS_HINT_SYS_CLOSE " ±ÌEBhEð¶ܷB" +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ja-JP.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ko-KR.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ko-KR.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ko-KR.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,85 @@ +/* + *Korean translation by manatails007(www.manatails007.org) + */ +LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "ÆÄÀÏ(&F)" + BEGIN + MENUITEM "Á¾·á(&X)", IDC_EXIT + END + POPUP "¾×¼Ç" + BEGIN + MENUITEM "ÇÁ¸°Æ®", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "¼Ó¼º", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "µµ¿ò¸»", IDC_PROGHELP, GRAYED + END + POPUP "º¸±â" + BEGIN + MENUITEM "Devices by type", IDC_DEVBYTYPE, CHECKED + MENUITEM "Devices by connection", IDC_STATIC, GRAYED + MENUITEM "Resources by type", IDC_STATIC, GRAYED + MENUITEM "Resources by connection", IDC_STATIC, GRAYED + END + POPUP "µµ¿ò¸»" + BEGIN + MENUITEM "µµ¿ò¸»", IDC_PROGHELP + MENUITEM "Á¤º¸", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "Æ˾÷" + BEGIN + MENUITEM "¼Ó¼º", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "µµ¿ò¸»", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "ÀåÄ¡ °ü¸®ÀÚ¿¡ ´ëÇÏ¿©" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Device Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "¼Ó¼º" + IDS_TOOLTIP_REFRESH "»õ·Î °íħ" + IDS_TOOLTIP_HELP "µµ¿ò¸»" + IDS_TOOLTIP_EXIT "Á¾·á" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS ÀåÄ¡ °ü¸®ÀÚ" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " ÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù." + IDS_HINT_REFRESH " ¼ºñ½º ¸®½ºÆ®¸¦ »õ·Î °íĨ´Ï´Ù." + IDS_HINT_PROP " ¼±ÅÃÇÑ Ç׸ñÀÇ ¼Ó¼º âÀ» ¿±´Ï´Ù." + IDS_HINT_HELP " µµ¿ò¸»À» ¿±´Ï´Ù." + IDS_HINT_ABOUT " ReactOS ÀåÄ¡ °ü¸®ÀÚ¿¡ ´ëÇØ." + + IDS_HINT_SYS_RESTORE " ÀÌ Ã¢À» º¸Åë Å©±â·Î ¬Ãã´Ï´Ù." + IDS_HINT_SYS_MOVE " âÀ» ¿òÁ÷ÀÔ´Ï´Ù." + IDS_HINT_SYS_SIZE " âÀÇ Å©±â¸¦ º¯°æÇÕ´Ï´Ù." + IDS_HINT_SYS_MINIMIZE " ÀÌ Ã¢À» ¾ÆÀÌÄÜÀ¸·Î ¸¸µì´Ï´Ù." + IDS_HINT_SYS_MAXIMIZE " ÀÌ Ã¢À» ÃÖ´ë Å©±â·Î ¬Ãã´Ï´Ù." + IDS_HINT_SYS_CLOSE " âÀ» ´Ý½À´Ï´Ù." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ko-KR.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/no-NO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/no-NO.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/no-NO.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL + +IDR_MAINMENU MENU +BEGIN + POPUP "&Fil" + BEGIN + MENUITEM "A&vslutt", IDC_EXIT + END + POPUP "Handling" + BEGIN + MENUITEM "Skriv ut", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Egenskaper", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Hjelp", IDC_PROGHELP, GRAYED + END + POPUP "Vis" + BEGIN + MENUITEM "Enheter etter type", IDC_DEVBYTYPE, CHECKED + MENUITEM "Enheter etter tilkobling", IDC_STATIC, GRAYED + MENUITEM "Ressurser etter type", IDC_STATIC, GRAYED + MENUITEM "Ressurser etter tilkobling", IDC_STATIC, GRAYED + END + POPUP "Hjelp" + BEGIN + MENUITEM "Hjelp", IDC_PROGHELP + MENUITEM "Om", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Egenskaper", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Hjelp", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Om Enhetsbehandler" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Enhetsbehandler v0.1\nEnerett (C) 2006\nlaget av Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "Lukk", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Dette programmet er gratis programvare; du kan distribuere det og/eller endre det under betingelsene av GNU General Public License som er utgitt av Free Software Foundation; version 2 av lisensen, eller (etter din mening) alle senere versjoner.\r\n\r\nDette programmet er utgitt i håp for at det skal kunne brukes, men DET ER INGEN GARANTIER; uten heller forutsatt garantier av SALGBARHET eller SIKKETHET FOR EN ENKELTHET FORMÅL. Se på GNU General Public Lisensen for mere detaljer.\r\n\r\nDu skal ha motatt en kopi av GNU General Public Lisensen sammen med denne programmet; hvis du ikke har motatt det, skriv til Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Egenskaper" + IDS_TOOLTIP_REFRESH "Oppdater" + IDS_TOOLTIP_HELP "Hjelp" + IDS_TOOLTIP_EXIT "Avslutt" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS Enhetsbehandler" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Avslutt programmet." + IDS_HINT_REFRESH " Oppdater tjeneste listen." + IDS_HINT_PROP " Open property sheet for the current selection." + IDS_HINT_HELP " Vis hjelp vinduet." + IDS_HINT_ABOUT " Om ReactOS Enhetsbehandler." + + IDS_HINT_SYS_RESTORE " Gjenopprett dette vinduet til vanlig størrelse." + IDS_HINT_SYS_MOVE " Flytt dette vinduet." + IDS_HINT_SYS_SIZE " Endre størrelse på dette vinduet." + IDS_HINT_SYS_MINIMIZE " Gjør om dette vinduet til en ikon." + IDS_HINT_SYS_MAXIMIZE " Gjør om dette vinduet til å fylle hele skjermen." + IDS_HINT_SYS_CLOSE " Lukk dette vinduet." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/no-NO.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/pl-PL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/pl-PL.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/pl-PL.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,89 @@ +/* + * translated by xrogers + * xxrogers(a)users.sourceforge.net + *
https://sourceforge.net/projects/reactospl
+ * UTF-8 conversion by Caemyr (May, 2011) + */ + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "&Plik" + BEGIN + MENUITEM "Za&koÅcz", IDC_EXIT + END + POPUP "&Akcja" + BEGIN + MENUITEM "&Drukuj", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "&WÅaÅciwoÅci", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Pomo&c", IDC_PROGHELP, GRAYED + END + POPUP "&Widok" + BEGIN + MENUITEM "UrzÄ dzenia w&edÅug typu", IDC_DEVBYTYPE, CHECKED + MENUITEM "Ur&zÄ dzenia wedÅug poÅÄ czenia", IDC_STATIC, GRAYED + MENUITEM "Zaso&by wedÅug typu", IDC_STATIC, GRAYED + MENUITEM "Za&soby wedÅug poÅÄ czenia", IDC_STATIC, GRAYED + END + POPUP "Pomo&c" + BEGIN + MENUITEM "&Tematy pomocy", IDC_PROGHELP + MENUITEM "Menedżer urzÄ dzeÅ - i&nformacje", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "WÅaÅciwoÅci", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Pomoc", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Menedżer urzÄ dzeÅ - informacje" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Menedżer urzÄ dzeÅ v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Zamknij", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Niniejszy program jest wolnym oprogramowaniem; możesz go rozprowadzaÄ dalej i/lub modyfikowaÄ na warunkach Powszechnej Licencji Publicznej GNU, wydanej przez FundacjÄ Wolnego Oprogramowania - wedÅug wersji 2 tej Licencji lub (wedÅug twojego wyboru) którejÅ z późniejszych wersji.\r\n\r\nNiniejszy program rozpowszechniany jest z nadziejÄ , iż bÄdzie on użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyÅlnej gwarancji PRZYDATNOÅCI HANDLOWEJ albo PRZYDATNOÅCI DO OKREÅLONYCH ZASTOSOWAÅ. W celu uzyskania bliższych informacji siÄgnij do Powszechnej Licencji Publicznej GNU.\r\n\r\nZ pewnoÅciÄ wraz z niniejszym programem otrzymaÅeÅ też egzemplarz Powszechnej Licencji Publicznej GNU (GNU General Public License); jeÅli nie - napisz do Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "WÅaÅciwoÅci" + IDS_TOOLTIP_REFRESH "OdÅwież" + IDS_TOOLTIP_HELP "Pomoc" + IDS_TOOLTIP_EXIT "WyjÅcie" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Menedżer urzÄ dzeÅ ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Zamyka program." + IDS_HINT_REFRESH " OdÅwież listÄ serwisów." + IDS_HINT_PROP " Otwiera arkusz wÅaÅciwoÅci dla bieÅ¼Ä cego zaznaczenia." + IDS_HINT_HELP " Otwiera pomoc." + IDS_HINT_ABOUT " Informacje o Menedżerze urzÄ dzeÅ ReactOS." + + IDS_HINT_SYS_RESTORE " Przywraca okno do normalnych rozmiarów." + IDS_HINT_SYS_MOVE " Przesuwa to okno." + IDS_HINT_SYS_SIZE " Zmienia rozmiar tego okna." + IDS_HINT_SYS_MINIMIZE " Minimalizuje to okno do ikony." + IDS_HINT_SYS_MAXIMIZE " Rozszerza to okno do rozmiarów ekranu." + IDS_HINT_SYS_CLOSE " Zamyka okno." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/pl-PL.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ro-RO.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ro-RO.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ro-RO.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,82 @@ +LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL + +IDR_MAINMENU MENU +BEGIN + POPUP "&Fiºier" + BEGIN + MENUITEM "I&eºire", IDC_EXIT + END + POPUP "Acþiune" + BEGIN + MENUITEM "Imprimare", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Proprietãþi", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Ajutor", IDC_PROGHELP, GRAYED + END + POPUP "Vizualizare" + BEGIN + MENUITEM "Dispozitive dupã tip", IDC_DEVBYTYPE, CHECKED + MENUITEM "Dispozitive dupã conexiune", IDC_STATIC, GRAYED + MENUITEM "Resurse dupã tip", IDC_STATIC, GRAYED + MENUITEM "Resurse dupã conexiune", IDC_STATIC, GRAYED + END + POPUP "Ajutor" + BEGIN + MENUITEM "Ajutor", IDC_PROGHELP + MENUITEM "Despre", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Proprietãþi", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Ajutor", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Despre Gestionarul de Dispozitive" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Gestionar de Dispozitive v0.1\nDrept de autor (C) 2006\nde Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "Închidere", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Tradus în limba românã de Petru Dimitriu.\r\nAcest program este software liber; puteþi redistribui sau modifica programul sub termenii licenþei publice GNU aºa cum este publicatã de Free Software Foundation - fie versiunea 2 a licenþei, sau (la alegerea dvs.) oricare versiune ulterioarã.\r\n\r\nAcest program este distribuit în speranþa cã va fi de folos, dar FÃRÃ NICIO GARANÞIE, nici mãcar garanþia VANDABILITÃÞII sau a POTRIVIRII PENTRU UN SCOP ANUME. Vedeþi Licenþa GNU GPL pentru detalii.\r\n\r\nDvs. ar trebui sã fi primit o copie a licenþei împreunã cu acest program; dacã nu, scrieþi la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Proprietãþi" + IDS_TOOLTIP_REFRESH "Reîmprospãtare" + IDS_TOOLTIP_HELP "Ajutor" + IDS_TOOLTIP_EXIT "Ieºire" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Gestionarul de Dispozitive ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Pãrãseºte programul." + IDS_HINT_REFRESH " Reîmprospãteazã lista de servicii." + IDS_HINT_PROP " Afieazã tabel cu proprietãþi pentru selecþia curentã." + IDS_HINT_HELP " Afiºeazã fereastra de ajutor." + IDS_HINT_ABOUT " Despre Gestionarul de Dispozitive ReactOS." + + IDS_HINT_SYS_RESTORE " Aduce fereastra la mãrimea normalã." + IDS_HINT_SYS_MOVE " Mutã fereastra." + IDS_HINT_SYS_SIZE " Redimensioneazã fereastra." + IDS_HINT_SYS_MINIMIZE " Reduce fereastra la o pictogramã pe ecran." + IDS_HINT_SYS_MAXIMIZE " Mãreºte fereastra astfel încât aceasta sã ocupe tot ecranul." + IDS_HINT_SYS_CLOSE " Închide fereastra." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ro-RO.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ru-RU.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ru-RU.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,84 @@ +// Russian language resource file (Dmitry Chapyshev, 2007-06-10) + +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "&Файл" + BEGIN + MENUITEM "&ÐÑÑ Ð¾Ð´", IDC_EXIT + END + POPUP "ÐейÑÑвие" + BEGIN + MENUITEM "ÐеÑаÑÑ", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "СвойÑÑва", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "СпÑавка", IDC_PROGHELP, GRAYED + END + POPUP "Ðид" + BEGIN + MENUITEM "УÑÑÑойÑÑва по ÑипÑ", IDC_DEVBYTYPE, CHECKED + MENUITEM "УÑÑÑойÑÑва по подклÑÑениÑ", IDC_STATIC, GRAYED + MENUITEM "РеÑÑÑÑÑ Ð¿Ð¾ ÑипÑ", IDC_STATIC, GRAYED + MENUITEM "РеÑÑÑÑÑ Ð¿Ð¾ подклÑÑениÑ", IDC_STATIC, GRAYED + END + POPUP "СпÑавка" + BEGIN + MENUITEM "ÐомоÑÑ", IDC_PROGHELP + MENUITEM "РпÑогÑамме", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "СвойÑÑва", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "ÐомоÑÑ", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Ð ÐиÑпеÑÑеÑе ÑÑÑÑойÑÑв" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "ÐиÑпеÑÑÐµÑ ÑÑÑÑойÑÑв v0.1\nCopyright (C) 2006\nÐ¾Ñ Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "ÐакÑÑÑÑ", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "ÐÑа пÑогÑамма ÑвлÑеÑÑÑ Ñвободно ÑаÑпÑоÑÑÑанÑемой; ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑаÑпÑоÑÑÑанÑÑÑ ÐµÐµ повÑоÑно и (или) изменÑÑÑ, ÑоблÑÐ´Ð°Ñ ÑÑÐ»Ð¾Ð²Ð¸Ñ ÐÑкÑÑÑого лиÑензионного ÑоглаÑÐµÐ½Ð¸Ñ GNU, опÑбликованного Фондом Ñвободно ÑаÑпÑоÑÑÑанÑемого пÑогÑаммного обеÑпеÑениÑ; либо ÑедакÑии 2 СоглаÑениÑ, либо (на ваÑе ÑÑмоÑÑение) лÑбой ÑедакÑии, вÑпÑÑенной позже.\r\n\r\nÐÑа пÑогÑамма ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð² надежде на Ñо, ÑÑо она окажеÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾Ð¹, но ÐÐÐ ÐÐÐÐÐ¥-ÐÐÐÐ ÐÐÐ ÐÐТÐÐ, вклÑÑÐ°Ñ Ð¿Ð¾Ð´ÑазÑмеваемÑÑ Ð³Ð°ÑанÑÐ¸Ñ ÐÐЧÐСТÐРлибо ÐÐ ÐÐÐÐÐÐСТРÐÐЯ ÐÐÐ ÐÐÐÐÐÐÐЫХ ЦÐÐÐÐ. ÐодÑобноÑÑи ÑодеÑжаÑÑÑ Ð² ÐÑкÑÑÑом лиÑензионном ÑоглаÑении GNU.\r\n\r\nÐмеÑÑе Ñ ÑÑой пÑогÑаммой должен ÑаÑпÑоÑÑÑанÑÑÑÑÑ ÑкземплÑÑ ÐÑкÑÑÑого лиÑензионного ÑоглаÑÐµÐ½Ð¸Ñ GNU, еÑли он оÑÑÑÑÑÑвÑеÑ, ÑообÑиÑе об ÑÑом в Фонд Ñвободно ÑаÑпÑоÑÑÑанÑемого пÑогÑаммного обеÑпеÑÐµÐ½Ð¸Ñ (Free Software Foundation, Inc.), 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "СвойÑÑва" + IDS_TOOLTIP_REFRESH "ÐбновиÑÑ" + IDS_TOOLTIP_HELP "ÐомоÑÑ" + IDS_TOOLTIP_EXIT "ÐÑÑ Ð¾Ð´" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ÐиÑпеÑÑÐµÑ ÑÑÑÑойÑÑв ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " ÐÑÑ Ð¾Ð´ из пÑогÑаммÑ." + IDS_HINT_REFRESH " ÐбновиÑÑ ÑпиÑок." + IDS_HINT_PROP " ÐÑкÑÑÑÑ ÑвойÑÑва Ð´Ð»Ñ Ð²ÑбÑанного ÑлеменÑа." + IDS_HINT_HELP " ÐоказаÑÑ Ð¾ÐºÐ½Ð¾ ÑпÑавки." + IDS_HINT_ABOUT " Ð ReactOS Device Manager." + + IDS_HINT_SYS_RESTORE " ÐоÑÑановиÑÑ Ð½Ð¾ÑмалÑнÑй ÑÐ°Ð·Ð¼ÐµÑ ÑÑого окна." + IDS_HINT_SYS_MOVE " ÐеÑемеÑÑиÑÑ ÑÑо окно." + IDS_HINT_SYS_SIZE " ÐзмениÑÑ ÑÐ°Ð·Ð¼ÐµÑ ÑÑого окна." + IDS_HINT_SYS_MINIMIZE " СвеÑнÑÑÑ ÑÑо окно в знаÑок." + IDS_HINT_SYS_MAXIMIZE " РазвеÑнÑÑÑ ÑÑо окно на полнÑй ÑкÑан." + IDS_HINT_SYS_CLOSE " ÐакÑÑÑÑ ÑÑо окно." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/ru-RU.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sk-SK.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sk-SK.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sk-SK.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,87 @@ +/* TRANSLATOR: Mário Kaèmár /Mario Kacmar/ aka Kario (kario(a)szm.sk) + * DATE OF TR.: 14-02-2008 + * LAST CHANGE: 29-08-2008 + */ + +LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "&Súbor" + BEGIN + MENUITEM "&Skonèi", IDC_EXIT + END + POPUP "Akcia" + BEGIN + MENUITEM "Tlaèi", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Vlastnosti", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Pomocník", IDC_PROGHELP, GRAYED + END + POPUP "Zobrazi" + BEGIN + MENUITEM "Zariadenia pod¾a typu", IDC_DEVBYTYPE, CHECKED + MENUITEM "Zariadenia pod¾a pripojenia", IDC_STATIC, GRAYED + MENUITEM "Prostriedky pod¾a typu", IDC_STATIC, GRAYED + MENUITEM "Prostriedky pod¾a pripojenia", IDC_STATIC, GRAYED + END + POPUP "Pomocník" + BEGIN + MENUITEM "Pomocník", IDC_PROGHELP + MENUITEM "Èo je ...", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Vlastnosti", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Pomocník", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Èo je Správca zariadení" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Správca zariadení v0.1\nCopyright (C) 2006\nod Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "Zavrie", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Tento program je vo¾ný softvér; môete ho íri a/alebo modifikova pod¾a podmienok GNU Veobecnej verejnej licencie (GNU General Public License) ako bola zverejnená nadáciou Free Software Foundation; buï verzie 2 tejto licencie, alebo (pod¾a Váho uváenia) niektorej neskorej verzie.\r\n\r\nTento program je distribuovaný v nádeji, e bude uitoèný, avak BEZ AKEJKO¼VEK ZÁRUKY; rovnako bez záruky PREDAJNOSTI alebo VHODNOSTI PRE URÈITÝ ÚÈEL. Pre viac detailov si pozrite GNU Veobecnú verejnú licenciu (GNU General Public License).\r\n\r\nKópiu Veobecnej verejnej licencie GNU ste mali dosta spolu s týmto programom; ak nie, napíte si o òu na Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Vlastnosti" + IDS_TOOLTIP_REFRESH "Obnovi" + IDS_TOOLTIP_HELP "Pomocník" + IDS_TOOLTIP_EXIT "Skonèi" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "Správca zariadení systému ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Skonèí program." + IDS_HINT_REFRESH " Obnoví zoznam sluieb." + IDS_HINT_PROP " Otvorí okno s vlastnosami pre aktuálny výber." + IDS_HINT_HELP " Zobrazí okno pomocníka." + IDS_HINT_ABOUT " Èo je Správca zariadení systému ReactOS." + + IDS_HINT_SYS_RESTORE " Obnoví okno na normálnu ve¾kos." + IDS_HINT_SYS_MOVE " Premiestni okno." + IDS_HINT_SYS_SIZE " Zmení ve¾kos okna." + IDS_HINT_SYS_MINIMIZE " Zbalí okno na ikonu." + IDS_HINT_SYS_MAXIMIZE " Zväèí okno tak, aby zaplnilo celú obrazovku." + IDS_HINT_SYS_CLOSE " Zatvorí okno." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sk-SK.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sv-SE.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sv-SE.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sv-SE.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,88 @@ +/* + * PROJECT: ReactOS APPS + * FILE: \base\applications\mscutils\devmgmt\lang\sv-SE.rc + * PURPOSE: Swedish resource file + * Translation: Jaix Bly + */ +LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL + +IDR_MAINMENU MENU +BEGIN + POPUP "&Arkiv" + BEGIN + MENUITEM "A&vsluta", IDC_EXIT + END + POPUP "Åtgärd" + BEGIN + MENUITEM "Skriv ut", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "Egenskaper", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Hjälp", IDC_PROGHELP, GRAYED + END + POPUP "Visa" + BEGIN + MENUITEM "Enheter efter typ", IDC_DEVBYTYPE, CHECKED + MENUITEM "Enheter efter koppling", IDC_STATIC, GRAYED + MENUITEM "Resurcer efter typ", IDC_STATIC, GRAYED + MENUITEM "Resurcer efter koppling", IDC_STATIC, GRAYED + END + POPUP "Hjälp" + BEGIN + MENUITEM "Hjälp", IDC_PROGHELP + MENUITEM "Om", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "Egenskaper", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "Hjälp", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "Om Enhetshanteraren" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Enhetshanteraren v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "Stäng", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Detta programmet är fri programvara; du kan distribuera det och/eller ändra det under villkoren enligt GNU General Public License som är utgivet av Free Software Foundation; version 2, eller (om du så önskar) alla senare versioner.\r\n\r\nDette programmet er utgivet i hopp om att det skall kunne användas, men DET FINNS INGA GARANTIER; även utan underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR ETT VISST ÄNDAMÅL. Se på GNU General Public Licensen för mer detaljer.\r\n\r\nDu skall ha motagit en kopia av GNU General Public Licensen tillsammans med detta programmet; om du inte har fått det, skriv til Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "Egenskaper" + IDS_TOOLTIP_REFRESH "Uppdater" + IDS_TOOLTIP_HELP "Hjälp" + IDS_TOOLTIP_EXIT "Avsluta" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS Enhetshanterare" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " Avsluta programmet." + IDS_HINT_REFRESH " Uppdatera tjänstelistan." + IDS_HINT_PROP " Öppna egenskaper för markerat val." + IDS_HINT_HELP " Visa hjälpfönstret." + IDS_HINT_ABOUT " Om ReactOS Enhetshanterare." + + IDS_HINT_SYS_RESTORE " Återställ detta fönstret till normal storlek." + IDS_HINT_SYS_MOVE " Flytta detta fönstret." + IDS_HINT_SYS_SIZE " Ändra storleken på detta fönstret." + IDS_HINT_SYS_MINIMIZE " Minimera detta fönstret till en ikon." + IDS_HINT_SYS_MAXIMIZE " Maximera dette fönstret så det fyller hela skärmen." + IDS_HINT_SYS_CLOSE " Stäng detta fönstret." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/sv-SE.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/th-TH.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/th-TH.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/th-TH.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,91 @@ +/* + * PROJECT: ReactOS Device Management + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/devmgmt/lang/th-TH.rc + * PURPOSE: Thai translation + * COPYRIGHT: Copyright 2007 Sumath Aowsakulsutthi + * + */ + +LANGUAGE LANG_THAI, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "á&¿éÁ" + BEGIN + MENUITEM "&ÍÍ¡", IDC_EXIT + END + POPUP "àÃÔèÁ·Ó" + BEGIN + MENUITEM "¾ÔÁ¾ì", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "¤Ø³ÊÁºÑµÔ", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "ªèÇÂàËÅ×Í", IDC_PROGHELP, GRAYED + END + POPUP "ÁØÁÁͧ" + BEGIN + MENUITEM "ÍØ»¡Ã³ìáºè§µÒÁ»ÃÐàÀ·", IDC_DEVBYTYPE, CHECKED + MENUITEM "ÍØ»¡Ã³ìáºè§µÒÁ¡ÒÃàª×èÍÁµèÍ", IDC_STATIC, GRAYED + MENUITEM "áËÅ觢éÍÁÙŵÒÁ»ÃÐàÀ·", IDC_STATIC, GRAYED + MENUITEM "áËÅ觢éÍÁÙŵÒÁ¡ÒÃàª×èÍÁµèÍ", IDC_STATIC, GRAYED + END + POPUP "ªèÇÂàËÅ×Í" + BEGIN + MENUITEM "ªèÇÂàËÅ×Í", IDC_PROGHELP + MENUITEM "à¡ÕèÂǡѺ", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "˹éÒµèÒ§»Ñ¨¨ØºÑ¹" + BEGIN + MENUITEM "¤Ø³ÊÁºÑµÔ", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "ªèÇÂàËÅ×Í", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "à¡ÕèÂǡѺ¡ÒèѴ¡ÒÃÍØ»¡Ã³ì" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "Device Manager v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "Close", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "¤Ø³ÊÁºÑµÔ" + IDS_TOOLTIP_REFRESH "¿×鹿Ù" + IDS_TOOLTIP_HELP "ªèÇÂàËÅ×Í" + IDS_TOOLTIP_EXIT "ÍÍ¡¨Ò¡â»Ãá¡ÃÁ" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "¡ÒèѴ¡ÒÃÍØ»¡Ã³ì¢Í§ ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " ÍÍ¡¨Ò¡â»Ãá¡ÃÁ" + IDS_HINT_REFRESH " ¿×鹿ÙÃÒ¡ÒúÃÔ¡ÒÃ" + IDS_HINT_PROP " à»Ô´¤Ø³ÊÁºÑµÔ¢Í§á¼è¹§Ò¹µÒÁ¡ÒÃàÅ×͡㹻Ѩ¨ØºÑ¹" + IDS_HINT_HELP " áÊ´§Ë¹éÒµèÒ§ªèÇÂàËÅ×Í" + IDS_HINT_ABOUT " à¡ÕèÂǡѺ¡ÒèѴ¡ÒÃÍØ»¡Ã³ì¢Í§ ReactOS" + + IDS_HINT_SYS_RESTORE " ¤×¹ÊÀÒ¾¢Í§Ë¹éÒµèÒ§¹ÕéÊÙ袹Ҵ»¡µÔ" + IDS_HINT_SYS_MOVE " ÂéÒÂ˹éÒµèÒ§¹Õé" + IDS_HINT_SYS_SIZE " à»ÅÕè¹¢¹Ò´Ë¹éÒµèÒ§¹Õé" + IDS_HINT_SYS_MINIMIZE " ÂèÍ˹éÒµèÒ§¹ÕéãËéà»ç¹ÊÑÃÙ»" + IDS_HINT_SYS_MAXIMIZE " ¢ÂÒÂ˹éÒµèÒ§¹Õ騹àµçÁ˹éÒ¨Í" + IDS_HINT_SYS_CLOSE " »Ô´Ë¹éÒµèÒ§¹Õé" +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/th-TH.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/uk-UA.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/uk-UA.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,90 @@ +/* + * PROJECT: ReactOS Device Management + * LICENSE: GPL - See COPYING in the top level directory + * FILE: base/applications/devmgmt/lang/uk-UA.rc + * PURPOSE: Ukraianian Language File for devmgmt + * TRANSLATOR: Artem Reznikov + */ + +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT + +IDR_MAINMENU MENU +BEGIN + POPUP "&Файл" + BEGIN + MENUITEM "Ð&Ð¸Ñ Ñд", IDC_EXIT + END + POPUP "ÐÑÑ" + BEGIN + MENUITEM "ÐÑÑк", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "ÐлаÑÑивоÑÑÑ", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "ÐовÑдка", IDC_PROGHELP, GRAYED + END + POPUP "ÐиглÑд" + BEGIN + MENUITEM "ÐÑиÑÑÑÐ¾Ñ Ð·Ð° Ñипом", IDC_DEVBYTYPE, CHECKED + MENUITEM "ÐÑиÑÑÑÐ¾Ñ Ð·Ð° пÑдклÑÑеннÑм", IDC_STATIC, GRAYED + MENUITEM "РеÑÑÑÑи за Ñипом", IDC_STATIC, GRAYED + MENUITEM "РеÑÑÑÑи за пÑдклÑÑеннÑм", IDC_STATIC, GRAYED + END + POPUP "ÐовÑдка" + BEGIN + MENUITEM "ÐовÑдка", IDC_PROGHELP + MENUITEM "ÐÑо пÑогÑамÑ", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "ÐлаÑÑивоÑÑÑ", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "ÐовÑдка", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "ÐÑо пÑогÑÐ°Ð¼Ñ ÐиÑпеÑÑÐµÑ Ð¿ÑиÑÑÑоÑв" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "ÐиÑпеÑÑÐµÑ Ð¿ÑиÑÑÑоÑв v0.1\nCopyright (C) 2006\nby Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 26 + PUSHBUTTON "ÐакÑиÑи", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "Це вÑлÑне пÑогÑамне забезпеÑеннÑ; Ðи можеÑе ÑозповÑÑджÑваÑи ÑÑ Ñа змÑнÑваÑи, доÑÑимÑÑÑиÑÑ Ñмови ÐÑдкÑиÑÐ¾Ñ Ð»ÑÑензÑÐ¹Ð½Ð¾Ñ Ñгоди GNU, опÑблÑÐºÐ¾Ð²Ð°Ð½Ð¾Ñ Ð¤Ð¾Ð½Ð´Ð¾Ð¼ вÑлÑного пÑогÑамного забезпеÑеннÑ; або ÑедакÑÑÑ 2 Угоди, або бÑдÑ-ÑÐºÐ¾Ñ ÑедакÑÑÑ, випÑÑÐµÐ½Ð¾Ñ Ð¿ÑзнÑÑе.\r\n\r\nÐ¦Ñ Ð¿ÑогÑама ÑозповÑÑджÑÑÑÑÑÑ Ð² надÑÑ Ð½Ð° Ñе, Ñо вона виÑвиÑÑÑÑ ÐºÐ¾ÑиÑноÑ, але ÐÐÐ ÐУÐЬ-ЯÐÐÐ¥ ÐÐÐ ÐÐТÐÐ, вклÑÑаÑÑи УЯÐÐÐЮ ÐÐÐ ÐÐТÐÐЮ ЯÐÐСТРабо ÐÐ ÐÐÐТÐÐÐ¡Ð¢Ð Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¸Ñ ÑÑлей. ÐодÑобиÑÑ Ð¼ÑÑÑÑÑÑÑÑ Ñ ÐÑдкÑиÑÑй лÑÑензÑйнÑй ÑÐ³Ð¾Ð´Ñ GNU.\r\n\r\nРазом з ÑÑÑÑ Ð¿ÑогÑÐ°Ð¼Ð¾Ñ Ð¿Ð¾Ð²Ð¸Ð½ÐµÐ½ поÑиÑÑваÑиÑÑ Ð¿ÑимÑÑник ÐÑдкÑиÑÐ¾Ñ Ð»ÑÑензÑÐ¹Ð½Ð¾Ñ Ñгоди GNU. ЯкÑо вÑн вÑдÑÑÑнÑй, повÑдомÑе пÑо Ñе в Фонд вÑлÑного пÑогÑамного забезпеÑÐµÐ½Ð½Ñ (Free Software Foundation, Inc.), 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "ÐлаÑÑивоÑÑÑ" + IDS_TOOLTIP_REFRESH "ÐновиÑи" + IDS_TOOLTIP_HELP "ÐовÑдка" + IDS_TOOLTIP_EXIT "ÐÐ¸Ñ Ñд" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ÐиÑпеÑÑÐµÑ Ð¿ÑиÑÑÑоÑв ReactOS" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " ÐийÑи з пÑогÑами." + IDS_HINT_REFRESH " ÐновиÑи ÑпиÑок." + IDS_HINT_PROP " ÐÑдкÑиÑи влаÑÑивоÑÑÑ Ð´Ð»Ñ Ð²Ð¸Ð±Ñаного елеменÑÑ." + IDS_HINT_HELP " ÐоказаÑи вÑкно довÑдки." + IDS_HINT_ABOUT " ÐÑо ÐиÑпеÑÑÐµÑ Ð¿ÑиÑÑÑоÑв ReactOS." + + IDS_HINT_SYS_RESTORE " ÐÑдновиÑи Ð²Ð¸Ñ Ñдний ÑозмÑÑ Ð²Ñкна." + IDS_HINT_SYS_MOVE " ÐмÑниÑи ÑозÑаÑÑÐ²Ð°Ð½Ð½Ñ Ð²Ñкна." + IDS_HINT_SYS_SIZE " ÐмÑниÑи ÑозмÑÑ Ð²Ñкна." + IDS_HINT_SYS_MINIMIZE " ÐгоÑнÑÑи вÑкно Ñ Ð·Ð½Ð°Ñок." + IDS_HINT_SYS_MAXIMIZE " РозгоÑнÑÑи вÑкно на веÑÑ ÐµÐºÑан." + IDS_HINT_SYS_CLOSE " ÐакÑиÑи вÑкно." +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/uk-UA.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/zh-CN.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/lang/zh-CN.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/lang/zh-CN.rc [iso-8859-1] Thu Sep 8 22:04:51 2011 @@ -1,0 +1,86 @@ +/* + * Translated by Song Fuchang (0xfc) <sfc_0(a)yahoo.com.cn> + */ + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +IDR_MAINMENU MENU +BEGIN + POPUP "æ件(&F)" + BEGIN + MENUITEM "éåº(&X)", IDC_EXIT + END + POPUP "å¨ä½" + BEGIN + MENUITEM "æå°", IDC_PRINT, GRAYED + MENUITEM SEPARATOR + MENUITEM "å±æ§", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "帮å©", IDC_PROGHELP, GRAYED + END + POPUP "æ¥ç" + BEGIN + MENUITEM "设å¤ï¼æç±»å", IDC_DEVBYTYPE, CHECKED + MENUITEM "设å¤ï¼æè¿æ¥", IDC_STATIC, GRAYED + MENUITEM "èµæºï¼æç±»å", IDC_STATIC, GRAYED + MENUITEM "èµæºï¼æè¿æ¥", IDC_STATIC, GRAYED + END + POPUP "帮å©" + BEGIN + MENUITEM "帮å©å 容", IDC_PROGHELP + MENUITEM "å ³äº", IDC_ABOUT + END +END + +IDR_POPUP MENU +BEGIN + POPUP "popup" + BEGIN + MENUITEM "å±æ§", IDC_PROP, GRAYED + MENUITEM SEPARATOR + MENUITEM "帮å©", IDC_PROGHELP + END +END + +IDD_ABOUTBOX DIALOGEX 22,16,190,182 +CAPTION "å ³äºè®¾å¤ç®¡çå¨" +FONT 8,"MS Shell Dlg",0,0 +STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME +BEGIN + LTEXT "设å¤ç®¡çå¨ v0.1\çæææ (C) 2006\nä½è Ged Murphy (gedmurphy(a)gmail.com)", IDC_STATIC, 48, 7, 130, 30 + PUSHBUTTON "å ³é", IDOK, 75, 162, 44, 15 + ICON IDI_MAIN_ICON, IDC_STATIC, 10, 10, 7, 30 + EDITTEXT IDC_LICENSE_EDIT, 8, 44, 174, 107, WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | ES_READONLY | ES_MULTILINE +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_LICENSE "è¿ä¸ªç¨åºæ¯èªç±è½¯ä»¶ï¼ä½ å¯ä»¥å¨èªç±è½¯ä»¶åºéä¼(FSF)ç GNU LGPL åè®®ä¸éæ°åå¸æä¿®æ¹å®ï¼ä¹éç¨äºè¿ä¸ªåè®®ççæ¬ 2ï¼æ(å¨æ¨çæ¥)ä»»ä½æ´æ°ççæ¬ã\r\n\r\nè¿ä¸ªç¨åºå¨å¸æå ¶æç¨çæ¿æä¸åå¸ï¼ä½æ²¡æä»»ä½ä¿è¯ï¼ä¹ä¸æå³çæ§è½ä¿è¯æ对æç¹å®ç¨éçéç¨æ§ã请æ¥ç GNU GPL 许å¯å议以äºè§£æ´å¤ç»èã\r\n\r\næ¨åºè¯¥å·²ç»æ¶å°äºä¸ä»½åè¿ä¸ªç¨åºä¸èµ·ç GNU GPL åè®®çå¯æ¬ï¼å¦æ没æï¼è¯·åä¿¡ç»èªç±è½¯ä»¶åºéä¼(FSF)ï¼51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_TOOLTIP_PROP "å±æ§" + IDS_TOOLTIP_REFRESH "å·æ°" + IDS_TOOLTIP_HELP "帮å©" + IDS_TOOLTIP_EXIT "éåº" +END + +/* Hints */ +STRINGTABLE DISCARDABLE +BEGIN + IDS_APPNAME "ReactOS 设å¤ç®¡çå¨" + IDS_HINT_BLANK " " + IDS_HINT_EXIT " éåºè¿ä¸ªç¨åºã" + IDS_HINT_REFRESH " å·æ°è®¾å¤å表ã" + IDS_HINT_PROP " 为å½åéæ©é¡¹æå¼å±æ§é¡µã" + IDS_HINT_HELP " æ¾ç¤ºå¸®å©çªå£ã" + IDS_HINT_ABOUT " å ³äº ReactOS 设å¤ç®¡çå¨ã" + + IDS_HINT_SYS_RESTORE " å°çªå£æ¢å¤å°é»è®¤å¤§å°ã" + IDS_HINT_SYS_MOVE " 移å¨è¿ä¸ªçªå£ã" + IDS_HINT_SYS_SIZE " æ´æ¹è¿ä¸ªçªå£ç大å°ã" + IDS_HINT_SYS_MINIMIZE " å°è¿ä¸ªçªå£æå 为ä¸ä¸ªå¾æ ã" + IDS_HINT_SYS_MAXIMIZE " å°è¿ä¸ªçªå£æ©å±å°æ´ä¸ªå±å¹ã" + IDS_HINT_SYS_CLOSE " å ³éè¿ä¸ªçªå£ã" +END Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/lang/zh-CN.rc ------------------------------------------------------------------------------ svn:eol-style = native Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Thu Sep 8 22:04:51 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/ ------------------------------------------------------------------------------ bugtraq:number = true Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/base/applications/mscutils/devmgmt_new/res/computer.ico URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/computer.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: trunk/reactos/base/applications/mscutils/devmgmt_new/res/exit.bmp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/exit.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: trunk/reactos/base/applications/mscutils/devmgmt_new/res/help.bmp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/help.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: trunk/reactos/base/applications/mscutils/devmgmt_new/res/properties.bmp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/properties.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: trunk/reactos/base/applications/mscutils/devmgmt_new/res/refresh.bmp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/refresh.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: trunk/reactos/base/applications/mscutils/devmgmt_new/res/root.bmp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/res/root.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
13 years, 3 months
1
0
0
0
[gedmurphy] 53648: [DEVMGMT] - Start a new device manager to test the reactos ATL code. - Also, the old one sucks big time and was quickly hacked together.
by gedmurphy@svn.reactos.org
Author: gedmurphy Date: Thu Sep 8 22:03:08 2011 New Revision: 53648 URL:
http://svn.reactos.org/svn/reactos?rev=53648&view=rev
Log: [DEVMGMT] - Start a new device manager to test the reactos ATL code. - Also, the old one sucks big time and was quickly hacked together. Added: trunk/reactos/base/applications/mscutils/devmgmt_new/ (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.cpp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.h (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.h (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/Resource.h (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.cpp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.h (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.sln (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.vcxproj (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/rsrc.rc (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.cpp (with props) trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.h (with props) Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Thu Sep 8 22:03:08 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/ ------------------------------------------------------------------------------ bugtraq:number = true Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,13 @@ +#include "StdAfx.h" +#include "Devices.h" +#include "DeviceView.h" + + +CDeviceView::CDeviceView(void) +{ +} + + +CDeviceView::~CDeviceView(void) +{ +} Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.cpp ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,8 @@ +#pragma once +class CDeviceView : public CDevices +{ +public: + CDeviceView(void); + ~CDeviceView(void); +}; + Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/DeviceView.h ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.cpp (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.cpp [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,12 @@ +#include "StdAfx.h" +#include "Devices.h" + + +CDevices::CDevices(void) +{ +} + + +CDevices::~CDevices(void) +{ +} Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.cpp ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.h (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.h [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,8 @@ +#pragma once +class CDevices +{ +public: + CDevices(void); + ~CDevices(void); +}; + Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/Devices.h ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,158 @@ +#include "StdAfx.h" +#include "devmgmt.h" +#include "MainWindow.h" + + +CMainWindow::CMainWindow(void) : + m_hMainWnd(NULL), + m_CmdShow(0) +{ + m_szMainWndClass = L"DevMgmtWndClass"; +} + + +CMainWindow::~CMainWindow(void) +{ +} + +BOOL +CMainWindow::StatusBarLoadString(IN HWND hStatusBar, + IN INT PartId, + IN HINSTANCE hInstance, + IN UINT uID) +{ + CAtlString szMessage; + BOOL Ret = FALSE; + + /* Load the string */ + if (szMessage.LoadStringW(hInstance, uID)) + { + /* Send the message to the status bar */ + Ret = (BOOL)SendMessageW(hStatusBar, + SB_SETTEXT, + (WPARAM)PartId, + (LPARAM)szMessage.GetBuffer()); + } + + return Ret; +} + +LRESULT CALLBACK +CMainWindow::MainWndProc(HWND hwnd, + UINT msg, + WPARAM wParam, + LPARAM lParam) +{ + CMainWindow *pThis; + LRESULT Ret = 0; + + /* Get the object pointer from window context */ + pThis = (CMainWindow *)GetWindowLongPtr(hwnd, GWLP_USERDATA); + + /* Check for an invalid pointer */ + if (!pThis) + { + /* Check that this isn't a create message */ + if (msg != WM_CREATE) + { + /* Don't handle null info pointer */ + goto HandleDefaultMessage; + } + } + + switch(msg) + { + case WM_CREATE: + { + /* Get the object pointer from the create param */ + pThis = (CMainWindow *)((LPCREATESTRUCT)lParam)->lpCreateParams; + + /* Store the info pointer in the window's global user data */ + SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pThis); + + /* Display the window according to the user request */ + ShowWindow(hwnd, pThis->m_CmdShow); + + break; + } + + default: + { +HandleDefaultMessage: + Ret = DefWindowProc(hwnd, msg, wParam, lParam); + break; + } + } + + return Ret; +} + +BOOL +CMainWindow::Initialize(LPCTSTR lpCaption, + int nCmdShow) +{ + CAtlString szCaption; + WNDCLASSEXW wc = {0}; + + /* Store the show window value */ + m_CmdShow = nCmdShow; + + /* Setup the window class struct */ + wc.cbSize = sizeof(WNDCLASSEXW); + wc.lpfnWndProc = MainWndProc; + wc.hInstance = g_hInstance; + wc.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCEW(IDI_MAIN_ICON)); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); + wc.lpszMenuName = MAKEINTRESOURCEW(IDR_MAINMENU); + wc.lpszClassName = m_szMainWndClass; + wc.hIconSm = (HICON)LoadImage(g_hInstance, + MAKEINTRESOURCE(IDI_MAIN_ICON), + IMAGE_ICON, + 16, + 16, + LR_SHARED); + + /* Register the window */ + if (RegisterClassExW(&wc)) + { + /* Create the main window and store the info pointer */ + m_hMainWnd = CreateWindowExW(WS_EX_WINDOWEDGE, + m_szMainWndClass, + lpCaption, + WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, + CW_USEDEFAULT, + CW_USEDEFAULT, + 600, + 450, + NULL, + NULL, + g_hInstance, + this); + } + + /* Return creation result */ + return !!(m_hMainWnd); +} + +VOID +CMainWindow::Uninitialize() +{ + /* Unregister the window class */ + UnregisterClassW(m_szMainWndClass, g_hInstance); +} + +INT +CMainWindow::Run() +{ + MSG Msg; + + /* Pump the message queue */ + while (GetMessageW(&Msg, NULL, 0, 0 )) + { + TranslateMessage(&Msg); + DispatchMessageW(&Msg); + } + + return 0; +} Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.cpp ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.h (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.h [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,21 @@ +#pragma once +class CMainWindow +{ + CAtlString m_szMainWndClass; + HWND m_hMainWnd; + int m_CmdShow; + +private: + static LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); + + BOOL StatusBarLoadString(HWND hStatusBar, INT PartId, HINSTANCE hInstance, UINT uID); + +public: + CMainWindow(void); + ~CMainWindow(void); + + BOOL Initialize(LPCTSTR lpCaption, int nCmdShow); + INT Run(); + VOID Uninitialize(); +}; + Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/MainWindow.h ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/Resource.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/Resource.h (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/Resource.h [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,64 @@ +#define IDC_STATIC -1 + +#define IDI_MAIN_ICON 50 +#define IDB_ROOT_IMAGE 51 + +/* windows */ +#define IDC_TREEVIEW 1000 +#define IDC_TOOLBAR 1001 +#define IDC_STATUSBAR 1002 + +/* commands */ +#define IDC_PROP 2000 +#define IDC_REFRESH 2001 +#define IDC_PRINT 2002 +#define IDC_PROGHELP 2003 +#define IDC_EXIT 2004 +#define IDC_ABOUT 4031 + +/* menus */ +#define IDR_MAINMENU 102 +#define IDR_POPUP 103 +#define IDC_DEVBYTYPE 104 + +/* tooltips */ +#define IDS_TOOLTIP_PROP 6000 +#define IDS_TOOLTIP_REFRESH 6001 +#define IDS_TOOLTIP_HELP 6002 +#define IDS_TOOLTIP_EXIT 6003 + +/* button bitmaps */ +#define IDB_PROP 10000 +#define IDB_REFRESH 10001 +#define IDB_HELP 10002 +#define IDB_EXIT 10003 + +/* toolbar buttons */ +#define TBICON_PROP 0 +#define TBICON_REFRESH 1 +#define TBICON_HELP 2 +#define TBICON_EXIT 3 + +/* about box info */ +#define IDD_ABOUTBOX 200 +#define IDC_LICENSE_EDIT 201 +#define IDS_APPNAME 202 +#define IDS_LICENSE 203 + + +/* menu hints */ +#define IDS_HINT_BLANK 20000 +#define IDS_HINT_REFRESH 20002 +#define IDS_HINT_PROP 20003 +#define IDS_HINT_HELP 20004 +#define IDS_HINT_ABOUT 20005 +#define IDS_HINT_EXIT 20006 + +/* system menu hints */ +#define IDS_HINT_SYS_RESTORE 21001 +#define IDS_HINT_SYS_MOVE 21002 +#define IDS_HINT_SYS_SIZE 21003 +#define IDS_HINT_SYS_MINIMIZE 21004 +#define IDS_HINT_SYS_MAXIMIZE 21005 +#define IDS_HINT_SYS_CLOSE 21006 + Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/Resource.h ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.cpp (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.cpp [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,58 @@ +#include "stdafx.h" +#include "devmgmt.h" +#include "MainWindow.h" + +HINSTANCE g_hInstance = NULL; +HANDLE ProcessHeap = NULL; + +int WINAPI +wWinMain(HINSTANCE hThisInstance, + HINSTANCE hPrevInstance, + LPWSTR lpCmdLine, + int nCmdShow) +{ + CMainWindow MainWindow; + INITCOMMONCONTROLSEX icex; + HANDLE hMutex; + CAtlString szAppName; + + int Ret = 1; + + /* Check if the app is already running */ + hMutex = CreateMutexW(NULL, TRUE, L"devmgmt_mutex"); + if (hMutex == NULL || GetLastError() == ERROR_ALREADY_EXISTS) + { + /* Cleanup and exit */ + if (hMutex) CloseHandle(hMutex); + return 0; + } + + /* Store the global values */ + g_hInstance = hThisInstance; + ProcessHeap = GetProcessHeap(); + + /* Initialize common controls */ + icex.dwSize = sizeof(INITCOMMONCONTROLSEX); + icex.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES; + InitCommonControlsEx(&icex); + + /* Load the application name */ + if (szAppName.LoadStringW(g_hInstance, IDS_APPNAME)) + { + /* Initialize the main window */ + if (MainWindow.Initialize(szAppName, + nCmdShow)) + { + /* Run the application */ + Ret = MainWindow.Run(); + + /* Uninitialize the main window */ + MainWindow.Uninitialize(); + } + } + + /* Delete the app mutex */ + CloseHandle(hMutex); + + return Ret; +} Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.cpp ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.h (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.h [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,9 @@ +#pragma once +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#pragma once +#include "resource.h" + +extern HINSTANCE g_hInstance; +extern HANDLE ProcessHeap; + Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.h ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== Binary file - no diff available. Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt.rc ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.sln URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.sln (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.sln [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "devmgmt_new", "devmgmt_new.vcxproj", "{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Debug|Win32.ActiveCfg = Debug|Win32 + {A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Debug|Win32.Build.0 = Debug|Win32 + {A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Release|Win32.ActiveCfg = Release|Win32 + {A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.sln ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.vcxproj URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.vcxproj (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.vcxproj [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,102 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="
http://schemas.microsoft.com/developer/msbuild/2003
"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{A5AB2C1A-A085-4A2A-951C-F3CF22DA2890}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>devmgmt_new</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + <UseOfAtl>Static</UseOfAtl> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + <UseOfAtl>Static</UseOfAtl> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalDependencies>comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader>Use</PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="Devices.h" /> + <ClInclude Include="DeviceView.h" /> + <ClInclude Include="devmgmt.h" /> + <ClInclude Include="MainWindow.h" /> + <ClInclude Include="Resource.h" /> + <ClInclude Include="stdafx.h" /> + <ClInclude Include="targetver.h_" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="Devices.cpp" /> + <ClCompile Include="DeviceView.cpp" /> + <ClCompile Include="devmgmt.cpp" /> + <ClCompile Include="MainWindow.cpp" /> + <ClCompile Include="stdafx.cpp"> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="devmgmt.rc" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/devmgmt_new.vcxproj ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/rsrc.rc (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/rsrc.rc [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,36 @@ +#include <windows.h> +#include "resource.h" + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +IDI_MAIN_ICON ICON "res/computer.ico" +IDB_ROOT_IMAGE BITMAP "res/root.bmp" + +/* main toolbar icons */ +IDB_PROP BITMAP DISCARDABLE "res/properties.bmp" +IDB_REFRESH BITMAP DISCARDABLE "res/refresh.bmp" +IDB_HELP BITMAP DISCARDABLE "res/help.bmp" +IDB_EXIT BITMAP DISCARDABLE "res/exit.bmp" + +#include "lang/bg-BG.rc" +#include "lang/de-DE.rc" +#include "lang/el-GR.rc" +#include "lang/en-US.rc" +#include "lang/es-ES.rc" +#include "lang/fr-FR.rc" +#include "lang/id-ID.rc" +#include "lang/it-IT.rc" +#include "lang/ja-JP.rc" +#include "lang/ko-KR.rc" +#include "lang/no-NO.rc" +#include "lang/ro-RO.rc" +#include "lang/sk-SK.rc" +#include "lang/sv-SE.rc" +#include "lang/th-TH.rc" + +// UTF-8 +#pragma code_page(65001) +#include "lang/pl-PL.rc" +#include "lang/ru-RU.rc" +#include "lang/uk-UA.rc" +#include "lang/zh-CN.rc" Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/rsrc.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.cpp (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.cpp [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,1 @@ +#include "stdafx.h" Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.cpp ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
============================================================================== --- trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.h (added) +++ trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.h [iso-8859-1] Thu Sep 8 22:03:08 2011 @@ -1,0 +1,13 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN +#include <Windows.h> +#include <windowsx.h> +#include <setupapi.h> +#include <cfgmgr32.h> +#include <commctrl.h> + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit + +#include <atlbase.h> +#include <atlstr.h> Propchange: trunk/reactos/base/applications/mscutils/devmgmt_new/stdafx.h ------------------------------------------------------------------------------ svn:eol-style = native
13 years, 3 months
1
0
0
0
[dgorbachev] 53647: [Telnet] Fix build with GCC 4.7.
by dgorbachev@svn.reactos.org
Author: dgorbachev Date: Thu Sep 8 21:00:37 2011 New Revision: 53647 URL:
http://svn.reactos.org/svn/reactos?rev=53647&view=rev
Log: [Telnet] Fix build with GCC 4.7. Modified: trunk/reactos/base/applications/network/telnet/src/stl_bids.h Modified: trunk/reactos/base/applications/network/telnet/src/stl_bids.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/…
============================================================================== --- trunk/reactos/base/applications/network/telnet/src/stl_bids.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/network/telnet/src/stl_bids.h [iso-8859-1] Thu Sep 8 21:00:37 2011 @@ -39,7 +39,7 @@ { if(!growable && vector<T>::size( ) == vector<T>::capacity( )) return 0; else - insert(vector<T>::end( ), item); + vector<T>::insert(vector<T>::end( ), item); return 1; } int AddAt(const T& item, size_type index) @@ -48,11 +48,11 @@ (ZeroBase(index > vector<T>::capacity( )) ))) return 0; if(ZeroBase(index) > vector<T>::capacity( )) // out of bounds - { insert(vector<T>::end( ), + { vector<T>::insert(vector<T>::end( ), ZeroBase(index) - vector<T>::size( ), T( )); - insert(vector<T>::end( ), item); } + vector<T>::insert(vector<T>::end( ), item); } else - { insert(vector<T>::begin( ) + ZeroBase(index), item); } + { vector<T>::insert(vector<T>::begin( ) + ZeroBase(index), item); } return 1; } @@ -65,13 +65,13 @@ else return location + lowerbound; } void Detach(size_type index) - { erase(vector<T>::begin( ) + ZeroBase(index)); } + { vector<T>::erase(vector<T>::begin( ) + ZeroBase(index)); } void Detach(const T& item) { Destroy(Find(item)); } void Destroy(size_type index) - { erase(vector<T>::begin( ) + ZeroBase(index)); } + { vector<T>::erase(vector<T>::begin( ) + ZeroBase(index)); } void Destroy(const T& item) { Destroy(Find(item)); } @@ -131,9 +131,9 @@ void Reallocate(size_type sz, size_type offset = 0) { if(offset) - insert(vector<T>::begin( ), offset, T( )); + vector<T>::insert(vector<T>::begin( ), offset, T( )); vector<T>::reserve(sz); - erase(vector<T>::end( ) - offset, vector<T>::end( )); } + vector<T>::erase(vector<T>::end( ) - offset, vector<T>::end( )); } void RemoveEntry(size_type index) { Detach(index); }
13 years, 3 months
1
0
0
0
[jgardou] 53646: [NTOSKRNL] - disable fast system calls for testing purpose. See issue #5857 for more details.
by jgardou@svn.reactos.org
Author: jgardou Date: Thu Sep 8 19:51:06 2011 New Revision: 53646 URL:
http://svn.reactos.org/svn/reactos?rev=53646&view=rev
Log: [NTOSKRNL] - disable fast system calls for testing purpose. See issue #5857 for more details. Modified: trunk/reactos/ntoskrnl/ke/i386/cpu.c Modified: trunk/reactos/ntoskrnl/ke/i386/cpu.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/cpu.c?rev…
============================================================================== --- trunk/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] Thu Sep 8 19:51:06 2011 @@ -27,7 +27,7 @@ ULONG KeProcessorLevel; ULONG KeProcessorRevision; ULONG KeFeatureBits; -ULONG KiFastSystemCallDisable; +ULONG KiFastSystemCallDisable = 1; ULONG KeI386NpxPresent = 0; ULONG KiMXCsrMask = 0; ULONG MxcsrFeatureMask = 0;
13 years, 3 months
1
0
0
0
[rharabien] 53645: [WIN32K] - Fix possible buffer overrun - Use KEY_VALUE_PARTIAL_INFORMATION field instead of magic offset to data
by rharabien@svn.reactos.org
Author: rharabien Date: Thu Sep 8 16:38:38 2011 New Revision: 53645 URL:
http://svn.reactos.org/svn/reactos?rev=53645&view=rev
Log: [WIN32K] - Fix possible buffer overrun - Use KEY_VALUE_PARTIAL_INFORMATION field instead of magic offset to data Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c trunk/reactos/subsystems/win32/win32k/ntuser/misc.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/kbdlayout.c [iso-8859-1] Thu Sep 8 16:38:38 2011 @@ -286,6 +286,9 @@ if( NT_SUCCESS(Status) ) { + FullKeyboardLayoutPath.Buffer = wszBuffer; + FullKeyboardLayoutPath.MaximumLength = sizeof(wszBuffer); + // FIXME: Is this 100% correct? // We're called very early, so HKEY_CURRENT_USER might not be available yet. Check this first. InitializeObjectAttributes(&KeyAttributes, &CurrentUserPath, OBJ_CASE_INSENSITIVE, NULL, NULL); @@ -294,18 +297,18 @@ if(Status == STATUS_OBJECT_NAME_NOT_FOUND) { // It is not available, so read it from HKEY_USERS\.DEFAULT + FullKeyboardLayoutPath.Length = sizeof(szDefaultUserPath) - sizeof(UNICODE_NULL); RtlCopyMemory(wszBuffer, szDefaultUserPath, sizeof(szDefaultUserPath)); } else { // The path is available ZwClose(KeyHandle); - RtlCopyMemory(wszBuffer, CurrentUserPath.Buffer, CurrentUserPath.MaximumLength); - } - - // Build the full path - RtlInitUnicodeString(&FullKeyboardLayoutPath, wszBuffer); - FullKeyboardLayoutPath.MaximumLength = MAX_PATH; + RtlCopyUnicodeString(&FullKeyboardLayoutPath, &CurrentUserPath); + } + + // Free CurrentUserPath - we dont need it anymore + RtlFreeUnicodeString(&CurrentUserPath); Status = RtlAppendUnicodeToString(&FullKeyboardLayoutPath, szKeyboardLayoutPath); @@ -326,8 +329,6 @@ } else ERR("RtlAppendUnicodeToString failed! (%08lx)\n", Status); - - RtlFreeUnicodeString(&CurrentUserPath); } else ERR("RtlFormatCurrentUserKeyPath failed! (%08lx)\n", Status); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/misc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/misc.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/misc.c [iso-8859-1] Thu Sep 8 16:38:38 2011 @@ -17,13 +17,13 @@ IntGdiGetLanguageID(VOID) { HANDLE KeyHandle; - ULONG Size = sizeof(WCHAR) * (MAX_PATH + 12); OBJECT_ATTRIBUTES ObAttr; //
http://support.microsoft.com/kb/324097
ULONG Ret = 0x409; // English - PVOID KeyInfo; + PKEY_VALUE_PARTIAL_INFORMATION pKeyInfo; + ULONG Size = sizeof(KEY_VALUE_PARTIAL_INFORMATION) + MAX_PATH*sizeof(WCHAR); UNICODE_STRING Language; - + RtlInitUnicodeString( &Language, L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Nls\\Language"); @@ -35,22 +35,22 @@ if ( NT_SUCCESS(ZwOpenKey(&KeyHandle, KEY_READ, &ObAttr))) { - KeyInfo = ExAllocatePoolWithTag(PagedPool, Size, TAG_STRING); - if ( KeyInfo ) + pKeyInfo = ExAllocatePoolWithTag(PagedPool, Size, TAG_STRING); + if ( pKeyInfo ) { RtlInitUnicodeString(&Language, L"Default"); if ( NT_SUCCESS(ZwQueryValueKey( KeyHandle, &Language, KeyValuePartialInformation, - KeyInfo, + pKeyInfo, Size, &Size)) ) { - RtlInitUnicodeString(&Language, (PVOID)((char *)KeyInfo + 12)); + RtlInitUnicodeString(&Language, (PWSTR)pKeyInfo->Data); RtlUnicodeStringToInteger(&Language, 16, &Ret); } - ExFreePoolWithTag(KeyInfo, TAG_STRING); + ExFreePoolWithTag(pKeyInfo, TAG_STRING); } ZwClose(KeyHandle); }
13 years, 3 months
1
0
0
0
[rharabien] 53644: [WIN32K] - Rewrite clipboard to match Windows implementation - Clipboard uses window stations instead of global variables - Data is saved in clipboard data user objects - Memory ...
by rharabien@svn.reactos.org
Author: rharabien Date: Thu Sep 8 16:32:54 2011 New Revision: 53644 URL:
http://svn.reactos.org/svn/reactos?rev=53644&view=rev
Log: [WIN32K] - Rewrite clipboard to match Windows implementation - Clipboard uses window stations instead of global variables - Data is saved in clipboard data user objects - Memory is no longer leaked when winsta is destroyed - Data is synthesized on demand - Make internal functions static - Fix possible memory corruption in IntGetAtomName - More winetests are passed Modified: trunk/reactos/dll/win32/user32/windows/clipboard.c trunk/reactos/include/reactos/win32k/ntuser.h trunk/reactos/subsystems/win32/win32k/include/clipboard.h trunk/reactos/subsystems/win32/win32k/include/winsta.h trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c trunk/reactos/subsystems/win32/win32k/ntuser/window.c trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c Modified: trunk/reactos/dll/win32/user32/windows/clipboard.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/user32/windows/c…
============================================================================== --- trunk/reactos/dll/win32/user32/windows/clipboard.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/user32/windows/clipboard.c [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -46,40 +46,6 @@ /* * @implemented */ -HANDLE -WINAPI -GetClipboardData(UINT uFormat) -{ - HGLOBAL hGlobal = NULL; - PVOID pGlobal = NULL; - DWORD_PTR size = 0; - - /* dealing with bitmap object */ - if (uFormat != CF_BITMAP) - { - size = (DWORD_PTR)NtUserGetClipboardData(uFormat, NULL); - - if (size) - { - hGlobal = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, size); - pGlobal = GlobalLock(hGlobal); - - size = (DWORD_PTR)NtUserGetClipboardData(uFormat, pGlobal); - - GlobalUnlock(hGlobal); - } - } - else - { - hGlobal = NtUserGetClipboardData(CF_BITMAP, NULL); - } - - return hGlobal; -} - -/* - * @implemented - */ INT WINAPI GetClipboardFormatNameA(UINT format, @@ -87,7 +53,6 @@ int cchMaxCount) { LPWSTR lpBuffer; - UNICODE_STRING FormatName; INT Length; lpBuffer = RtlAllocateHeap(RtlGetProcessHeap(), 0, cchMaxCount * sizeof(WCHAR)); @@ -97,12 +62,8 @@ return 0; } - FormatName.Length = 0; - FormatName.MaximumLength = cchMaxCount * sizeof(WCHAR); - FormatName.Buffer = lpBuffer; - /* we need a UNICODE string */ - Length = NtUserGetClipboardFormatName(format, &FormatName, cchMaxCount); + Length = NtUserGetClipboardFormatName(format, lpBuffer, cchMaxCount); if (Length != 0) { @@ -123,25 +84,16 @@ */ INT WINAPI -GetClipboardFormatNameW(UINT format, +GetClipboardFormatNameW(UINT uFormat, LPWSTR lpszFormatName, INT cchMaxCount) { - UNICODE_STRING FormatName; - ULONG Ret; - - FormatName.Length = 0; - FormatName.MaximumLength = cchMaxCount * sizeof(WCHAR); - FormatName.Buffer = (PWSTR)lpszFormatName; - Ret = NtUserGetClipboardFormatName(format, &FormatName, cchMaxCount); - return Ret; - -} - -/* - * @implemented - */ - + return NtUserGetClipboardFormatName(uFormat, lpszFormatName, cchMaxCount); +} + +/* + * @implemented + */ UINT WINAPI RegisterClipboardFormatA(LPCSTR lpszFormat) @@ -201,26 +153,44 @@ return ret; } -HGLOBAL -renderLocale(DWORD Locale) -{ - DWORD* pLocale; - HGLOBAL hGlobal; - - hGlobal = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, sizeof(DWORD)); - - if(!hGlobal) - { - return hGlobal; - } - - pLocale = (DWORD*)GlobalLock(hGlobal); - - *pLocale = Locale; - - GlobalUnlock(hGlobal); - - return hGlobal; +PVOID static WINAPI +IntSynthesizeMultiByte(PVOID pwStr, DWORD cbStr, BOOL bOem) +{ + HANDLE hGlobal; + PVOID pGlobal; + INT cbGlobal; + + cbGlobal = WideCharToMultiByte(bOem ? CP_OEMCP : CP_ACP, + 0, pwStr, cbStr / sizeof(WCHAR), + NULL, 0, NULL, NULL); + hGlobal = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, cbGlobal); + if (!hGlobal) + return NULL; + + pGlobal = GlobalLock(hGlobal); + WideCharToMultiByte(bOem ? CP_OEMCP : CP_ACP, + 0, pwStr, cbStr / sizeof(WCHAR), + pGlobal, cbGlobal, NULL, NULL); + return pGlobal; +} + +PVOID static WINAPI +IntSynthesizeWideChar(PVOID pwStr, DWORD cbStr, BOOL bOem) +{ + HANDLE hGlobal; + PVOID pGlobal; + INT cbGlobal; + + cbGlobal = MultiByteToWideChar(bOem ? CP_OEMCP : CP_ACP, + 0, pwStr, cbStr, NULL, 0) * sizeof(WCHAR); + hGlobal = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, cbGlobal); + if (!hGlobal) + return NULL; + + pGlobal = GlobalLock(hGlobal); + MultiByteToWideChar(bOem ? CP_OEMCP : CP_ACP, + 0, pwStr, cbStr, pGlobal, cbGlobal); + return pGlobal; } /* @@ -228,62 +198,161 @@ */ HANDLE WINAPI +GetClipboardData(UINT uFormat) +{ + HANDLE hData = NULL; + PVOID pData = NULL; + DWORD cbData = 0; + GETCLIPBDATA gcd; + + hData = NtUserGetClipboardData(uFormat, &gcd); + if (gcd.fGlobalHandle) + { + HANDLE hGlobal; + + NtUserCreateLocalMemHandle(hData, NULL, 0, &cbData); + hGlobal = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, cbData); + pData = GlobalLock(hGlobal); + NtUserCreateLocalMemHandle(hData, pData, cbData, NULL); + hData = hGlobal; + } + + if (gcd.uFmtRet != uFormat) + { + SETCLIPBDATA scd = {FALSE, FALSE}; + HANDLE hNewData = NULL; + PVOID pNewData = NULL; + + /* Synthesize requested format */ + switch (uFormat) + { + case CF_TEXT: + if (gcd.uFmtRet == CF_UNICODETEXT) + pNewData = IntSynthesizeMultiByte(pData, cbData, uFormat == CF_OEMTEXT); + else // CF_OEMTEXT + OemToCharBuffA(pData, pData, cbData); + break; + case CF_OEMTEXT: + if (gcd.uFmtRet == CF_UNICODETEXT) + pNewData = IntSynthesizeMultiByte(pData, cbData, uFormat == CF_OEMTEXT); + else + CharToOemBuffA(pData, pData, cbData); + break; + case CF_UNICODETEXT: + pNewData = IntSynthesizeWideChar(pData, cbData, gcd.uFmtRet == CF_OEMTEXT); + break; + default: + FIXME("Format: %u\n", uFormat); + } + + /* Is it a global handle? */ + if (pNewData) + hNewData = GlobalHandle(pNewData); + + if (hNewData) + { + /* Free old data */ + if (pData) + { + GlobalUnlock(hData); + GlobalFree(hData); + } + hData = hNewData; + pData = pNewData; + } + + /* Save synthesized format in clibboard */ + if (pData) + { + HANDLE hMem; + + scd.fGlobalHandle = TRUE; + hMem = NtUserConvertMemHandle(pData, GlobalSize(hData)); + NtUserSetClipboardData(uFormat, hMem, &scd); + } + else if (hData) + NtUserSetClipboardData(uFormat, hData, &scd); + } + + /* Unlock global handle */ + if (pData) + GlobalUnlock(hData); + + return hData; +} + +/* + * @implemented + */ +HANDLE +WINAPI SetClipboardData(UINT uFormat, HANDLE hMem) { - DWORD size; + DWORD dwSize; + HANDLE hGlobal; LPVOID pMem; - HANDLE ret = NULL; - + HANDLE hRet = NULL; + SETCLIPBDATA scd = {FALSE, FALSE}; + + /* Check if this is delayed render */ if (hMem == NULL) - { - return NtUserSetClipboardData(uFormat, 0, 0); - } - - if (uFormat == CF_BITMAP) - { - /* GlobalLock should return 0 for GDI handles + return NtUserSetClipboardData(uFormat, NULL, &scd); + + if (hMem <= (HANDLE)4) + SetLastError(ERROR_INVALID_PARAMETER); + /* Bitmaps and palette does not use global handles */ + else if (uFormat == CF_BITMAP || uFormat == CF_DSPBITMAP || uFormat == CF_PALETTE) + hRet = NtUserSetClipboardData(uFormat, hMem, &scd); + /* Meta files are probably checked for validity */ + else if (uFormat == CF_DSPMETAFILEPICT || uFormat == CF_METAFILEPICT || + uFormat == CF_DSPENHMETAFILE || uFormat == CF_ENHMETAFILE) + hRet = NULL; // not supported yet + else + { + /* Some formats accept only global handles, other accept global handles or integer values */ pMem = GlobalLock(hMem); - if (pMem) - { - // not a GDI handle - GlobalUnlock(hMem); - return ret; + dwSize = GlobalSize(hMem); + + if (pMem || uFormat == CF_DIB || uFormat == CF_DIBV5 || + uFormat == CF_DSPTEXT || uFormat == CF_LOCALE || + uFormat == CF_OEMTEXT || uFormat == CF_TEXT || + uFormat == CF_UNICODETEXT) + { + if (pMem) + { + /* This is a local memory. Make global memory object */ + hGlobal = NtUserConvertMemHandle(pMem, dwSize); + + /* Unlock memory */ + GlobalUnlock(hMem); + /* FIXME: free hMem when CloseClipboard is called */ + + if (hGlobal) + { + /* Save data */ + scd.fGlobalHandle = TRUE; + hRet = NtUserSetClipboardData(uFormat, hGlobal, &scd); + } + + /* On success NtUserSetClipboardData returns pMem + however caller expects us to return hMem */ + if (hRet == hGlobal) + hRet = hMem; + } + else + SetLastError(ERROR_INVALID_HANDLE); } else { - */ - /* check if this GDI handle is a HBITMAP */ - /* GetObject for HBITMAP not implemented in ReactOS */ - //if (GetObject(hMem, 0, NULL) == sifeof(BITMAP)) - //{ - return NtUserSetClipboardData(CF_BITMAP, hMem, 0); - //} - /*}*/ - } - - size = GlobalSize(hMem); - pMem = GlobalLock(hMem); - - if ((pMem) && (size)) - { - size = GlobalSize(hMem); - ret = NtUserSetClipboardData(uFormat, pMem, size); - - //On success NtUserSetClipboardData returns pMem - //however caller expects us to return hMem - if (ret == pMem) - ret = hMem; - - //should i unlock hMem? - GlobalUnlock(hMem); - } - else - { - ERR("SetClipboardData failed\n"); - } - - return ret; - + /* Save a number */ + hRet = NtUserSetClipboardData(uFormat, hMem, &scd); + } + } + + if (!hRet) + ERR("SetClipboardData(%u, %p) failed\n", uFormat, hMem); + + return hRet; } /* Modified: trunk/reactos/include/reactos/win32k/ntuser.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntu…
============================================================================== --- trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] (original) +++ trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -204,6 +204,13 @@ BOOLEAN Ansi; /* Is it an Ansi hook? */ UNICODE_STRING ModuleName; /* Module name for global hooks */ } HOOK, *PHOOK; + +typedef struct tagCLIPBOARDDATA +{ + HEAD head; + DWORD cbData; + BYTE Data[0]; +} CLIPBOARDDATA, *PCLIPBOARDDATA; /* THREADINFO Flags */ #define TIF_INCLEANUP 0x00000001 @@ -909,6 +916,23 @@ SHAREDINFO siClient; } USERCONNECT, *PUSERCONNECT; +typedef struct tagGETCLIPBDATA +{ + UINT uFmtRet; + BOOL fGlobalHandle; + union + { + HANDLE hLocale; + HANDLE hPalette; + }; +} GETCLIPBDATA, *PGETCLIPBDATA; + +typedef struct tagSETCLIPBDATA +{ + BOOL fGlobalHandle; + BOOL fIncSerialNumber; +} SETCLIPBDATA, *PSETCLIPBDATA; + DWORD NTAPI NtUserAssociateInputContext( @@ -1010,8 +1034,8 @@ BOOL NTAPI NtUserHiliteMenuItem( - HWND hwnd, - HMENU hmenu, + HWND hWnd, + HMENU hMenu, UINT uItemHilite, UINT uHilite); @@ -1464,11 +1488,11 @@ DWORD dwUnknown2, DWORD dwUnknown3); -DWORD +HANDLE NTAPI NtUserConvertMemHandle( - DWORD Unknown0, - DWORD Unknown1); + PVOID pData, + DWORD cbData); int NTAPI @@ -1509,13 +1533,13 @@ NtUserCreateInputContext( DWORD dwUnknown1); -DWORD +NTSTATUS NTAPI NtUserCreateLocalMemHandle( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3); + HANDLE hMem, + PVOID pData, + DWORD cbData, + DWORD *pcbData); HWND NTAPI @@ -1678,7 +1702,7 @@ BOOL bMetaHDC, PVOID pDIXData); -DWORD +BOOL NTAPI NtUserEmptyClipboard(VOID); @@ -1828,14 +1852,14 @@ HANDLE NTAPI NtUserGetClipboardData( + UINT fmt, + PGETCLIPBDATA pgcd); + +INT +NTAPI +NtUserGetClipboardFormatName( UINT uFormat, - PVOID pBuffer); - -INT -NTAPI -NtUserGetClipboardFormatName( - UINT format, - PUNICODE_STRING FormatName, + LPWSTR lpszFormatName, INT cchMaxCount); HWND @@ -2634,9 +2658,9 @@ HANDLE NTAPI NtUserSetClipboardData( - UINT uFormat, + UINT fmt, HANDLE hMem, - DWORD Unknown2); + PSETCLIPBDATA scd); HWND NTAPI Modified: trunk/reactos/subsystems/win32/win32k/include/clipboard.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/clipboard.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/clipboard.h [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -1,40 +1,22 @@ #pragma once -typedef struct _ClipboardChainElement +#include "window.h" +#include <include/win32.h> + +typedef struct _CLIP { - PWND window; - struct _ClipboardChainElement *next; -} CLIPBOARDCHAINELEMENT, *PCLIPBOARDCHAINELEMENT; + UINT fmt; + HANDLE hData; + BOOL fGlobalHandle; +} CLIP, *PCLIP; -typedef struct _ClipboardElement -{ - UINT format; - HANDLE hData; - DWORD size; // data may be delayed o synth render - struct _ClipboardElement *next; -} CLIPBOARDELEMENT, *PCLIPBOARDELEMENT; +UINT APIENTRY +UserEnumClipboardFormats(UINT uFormat); -typedef struct _CLIPBOARDSYSTEM -{ - PTHREADINFO ClipboardThread; - PTHREADINFO ClipboardOwnerThread; - PWND ClipboardWindow; - PWND ClipboardViewerWindow; - PWND ClipboardOwnerWindow; - BOOL sendDrawClipboardMsg; - BOOL recentlySetClipboard; - BOOL delayedRender; - UINT lastEnumClipboardFormats; - DWORD ClipboardSequenceNumber; +VOID FASTCALL +UserClipboardFreeWindow(PWND pWindow); - PCLIPBOARDCHAINELEMENT WindowsChain; - PCLIPBOARDELEMENT ClipboardData; +struct _WINSTATION_OBJECT; - PCHAR synthesizedData; - DWORD synthesizedDataSize; - -} CLIPBOARDSYSTEM, *PCLIPBOARDSYSTEM; - -VOID FASTCALL IntClipboardFreeWindow(PWND window); -UINT APIENTRY IntEnumClipboardFormats(UINT format); -VOID FASTCALL IntIncrementSequenceNumber(VOID); +VOID NTAPI +UserEmptyClipboardData(struct _WINSTATION_OBJECT *pWinSta); Modified: trunk/reactos/subsystems/win32/win32k/include/winsta.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/include/winsta.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/include/winsta.h [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -39,7 +39,7 @@ /* ScreenSaver */ BOOL ScreenSaverRunning; - UINT ScreenSaverTimeOut; + UINT ScreenSaverTimeOut; /* Should this be on each desktop ? */ BOOL ScreenSaverActive; @@ -51,8 +51,17 @@ ULONG Flags; struct _DESKTOP* ActiveDesktop; - PCLIPBOARDSYSTEM Clipboard; - DWORD ClipboardSequenceNumber; + PTHREADINFO ptiClipLock; + PTHREADINFO ptiDrawingClipboard; + PWND spwndClipOpen; + PWND spwndClipViewer; + PWND spwndClipOwner; + PCLIP pClipBase; // Not a clip object. + DWORD cNumClipFormats; + INT iClipSerialNumber; + INT iClipSequenceNumber; + INT fClipboardChanged : 1; + INT fInDelayedRendering : 1; } WINSTATION_OBJECT, *PWINSTATION_OBJECT; Modified: trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -5,763 +5,624 @@ * FILE: subsys/win32k/ntuser/clipboard.c * PROGRAMER: Filip Navara <xnavara(a)volny.cz> * Pablo Borobia <pborobia(a)gmail.com> + * Rafal Harabien <rafalh(a)reactos.org> */ #include <win32k.h> DBG_DEFAULT_CHANNEL(UserClipbrd); -#define DATA_DELAYED_RENDER 0 -#define DATA_SYNTHESIZED_RENDER -1 - -PTHREADINFO ClipboardThread; -PTHREADINFO ClipboardOwnerThread; -PWND ClipboardWindow; -PWND ClipboardViewerWindow; -PWND ClipboardOwnerWindow; -BOOL sendDrawClipboardMsg; -BOOL recentlySetClipboard; -BOOL delayedRender; -UINT lastEnumClipboardFormats; -DWORD ClipboardSequenceNumber = 0; - -PCLIPBOARDCHAINELEMENT WindowsChain = NULL; -PCLIPBOARDELEMENT ClipboardData = NULL; - -PCHAR synthesizedData; -DWORD synthesizedDataSize; - - -/*==============================================================*/ - -/* return the pointer to the prev window of the finded window, - if NULL does not exists in the chain */ -PCLIPBOARDCHAINELEMENT FASTCALL -IntIsWindowInChain(PWND window) -{ - PCLIPBOARDCHAINELEMENT wce = WindowsChain; - - while (wce) - { - if (wce->window == window) - { - break; - } - wce = wce->next; - } - - return wce; -} - -VOID FASTCALL printChain(VOID) -{ - /*test*/ - PCLIPBOARDCHAINELEMENT wce2 = WindowsChain; - while (wce2) - { - ERR("chain: %p\n", wce2->window->head.h); - wce2 = wce2->next; - } -} - -/* the new window always have to be the first in the chain */ -PCLIPBOARDCHAINELEMENT FASTCALL -IntAddWindowToChain(PWND window) -{ - PCLIPBOARDCHAINELEMENT wce = NULL; - - if (!IntIsWindowInChain(window)) - { - wce = WindowsChain; - - wce = ExAllocatePoolWithTag(PagedPool, sizeof(CLIPBOARDCHAINELEMENT), USERTAG_CLIPBOARD); - if (wce == NULL) - { - EngSetLastError(ERROR_NOT_ENOUGH_MEMORY); - goto exit_addChain; - } - - wce->window = window; - wce->next = WindowsChain; - - WindowsChain = wce; - - //printChain(); - } -exit_addChain: - - /* return the next window to beremoved later */ - return wce; -} - -PCLIPBOARDCHAINELEMENT FASTCALL -IntRemoveWindowFromChain(PWND window) -{ - PCLIPBOARDCHAINELEMENT wce = WindowsChain; - PCLIPBOARDCHAINELEMENT *link = &WindowsChain; - - if (IntIsWindowInChain(window)) - { - while (wce != NULL) - { - if (wce->window == window) +#define DATA_DELAYED (HANDLE)0 +#define DATA_SYNTH_USER (HANDLE)1 +#define DATA_SYNTH_KRNL (HANDLE)2 +#define IS_DATA_DELAYED(ce) ((ce)->hData == DATA_DELAYED) +#define IS_DATA_SYNTHESIZED(ce) ((ce)->hData == DATA_SYNTH_USER || (ce)->hData == DATA_SYNTH_KRNL) + +PWINSTATION_OBJECT static FASTCALL +IntGetWinStaForCbAccess() +{ + HWINSTA hWinSta; + PWINSTATION_OBJECT pWinStaObj; + NTSTATUS Status; + + hWinSta = UserGetProcessWindowStation(); + Status = IntValidateWindowStationHandle(hWinSta, KernelMode, WINSTA_ACCESSCLIPBOARD, &pWinStaObj); + if (!NT_SUCCESS(Status)) + { + ERR("Cannot open winsta\n"); + SetLastNtError(Status); + return NULL; + } + + return pWinStaObj; +} + +/* if format exists, returns a non zero value (pointing to formated object) */ +PCLIP static FASTCALL +IntIsFormatAvailable(PWINSTATION_OBJECT pWinStaObj, UINT fmt) +{ + unsigned i = 0; + + for (i = 0; i < pWinStaObj->cNumClipFormats; ++i) + { + if (pWinStaObj->pClipBase[i].fmt == fmt) + return &pWinStaObj->pClipBase[i]; + } + + return NULL; +} + +VOID static FASTCALL +IntFreeElementData(PCLIP pElement) +{ + if (!IS_DATA_DELAYED(pElement) && + !IS_DATA_SYNTHESIZED(pElement)) + { + if (pElement->fGlobalHandle) + UserDeleteObject(pElement->hData, otClipBoardData); + else if (pElement->fmt == CF_BITMAP || pElement->fmt == CF_PALETTE || + pElement->fmt == CF_DSPBITMAP) + { + GreDeleteObject(pElement->hData); + } + } +} + +/* adds a new format and data to the clipboard */ +PCLIP static NTAPI +IntAddFormatedData(PWINSTATION_OBJECT pWinStaObj, UINT fmt, HANDLE hData, BOOLEAN fGlobalHandle, BOOL bEnd) +{ + PCLIP pElement = NULL; + + /* Use exisiting entry with specified format */ + if (!bEnd) + pElement = IntIsFormatAvailable(pWinStaObj, fmt); + + /* Put new entry at the end if nothing was found */ + if (!pElement) + { + /* Allocate bigger clipboard if needed. We could use lists but Windows uses array */ + if (pWinStaObj->cNumClipFormats % 4 == 0) + { + PCLIP pNewClip; + + /* Allocate new clipboard */ + pNewClip = ExAllocatePoolWithTag(PagedPool, + (pWinStaObj->cNumClipFormats + 4) * sizeof(CLIP), + USERTAG_CLIPBOARD); + if (!pNewClip) { - *link = wce->next; - break; + EngSetLastError(ERROR_NOT_ENOUGH_MEMORY); + return NULL; } - link = &wce->next; - wce = wce->next; - } - - //printChain(); - - return wce; + /* Copy data */ + memcpy(pNewClip, pWinStaObj->pClipBase, pWinStaObj->cNumClipFormats * sizeof(CLIP)); + + /* Free old clipboard */ + if (pWinStaObj->pClipBase) + ExFreePoolWithTag(pWinStaObj->pClipBase, USERTAG_CLIPBOARD); + + /* Update WinSta */ + pWinStaObj->pClipBase = pNewClip; + } + + /* New element is at the end */ + pElement = &pWinStaObj->pClipBase[pWinStaObj->cNumClipFormats]; + pElement->fmt = fmt; + pWinStaObj->cNumClipFormats++; } else - { - return NULL; - } -} - - -/*==============================================================*/ -/* if format exists, returns a non zero value (pointing to format object) */ -PCLIPBOARDELEMENT FASTCALL -intIsFormatAvailable(UINT format) -{ - PCLIPBOARDELEMENT ret = NULL; - PCLIPBOARDELEMENT ce = ClipboardData; - - while(ce) - { - if (ce->format == format) - { - ret = ce; - break; - } - ce = ce->next; - } - return ret; -} - -/* counts how many distinct format were are in the clipboard */ -DWORD FASTCALL -IntCountClipboardFormats(VOID) -{ - DWORD ret = 0; - PCLIPBOARDELEMENT ce = ClipboardData; - - while(ce) - { - ret++; - ce = ce->next; - } - return ret; -} - -/* adds a new format and data to the clipboard */ -PCLIPBOARDELEMENT FASTCALL -intAddFormatedData(UINT format, HANDLE hData, DWORD size) -{ - PCLIPBOARDELEMENT ce = NULL; - - ce = ExAllocatePoolWithTag(PagedPool, sizeof(CLIPBOARDELEMENT), USERTAG_CLIPBOARD); - if (ce == NULL) - { - EngSetLastError(ERROR_NOT_ENOUGH_MEMORY); + IntFreeElementData(pElement); + + pElement->hData = hData; + pElement->fGlobalHandle = fGlobalHandle; + + return pElement; +} + +BOOL static FASTCALL +IntIsClipboardOpenByMe(PWINSTATION_OBJECT pWinSta) +{ + /* check if current thread has opened the clipboard */ + if (pWinSta->ptiClipLock && + pWinSta->ptiClipLock == PsGetCurrentThreadWin32Thread()) + { + return TRUE; + } + + return FALSE; +} + +VOID static NTAPI +IntSynthesizeDib(PWINSTATION_OBJECT pWinStaObj, HBITMAP hBm) +{ + HDC hdc; + BITMAP bm; + BITMAPINFO bi; + SURFACE *psurf; + PCLIPBOARDDATA pMemObj; + HANDLE hMem; + + hdc = UserGetDCEx(NULL, NULL, DCX_USESTYLE); + if (!hdc) + return; + + psurf = SURFACE_ShareLockSurface(hBm); + if (!psurf) + goto cleanup; + BITMAP_GetObject(psurf, sizeof(BITMAP), (PVOID)&bm); + SURFACE_ShareUnlockSurface(psurf); + + bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bi.bmiHeader.biWidth = bm.bmWidth; + bi.bmiHeader.biHeight = bm.bmHeight; + bi.bmiHeader.biPlanes = bm.bmPlanes; + bi.bmiHeader.biBitCount = bm.bmBitsPixel; + bi.bmiHeader.biCompression = BI_RGB; + bi.bmiHeader.biSizeImage = 0; + bi.bmiHeader.biXPelsPerMeter = 0; + bi.bmiHeader.biYPelsPerMeter = 0; + bi.bmiHeader.biClrUsed = 0; + + NtGdiGetDIBitsInternal(hdc, hBm, 0, bm.bmHeight, NULL, &bi, DIB_RGB_COLORS, 0, 0); + + pMemObj = (PCLIPBOARDDATA)UserCreateObject(gHandleTable, NULL, &hMem, otClipBoardData, + sizeof(BITMAPINFOHEADER) + bi.bmiHeader.biSizeImage); + if(pMemObj) + { + pMemObj->cbData = sizeof(BITMAPINFOHEADER) + bi.bmiHeader.biSizeImage; + memcpy(pMemObj->Data, &bi, sizeof(BITMAPINFOHEADER)); + NtGdiGetDIBitsInternal(hdc, pMemObj->Data, 0, bm.bmHeight, (LPBYTE)pMemObj->Data + sizeof(BITMAPINFOHEADER), &bi, DIB_RGB_COLORS, 0, 0); + IntAddFormatedData(pWinStaObj, CF_DIB, hMem, TRUE, TRUE); + } + +cleanup: + UserReleaseDC(NULL, hdc, FALSE); +} + +VOID static WINAPI +IntSynthesizeBitmap(PWINSTATION_OBJECT pWinStaObj, PCLIP pBmEl) +{ + HDC hdc = NULL; + PBITMAPINFO pBmi, pConvertedBmi = NULL; + HBITMAP hBm = NULL; + PCLIPBOARDDATA pMemObj; + PCLIP pDibEl; + ULONG Offset; + + TRACE("IntSynthesizeBitmap(%p, %p)\n", pWinStaObj, pBmEl); + + pDibEl = IntIsFormatAvailable(pWinStaObj, CF_DIB); + ASSERT(pDibEl && !IS_DATA_SYNTHESIZED(pDibEl)); + if(!pDibEl->fGlobalHandle) + return; + + pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, pDibEl->hData, otClipBoardData); + if (!pMemObj) + return; + + pBmi = (BITMAPINFO*)pMemObj->Data; + + if (pMemObj->cbData < sizeof(DWORD) && pMemObj->cbData < pBmi->bmiHeader.biSize) + goto cleanup; + + pConvertedBmi = DIB_ConvertBitmapInfo(pBmi, DIB_RGB_COLORS); + if (!pConvertedBmi) + goto cleanup; + + Offset = DIB_BitmapInfoSize(pBmi, DIB_RGB_COLORS); + + hdc = UserGetDCEx(NULL, NULL, DCX_USESTYLE); + if (!hdc) + goto cleanup; + + hBm = GreCreateDIBitmapInternal(hdc, + pConvertedBmi->bmiHeader.biWidth, + pConvertedBmi->bmiHeader.biHeight, + CBM_INIT, + pMemObj->Data + Offset, + pConvertedBmi, + DIB_RGB_COLORS, + 0, + 0); + + if (hBm) + { + GreSetObjectOwner(hBm, GDI_OBJ_HMGR_PUBLIC); + pBmEl->hData = hBm; + } + +cleanup: + if (hdc) + UserReleaseDC(NULL, hdc, FALSE); + + if (pConvertedBmi) + DIB_FreeConvertedBitmapInfo(pConvertedBmi, pBmi); +} + +VOID static NTAPI +IntAddSynthesizedFormats(PWINSTATION_OBJECT pWinStaObj) +{ + PCLIP pTextEl, pUniTextEl, pOemTextEl, pLocaleEl, pBmEl, pDibEl; + + pTextEl = IntIsFormatAvailable(pWinStaObj, CF_TEXT); + pOemTextEl = IntIsFormatAvailable(pWinStaObj, CF_OEMTEXT); + pUniTextEl = IntIsFormatAvailable(pWinStaObj, CF_UNICODETEXT); + pLocaleEl = IntIsFormatAvailable(pWinStaObj, CF_LOCALE); + pBmEl = IntIsFormatAvailable(pWinStaObj, CF_BITMAP); + pDibEl = IntIsFormatAvailable(pWinStaObj, CF_DIB); + + /* Add CF_LOCALE format if we have CF_TEXT */ + if (!pLocaleEl && pTextEl) + { + PCLIPBOARDDATA pMemObj; + HANDLE hMem; + + pMemObj = (PCLIPBOARDDATA)UserCreateObject(gHandleTable, NULL, &hMem, otClipBoardData, + sizeof(CLIPBOARDDATA) + sizeof(LCID)); + if (pMemObj) + { + pMemObj->cbData = sizeof(LCID); + *((LCID*)pMemObj->Data) = NtCurrentTeb()->CurrentLocale; + IntAddFormatedData(pWinStaObj, CF_LOCALE, hMem, TRUE, TRUE); + } + } + + /* Add CF_TEXT. Note: it is synthesized in user32.dll */ + if (!pTextEl && (pUniTextEl || pOemTextEl)) + IntAddFormatedData(pWinStaObj, CF_TEXT, DATA_SYNTH_USER, FALSE, TRUE); + + /* Add CF_OEMTEXT. Note: it is synthesized in user32.dll */ + if (!pOemTextEl && (pUniTextEl || pTextEl)) + IntAddFormatedData(pWinStaObj, CF_OEMTEXT, DATA_SYNTH_USER, FALSE, TRUE); + + /* Add CF_UNICODETEXT. Note: it is synthesized in user32.dll */ + if (!pUniTextEl && (pTextEl || pOemTextEl)) + IntAddFormatedData(pWinStaObj, CF_UNICODETEXT, DATA_SYNTH_USER, FALSE, TRUE); + + /* Add CF_BITMAP. Note: it is synthesized on demand */ + if (!pBmEl && pDibEl) + IntAddFormatedData(pWinStaObj, CF_BITMAP, DATA_SYNTH_KRNL, FALSE, TRUE); + + /* Note: we need to render the DIB or DIBV5 format as soon as possible + because pallette information may change */ + if (!pDibEl && pBmEl) + IntSynthesizeDib(pWinStaObj, pBmEl->hData); +} + +VOID NTAPI +UserEmptyClipboardData(PWINSTATION_OBJECT pWinSta) +{ + unsigned i; + PCLIP pElement; + + for (i = 0; i < pWinSta->cNumClipFormats; ++i) + { + pElement = &pWinSta->pClipBase[i]; + IntFreeElementData(pElement); + } + + if(pWinSta->pClipBase) + ExFreePoolWithTag(pWinSta->pClipBase, USERTAG_CLIPBOARD); + pWinSta->pClipBase = NULL; + pWinSta->cNumClipFormats = 0; +} + +/* UserClipboardFreeWindow is called from co_UserFreeWindow in window.c */ +VOID FASTCALL +UserClipboardFreeWindow(PWND pWindow) +{ + PWINSTATION_OBJECT pWinStaObj; + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + return; + + /* check if clipboard is not locked by this window, if yes, unlock it */ + if (pWindow == pWinStaObj->spwndClipOpen) + { + /* the window that opens the clipboard was destroyed */ + pWinStaObj->spwndClipOpen = NULL; + pWinStaObj->ptiClipLock = NULL; + } + if (pWindow == pWinStaObj->spwndClipOwner) + { + /* the owner window was destroyed */ + pWinStaObj->spwndClipOwner = NULL; + } + /* remove window from window chain */ + if (pWindow == pWinStaObj->spwndClipViewer) + pWinStaObj->spwndClipViewer = NULL; + + ObDereferenceObject(pWinStaObj); +} + +UINT APIENTRY +UserEnumClipboardFormats(UINT fmt) +{ + UINT Ret = 0; + PCLIP pElement; + PWINSTATION_OBJECT pWinStaObj = NULL; + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + /* Check if clipboard has been opened */ + if (!IntIsClipboardOpenByMe(pWinStaObj)) + { + EngSetLastError(ERROR_CLIPBOARD_NOT_OPEN); + goto cleanup; + } + + if (fmt == 0) + { + /* Return first format */ + if (pWinStaObj->pClipBase) + Ret = pWinStaObj->pClipBase[0].fmt; } else { - ce->format = format; - ce->size = size; - ce->hData = hData; - ce->next = ClipboardData; - - ClipboardData = ce; - - IntIncrementSequenceNumber(); - } - - return ce; -} - -/* removes a format and its data from the clipboard */ -BOOL FASTCALL -intRemoveFormatedData(UINT format) -{ - BOOL ret = FALSE; - PCLIPBOARDELEMENT ce = ClipboardData; - PCLIPBOARDELEMENT *link = &ClipboardData; - - if (intIsFormatAvailable(format)) - { - while (ce != NULL) - { - if (ce->format == format) - { - *link = ce->next; - break; - } - - link = &ce->next; - ce = ce->next; - } - - if (ce->hData) - { - ExFreePool(ce->hData); - } - ExFreePool(ce); - ret = TRUE; - } - - return ret; -} - -VOID FASTCALL -IntEmptyClipboardData(VOID) -{ - PCLIPBOARDELEMENT ce = ClipboardData; - PCLIPBOARDELEMENT tmp; - - while(ce) - { - tmp = ce->next; - if (ce->hData) - { - ExFreePool(ce->hData); - } - ExFreePool(ce); - ce = tmp; - } - - ClipboardData = NULL; -} - -/*==============================================================*/ - -HANDLE FASTCALL -renderBITMAPfromDIB(LPBYTE pDIB) -{ - HDC hdc; - HBITMAP hbitmap; - PBITMAPINFO pBmi, pConvertedBmi = NULL; - NTSTATUS Status ; - UINT offset = 0; /* Stupid compiler */ - - pBmi = (BITMAPINFO*)pDIB; - - //hdc = UserGetDCEx(NULL, NULL, DCX_USESTYLE); - hdc = UserGetDCEx(ClipboardWindow, NULL, DCX_USESTYLE); - - /* Probe it */ - _SEH2_TRY - { - ProbeForRead(&pBmi->bmiHeader.biSize, sizeof(DWORD), 1); - ProbeForRead(pBmi, pBmi->bmiHeader.biSize, 1); - ProbeForRead(pBmi, DIB_BitmapInfoSize(pBmi, DIB_RGB_COLORS), 1); - pConvertedBmi = DIB_ConvertBitmapInfo(pBmi, DIB_RGB_COLORS); - if(!pConvertedBmi) - { - Status = STATUS_INVALID_PARAMETER; - } - else - { - offset = DIB_BitmapInfoSize((BITMAPINFO*)pBmi, DIB_RGB_COLORS); - ProbeForRead(pDIB + offset, pConvertedBmi->bmiHeader.biSizeImage, 1); - } - } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - Status = _SEH2_GetExceptionCode(); - } - _SEH2_END - - if(!NT_SUCCESS(Status)) - { - UserReleaseDC(ClipboardWindow, hdc, FALSE); - return NULL; - } - - hbitmap = GreCreateDIBitmapInternal(hdc, - pConvertedBmi->bmiHeader.biWidth, - pConvertedBmi->bmiHeader.biHeight, - CBM_INIT, - pDIB+offset, - pConvertedBmi, - DIB_RGB_COLORS, - 0, - 0); - //UserReleaseDC(NULL, hdc, FALSE); - UserReleaseDC(ClipboardWindow, hdc, FALSE); - - DIB_FreeConvertedBitmapInfo(pConvertedBmi, pBmi); - - return hbitmap; -} - -BOOL FASTCALL -canSinthesize(UINT format) -{ - BOOL ret = FALSE; - - switch(format) - { - case CF_BITMAP: - case CF_METAFILEPICT: - ret = TRUE; - } - - return ret; -} - -/* returns the size of the sinthesized data */ -DWORD FASTCALL -synthesizeData(UINT format) -{ - DWORD ret = 0; - - synthesizedData = NULL; - synthesizedDataSize = 0; - - if (!canSinthesize(format)) - { - return 0; - } - - switch (format) - { - case CF_BITMAP: - { - break; - } - - case CF_METAFILEPICT: - { - break; - } - } - - ret = 1; - - return ret; -} - -VOID FASTCALL -freeSynthesizedData(VOID) -{ - ExFreePool(synthesizedData); -} - -/*==============================================================*/ - -BOOL FASTCALL -intIsClipboardOpenByMe(VOID) -{ - /* check if we open the clipboard */ - if (ClipboardThread && ClipboardThread == PsGetCurrentThreadWin32Thread()) - { - /* yes, we got a thread and its the same that opens the clipboard */ - return TRUE; - - } - /* will fail if not thread (closed) or not open by me*/ - return FALSE; -} - -/* IntClipboardFreeWindow it's called when a window was destroyed */ -VOID FASTCALL -IntClipboardFreeWindow(PWND window) -{ - /* called from co_UserFreeWindow in window.c */ - /* check if clipboard is not locked by this window, if yes, unlock it */ - if (ClipboardThread == PsGetCurrentThreadWin32Thread()) - { - /* the window that opens the clipboard was destroyed */ - ClipboardThread = NULL; - ClipboardWindow = NULL; - //TODO: free clipboard - } - if (window == ClipboardOwnerWindow) - { - /* the owner window was destroyed */ - ClipboardOwnerWindow = NULL; - ClipboardOwnerThread = NULL; - } - /* remove window from window chain */ - if (IntIsWindowInChain(window)) - { - PCLIPBOARDCHAINELEMENT w = IntRemoveWindowFromChain(window); - if (w) - { - ExFreePool(w); - } - } + /* Return next format */ + pElement = IntIsFormatAvailable(pWinStaObj, fmt); + ++pElement; + if (pElement < &pWinStaObj->pClipBase[pWinStaObj->cNumClipFormats]) + Ret = pElement->fmt; + } + +cleanup: + if(pWinStaObj) + ObDereferenceObject(pWinStaObj); + + return Ret; } BOOL APIENTRY NtUserOpenClipboard(HWND hWnd, DWORD Unknown1) { - - PWND Window; - BOOL ret = FALSE; + PWND pWindow = NULL; + BOOL bRet = FALSE; + PWINSTATION_OBJECT pWinStaObj = NULL; UserEnterExclusive(); - sendDrawClipboardMsg = FALSE; - recentlySetClipboard = FALSE; - - if (ClipboardThread) - { - /* clipboard is already open */ - if (ClipboardThread == PsGetCurrentThreadWin32Thread()) - { - if (ClipboardOwnerWindow) - { - if (ClipboardOwnerWindow->head.h == hWnd) - { - ret = TRUE; - } - } - else - { - if (hWnd == NULL) - { - ret = TRUE; - } - } - } - } - else - { - - if (hWnd != NULL) - { - Window = UserGetWindowObject(hWnd); - - if (Window != NULL) - { - ClipboardWindow = Window; - ClipboardThread = PsGetCurrentThreadWin32Thread(); - ret = TRUE; - } - else - { - ClipboardWindow = NULL; - ClipboardThread = NULL; - ClipboardOwnerWindow = NULL; - ClipboardOwnerThread = NULL; - } - } - else - { - ClipboardWindow = NULL; - ClipboardThread = PsGetCurrentThreadWin32Thread(); - ret = TRUE; - } - } - - UserLeave(); - - return ret; + if (hWnd) + { + pWindow = UserGetWindowObject(hWnd); + if (!pWindow) + { + EngSetLastError(ERROR_INVALID_WINDOW_HANDLE); + goto cleanup; + } + } + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (pWinStaObj->ptiClipLock) + { + /* Clipboard is already open */ + if (pWinStaObj->spwndClipOpen != pWindow) + { + EngSetLastError(ERROR_ACCESS_DENIED); + goto cleanup; + } + } + + /* Open clipboard */ + pWinStaObj->spwndClipOpen = pWindow; + pWinStaObj->ptiClipLock = PsGetCurrentThreadWin32Thread(); + bRet = TRUE; + +cleanup: + if (pWinStaObj) + ObDereferenceObject(pWinStaObj); + + UserLeave(); + + return bRet; } BOOL APIENTRY NtUserCloseClipboard(VOID) { - BOOL ret = FALSE; + BOOL bRet = FALSE; + PWINSTATION_OBJECT pWinStaObj = NULL; UserEnterExclusive(); - if (intIsClipboardOpenByMe()) - { - ClipboardWindow = NULL; - ClipboardThread = NULL; - ret = TRUE; - } - else + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (!IntIsClipboardOpenByMe(pWinStaObj)) { EngSetLastError(ERROR_CLIPBOARD_NOT_OPEN); - } - - recentlySetClipboard = FALSE; - - UserLeave(); - - if (sendDrawClipboardMsg && WindowsChain) - { - /* only send message to the first window in the chain, then they'll do the chain */ - /* commented because it makes a crash in co_MsqSendMessage - ASSERT(WindowsChain->window); - ASSERT(WindowsChain->window->hSelf); - ERR("Clipboard: sending WM_DRAWCLIPBOARD to %p\n", WindowsChain->window->hSelf); - co_IntSendMessage(WindowsChain->window->hSelf, WM_DRAWCLIPBOARD, 0, 0); - */ - } - - return ret; + goto cleanup; + } + + /* Clipboard is no longer open */ + pWinStaObj->spwndClipOpen = NULL; + pWinStaObj->ptiClipLock = NULL; + bRet = TRUE; + + if (pWinStaObj->fClipboardChanged) + { + /* Add synthesized formats - they are rendered later */ + IntAddSynthesizedFormats(pWinStaObj); + + /* Notify viewer windows in chain */ + if (pWinStaObj->spwndClipViewer) + { + TRACE("Clipboard: sending WM_DRAWCLIPBOARD to %p\n", pWinStaObj->spwndClipViewer->head.h); + co_IntSendMessage(pWinStaObj->spwndClipViewer->head.h, WM_DRAWCLIPBOARD, 0, 0); + } + + pWinStaObj->fClipboardChanged = FALSE; + } + +cleanup: + if (pWinStaObj) + ObDereferenceObject(pWinStaObj); + + UserLeave(); + + return bRet; } HWND APIENTRY NtUserGetOpenClipboardWindow(VOID) { - HWND ret = NULL; + HWND hWnd = NULL; + PWINSTATION_OBJECT pWinStaObj; UserEnterShared(); - if (ClipboardWindow) - { - ret = ClipboardWindow->head.h; - } - - UserLeave(); - - return ret; + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (pWinStaObj->spwndClipOpen) + hWnd = pWinStaObj->spwndClipOpen->head.h; + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return hWnd; } BOOL APIENTRY NtUserChangeClipboardChain(HWND hWndRemove, HWND hWndNewNext) { - BOOL ret = FALSE; - PCLIPBOARDCHAINELEMENT w = NULL; - PWND removeWindow; + BOOL bRet = FALSE; + PWND pWindowRemove; + PWINSTATION_OBJECT pWinStaObj; + + TRACE("NtUserChangeClipboardChain(%p, %p)\n", hWndRemove, hWndNewNext); + UserEnterExclusive(); - removeWindow = UserGetWindowObject(hWndRemove); - - if (removeWindow) - { - if ((ret = !!IntIsWindowInChain(removeWindow))) - { - w = IntRemoveWindowFromChain(removeWindow); - if (w) - { - ExFreePool(w); - } - } - } - - if (ret && WindowsChain) - { - // only send message to the first window in the chain, - // then they do the chain - - /* WindowsChain->window may be NULL */ - LPARAM lparam = WindowsChain->window == NULL ? 0 : (LPARAM)WindowsChain->window->head.h; - ERR("Message: WM_CHANGECBCHAIN to %p", WindowsChain->window->head.h); - co_IntSendMessage(WindowsChain->window->head.h, WM_CHANGECBCHAIN, (WPARAM)hWndRemove, lparam); - } - - UserLeave(); - - return ret; + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + pWindowRemove = UserGetWindowObject(hWndRemove); + + if (pWindowRemove && pWinStaObj->spwndClipViewer) + { + if(pWindowRemove == pWinStaObj->spwndClipViewer) + pWinStaObj->spwndClipViewer = UserGetWindowObject(hWndNewNext); + + if(pWinStaObj->spwndClipViewer) + bRet = (BOOL)co_IntSendMessage(pWinStaObj->spwndClipViewer->head.h, WM_CHANGECBCHAIN, (WPARAM)hWndRemove, (LPARAM)hWndNewNext); + } + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return bRet; } DWORD APIENTRY NtUserCountClipboardFormats(VOID) { - DWORD ret = 0; - - if (ClipboardData) - { - ret = IntCountClipboardFormats(); - } - - return ret; -} - -DWORD APIENTRY + DWORD cFormats = 0; + PWINSTATION_OBJECT pWinStaObj = NULL; + + UserEnterShared(); + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + cFormats = pWinStaObj->cNumClipFormats; + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return cFormats; +} + +BOOL APIENTRY NtUserEmptyClipboard(VOID) { - BOOL ret = FALSE; + BOOL bRet = FALSE; + PWINSTATION_OBJECT pWinStaObj; + + TRACE("NtUserEmptyClipboard()\n"); UserEnterExclusive(); - if (intIsClipboardOpenByMe()) - { - if (ClipboardData) - { - IntEmptyClipboardData(); - } - - ClipboardOwnerWindow = ClipboardWindow; - ClipboardOwnerThread = ClipboardThread; - - IntIncrementSequenceNumber(); - - ret = TRUE; + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (IntIsClipboardOpenByMe(pWinStaObj)) + { + UserEmptyClipboardData(pWinStaObj); + + if (pWinStaObj->spwndClipOwner) + { + TRACE("Clipboard: WM_DESTROYCLIPBOARD to %p", pWinStaObj->spwndClipOwner->head.h); + co_IntSendMessageNoWait(pWinStaObj->spwndClipOwner->head.h, WM_DESTROYCLIPBOARD, 0, 0); + } + + pWinStaObj->spwndClipOwner = pWinStaObj->spwndClipOpen; + + pWinStaObj->iClipSequenceNumber++; + + bRet = TRUE; } else { EngSetLastError(ERROR_CLIPBOARD_NOT_OPEN); - } - - if (ret && ClipboardOwnerWindow) - { - TRACE("Clipboard: WM_DESTROYCLIPBOARD to %p", ClipboardOwnerWindow->head.h); - co_IntSendMessageNoWait( ClipboardOwnerWindow->head.h, WM_DESTROYCLIPBOARD, 0, 0); - } - - UserLeave(); - - return ret; -} - -HANDLE APIENTRY -NtUserGetClipboardData(UINT uFormat, PVOID pBuffer) -{ - HANDLE ret = NULL; + ERR("Access denied!\n"); + } + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return bRet; +} + +INT APIENTRY +NtUserGetClipboardFormatName(UINT fmt, LPWSTR lpszFormatName, INT cchMaxCount) +{ + INT iRet = 0; UserEnterShared(); - if (intIsClipboardOpenByMe()) - { - /* when Unknown1 is zero, we returns to user32 the data size */ - if (!pBuffer) - { - PCLIPBOARDELEMENT data = intIsFormatAvailable(uFormat); - - if (data) - { - /* format exists in clipboard */ - if (data->size == DATA_DELAYED_RENDER) - { - /* tell owner what data needs to be rendered */ - if (ClipboardOwnerWindow) - { - ASSERT(ClipboardOwnerWindow->head.h); - co_IntSendMessage(ClipboardOwnerWindow->head.h, WM_RENDERFORMAT, (WPARAM)uFormat, 0); - data = intIsFormatAvailable(uFormat); - ASSERT(data->size); - ret = (HANDLE)(ULONG_PTR)data->size; - } - } - else - { - if (data->size == DATA_SYNTHESIZED_RENDER) - { - data->size = synthesizeData(uFormat); - } - - } - ret = (HANDLE)(ULONG_PTR)data->size; - } - else - { - /* there is no data in this format */ - //ret = (HANDLE)FALSE; - } - } - else - { - PCLIPBOARDELEMENT data = intIsFormatAvailable(uFormat); - - if (data) - { - if (data->size == DATA_DELAYED_RENDER) - { - // we rendered it in 1st call of getclipboard data - } - else - { - if (data->size == DATA_SYNTHESIZED_RENDER) - { - if (uFormat == CF_BITMAP) - { - /* BITMAP & METAFILEs returns a GDI handle */ - PCLIPBOARDELEMENT data = intIsFormatAvailable(CF_DIB); - if (data) - { - ret = renderBITMAPfromDIB(data->hData); - } - } - else - { - ret = (HANDLE)pBuffer; - - _SEH2_TRY - { - ProbeForWrite(pBuffer, synthesizedDataSize, 1); - memcpy(pBuffer, (PCHAR)synthesizedData, synthesizedDataSize); - } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - ret = NULL; - } - _SEH2_END - - freeSynthesizedData(); - } - } - else - { - ret = (HANDLE)pBuffer; - - _SEH2_TRY - { - ProbeForWrite(pBuffer, data->size, 1); - memcpy(pBuffer, (PCHAR)data->hData, data->size); - } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - ret = NULL; - } - _SEH2_END - } - } - - } - - } - } - else - { - EngSetLastError(ERROR_CLIPBOARD_NOT_OPEN); - } - - UserLeave(); - - return ret; -} - -INT APIENTRY -NtUserGetClipboardFormatName(UINT format, PUNICODE_STRING FormatName, - INT cchMaxCount) -{ - UNICODE_STRING sFormatName; - INT ret = 0; - /* if the format is built-in we fail */ - if (format < 0xc000) + if (fmt < 0xc000) { /* registetrated formats are >= 0xc000 */ - return 0; - } - - if((cchMaxCount < 1) || !FormatName) + goto cleanup; + } + + if (cchMaxCount < 1 || !lpszFormatName) { EngSetLastError(ERROR_INVALID_PARAMETER); - return 0; + goto cleanup; } _SEH2_TRY { - ProbeForWriteUnicodeString(FormatName); - sFormatName = *(volatile UNICODE_STRING *)FormatName; - ProbeForWrite(sFormatName.Buffer, sFormatName.MaximumLength, 1); - - ret = IntGetAtomName((RTL_ATOM)format, sFormatName.Buffer, cchMaxCount * sizeof(WCHAR)); - - if (ret >= 0) - { - ret = ret / sizeof(WCHAR); - sFormatName.Length = ret; - } - else - { - ret = 0; - } + ProbeForWrite(lpszFormatName, cchMaxCount * sizeof(WCHAR), 1); + + iRet = IntGetAtomName((RTL_ATOM)fmt, + lpszFormatName, + cchMaxCount * sizeof(WCHAR)); + iRet /= sizeof(WCHAR); } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { @@ -769,432 +630,479 @@ } _SEH2_END; - return ret; +cleanup: + UserLeave(); + + return iRet; } HWND APIENTRY NtUserGetClipboardOwner(VOID) { - HWND ret = NULL; + HWND hWnd = NULL; + PWINSTATION_OBJECT pWinStaObj; UserEnterShared(); - if (ClipboardOwnerWindow) - { - ret = ClipboardOwnerWindow->head.h; - } - - UserLeave(); - - return ret; + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (pWinStaObj->spwndClipOwner) + hWnd = pWinStaObj->spwndClipOwner->head.h; + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return hWnd; } HWND APIENTRY NtUserGetClipboardViewer(VOID) { - HWND ret = NULL; + HWND hWnd = NULL; + PWINSTATION_OBJECT pWinStaObj; UserEnterShared(); - if (WindowsChain) - { - ret = WindowsChain->window->head.h; - } - - UserLeave(); - - return ret; + pWinStaObj = IntGetWinStaForCbAccess(); + if(!pWinStaObj) + goto cleanup; + + if (pWinStaObj->spwndClipViewer) + hWnd = pWinStaObj->spwndClipViewer->head.h; + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return hWnd; } INT APIENTRY NtUserGetPriorityClipboardFormat(UINT *paFormatPriorityList, INT cFormats) { - INT i; - UINT *priorityList; - INT ret = 0; - - UserEnterExclusive(); - - _SEH2_TRY - { - if (IntCountClipboardFormats() == 0) - { - ret = 0; - } - else - { - ProbeForRead(paFormatPriorityList, cFormats, sizeof(UINT)); - - priorityList = paFormatPriorityList; - - ret = -1; - - for (i = 0; i < cFormats; i++) + INT i, iRet = 0; + PWINSTATION_OBJECT pWinStaObj; + + UserEnterShared(); + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (pWinStaObj->pClipBase == NULL) + { + iRet = 0; + } + else + { + _SEH2_TRY + { + ProbeForRead(paFormatPriorityList, cFormats * sizeof(UINT), sizeof(UINT)); + + iRet = -1; + + for (i = 0; i < cFormats; ++i) { - if (intIsFormatAvailable(priorityList[i])) + if (IntIsFormatAvailable(pWinStaObj, paFormatPriorityList[i])) { - ret = priorityList[i]; + iRet = paFormatPriorityList[i]; break; } } - + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + SetLastNtError(_SEH2_GetExceptionCode()); + } + _SEH2_END; + } + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return iRet; + +} + +BOOL APIENTRY +NtUserIsClipboardFormatAvailable(UINT fmt) +{ + BOOL bRet = FALSE; + PWINSTATION_OBJECT pWinStaObj; + + TRACE("NtUserIsClipboardFormatAvailable(%x)\n", fmt); + + UserEnterShared(); + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (IntIsFormatAvailable(pWinStaObj, fmt)) + bRet = TRUE; + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return bRet; +} + +HANDLE APIENTRY +NtUserGetClipboardData(UINT fmt, PGETCLIPBDATA pgcd) +{ + NTSTATUS Status = STATUS_SUCCESS; + HANDLE hRet = NULL; + PCLIP pElement; + PWINSTATION_OBJECT pWinStaObj = NULL; + + TRACE("NtUserGetClipboardData(%x, %p)\n", fmt, pgcd); + + UserEnterShared(); + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + if (!IntIsClipboardOpenByMe(pWinStaObj)) + { + EngSetLastError(ERROR_CLIPBOARD_NOT_OPEN); + goto cleanup; + } + + pElement = IntIsFormatAvailable(pWinStaObj, fmt); + if (pElement && IS_DATA_DELAYED(pElement) && pWinStaObj->spwndClipOwner) + { + /* send WM_RENDERFORMAT message */ + pWinStaObj->fInDelayedRendering = TRUE; + co_IntSendMessage(pWinStaObj->spwndClipOwner->head.h, WM_RENDERFORMAT, (WPARAM)fmt, 0); + pWinStaObj->fInDelayedRendering = FALSE; + + /* data should be in clipboard now */ + pElement = IntIsFormatAvailable(pWinStaObj, fmt); + } + + if (!pElement || IS_DATA_DELAYED(pElement)) + goto cleanup; + + + if (IS_DATA_SYNTHESIZED(pElement)) + { + /* Note: data is synthesized in usermode */ + /* TODO: Add more formats */ + switch (fmt) + { + case CF_UNICODETEXT: + case CF_TEXT: + case CF_OEMTEXT: + pElement = IntIsFormatAvailable(pWinStaObj, CF_UNICODETEXT); + if (IS_DATA_SYNTHESIZED(pElement)) + pElement = IntIsFormatAvailable(pWinStaObj, CF_TEXT); + if (IS_DATA_SYNTHESIZED(pElement)) + pElement = IntIsFormatAvailable(pWinStaObj, CF_OEMTEXT); + break; + case CF_BITMAP: + IntSynthesizeBitmap(pWinStaObj, pElement); + break; + default: + ASSERT(FALSE); + } + } + + _SEH2_TRY + { + ProbeForWrite(pgcd, sizeof(*pgcd), 1); + pgcd->uFmtRet = pElement->fmt; + pgcd->fGlobalHandle = pElement->fGlobalHandle; + + /* Text and bitmap needs more data */ + if (fmt == CF_TEXT) + { + PCLIP pLocaleEl; + + pLocaleEl = IntIsFormatAvailable(pWinStaObj, CF_LOCALE); + if (pLocaleEl && !IS_DATA_DELAYED(pLocaleEl)) + pgcd->hLocale = pLocaleEl->hData; + } + else if (fmt == CF_BITMAP) + { + PCLIP pPaletteEl; + + pPaletteEl = IntIsFormatAvailable(pWinStaObj, CF_PALETTE); + if (pPaletteEl && !IS_DATA_DELAYED(pPaletteEl)) + pgcd->hPalette = pPaletteEl->hData; } } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { - SetLastNtError(_SEH2_GetExceptionCode()); - } - _SEH2_END; - - UserLeave(); - - return ret; - -} - -BOOL APIENTRY -NtUserIsClipboardFormatAvailable(UINT format) -{ - BOOL ret = FALSE; - - UserEnterShared(); - - ret = (intIsFormatAvailable(format) != NULL); - - UserLeave(); - - return ret; -} - - + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END + + if (!NT_SUCCESS(Status)) + { + SetLastNtError(Status); + goto cleanup; + } + + hRet = pElement->hData; + +cleanup: + if(pWinStaObj) + ObDereferenceObject(pWinStaObj); + + UserLeave(); + + TRACE("Ret: %p\n", hRet); + + return hRet; +} HANDLE APIENTRY -NtUserSetClipboardData(UINT uFormat, HANDLE hMem, DWORD size) -{ - HANDLE hCBData = NULL; - UNICODE_STRING unicodeString; - OEM_STRING oemString; - ANSI_STRING ansiString; +NtUserSetClipboardData(UINT fmt, HANDLE hData, PSETCLIPBDATA scd) +{ + HANDLE hRet = NULL; + NTSTATUS Status = STATUS_SUCCESS; + PWINSTATION_OBJECT pWinStaObj = NULL; + BOOLEAN fGlobalHandle = FALSE; + + TRACE("NtUserSetClipboardData(%x %p %p)\n", fmt, hData, scd); UserEnterExclusive(); - /* to place data here the we need to be the owner */ - if (ClipboardOwnerThread == PsGetCurrentThreadWin32Thread()) - { - PCLIPBOARDELEMENT data = intIsFormatAvailable(uFormat); - if (data) - { - - if (data->size == DATA_DELAYED_RENDER) - { - intRemoveFormatedData(uFormat); - } - else - { - // we already have this format on clipboard - goto exit_setCB; - } - } - - if (hMem) - { - _SEH2_TRY - { - ProbeForRead(hMem, size, 1); - } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - SetLastNtError(_SEH2_GetExceptionCode()); - _SEH2_YIELD(goto exit_setCB); - } - _SEH2_END; - - if (intIsClipboardOpenByMe()) - { - delayedRender = FALSE; - } - - if (!canSinthesize(uFormat)) - { - hCBData = ExAllocatePoolWithTag(PagedPool, size, USERTAG_CLIPBOARD); - memcpy(hCBData, hMem, size); - intAddFormatedData(uFormat, hCBData, size); - ERR("Data stored\n"); - } - - sendDrawClipboardMsg = TRUE; - recentlySetClipboard = TRUE; - lastEnumClipboardFormats = uFormat; - - /* conversions */ - switch (uFormat) - { - case CF_TEXT: - { - //TODO : sinthesize CF_UNICODETEXT & CF_OEMTEXT - // CF_TEXT -> CF_UNICODETEXT - ansiString.Buffer = hCBData; - ansiString.Length = size; - RtlAnsiStringToUnicodeString(&unicodeString, &ansiString, TRUE); - intAddFormatedData(CF_UNICODETEXT, unicodeString.Buffer, unicodeString.Length * sizeof(WCHAR)); - // CF_TEXT -> CF_OEMTEXT - RtlUnicodeStringToOemString(&oemString, &unicodeString, TRUE); - intAddFormatedData(CF_OEMTEXT, oemString.Buffer, oemString.Length); - //HKCU\Control Panel\International\Locale - //intAddFormatedData(CF_LOCALE, oemString.Buffer, oemString.Length); - break; - } - case CF_UNICODETEXT: - { - //TODO : sinthesize CF_TEXT & CF_OEMTEXT - //CF_UNICODETEXT -> CF_TEXT - unicodeString.Buffer = hCBData; - unicodeString.Length = size; - RtlUnicodeStringToAnsiString(&ansiString, &unicodeString, TRUE); - intAddFormatedData(CF_TEXT, ansiString.Buffer, ansiString.Length); - //CF_UNICODETEXT -> CF_OEMTEXT - RtlUnicodeStringToOemString(&oemString, &unicodeString, TRUE); - intAddFormatedData(CF_OEMTEXT, oemString.Buffer, oemString.Length); - break; - } - case CF_OEMTEXT: - { - //TODO : sinthesize CF_TEXT & CF_UNICODETEXT - //CF_OEMTEXT -> CF_UNICODETEXT - oemString.Buffer = hCBData; - oemString.Length = size; - RtlOemStringToUnicodeString(&unicodeString, &oemString, TRUE); - intAddFormatedData(CF_UNICODETEXT, unicodeString.Buffer, unicodeString.Length * sizeof(WCHAR)); - //CF_OEMTEXT -> CF_TEXT - RtlUnicodeStringToAnsiString(&ansiString, &unicodeString, TRUE); - intAddFormatedData(CF_TEXT, ansiString.Buffer, ansiString.Length); - break; - } - case CF_BITMAP: - { - // we need to render the DIB or DIBV5 format as soon as possible - // because pallette information may change - - HDC hdc; - BITMAP bm; - BITMAPINFO bi; - SURFACE *psurf; - - hdc = UserGetDCEx(NULL, NULL, DCX_USESTYLE); - - - psurf = SURFACE_ShareLockSurface(hMem); - BITMAP_GetObject(psurf, sizeof(BITMAP), (PVOID)&bm); - if(psurf) - { - SURFACE_ShareUnlockSurface(psurf); - } - - bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bi.bmiHeader.biWidth = bm.bmWidth; - bi.bmiHeader.biHeight = bm.bmHeight; - bi.bmiHeader.biPlanes = 1; - bi.bmiHeader.biBitCount = bm.bmPlanes * bm.bmBitsPixel; - bi.bmiHeader.biCompression = BI_RGB; - bi.bmiHeader.biSizeImage = 0; - bi.bmiHeader.biXPelsPerMeter = 0; - bi.bmiHeader.biYPelsPerMeter = 0; - bi.bmiHeader.biClrUsed = 0; - - NtGdiGetDIBitsInternal(hdc, hMem, 0, bm.bmHeight, NULL, &bi, DIB_RGB_COLORS, 0, 0); - - size = bi.bmiHeader.biSizeImage + sizeof(BITMAPINFOHEADER); - - hCBData = ExAllocatePoolWithTag(PagedPool, size, USERTAG_CLIPBOARD); - memcpy(hCBData, &bi, sizeof(BITMAPINFOHEADER)); - - NtGdiGetDIBitsInternal(hdc, hMem, 0, bm.bmHeight, (LPBYTE)hCBData + sizeof(BITMAPINFOHEADER), &bi, DIB_RGB_COLORS, 0, 0); - - UserReleaseDC(NULL, hdc, FALSE); - - intAddFormatedData(CF_DIB, hCBData, size); - intAddFormatedData(CF_BITMAP, 0, DATA_SYNTHESIZED_RENDER); - // intAddFormatedData(CF_DIBV5, hCBData, size); - - break; - } - case CF_DIB: - { - intAddFormatedData(CF_BITMAP, 0, DATA_SYNTHESIZED_RENDER); - // intAddFormatedData(CF_DIBV5, hCBData, size); - /* investigate */ - // intAddFormatedData(CF_PALETTE, hCBData, size); - break; - } - case CF_DIBV5: - // intAddFormatedData(CF_BITMAP, hCBData, size); - // intAddFormatedData(CF_PALETTE, hCBData, size); - // intAddFormatedData(CF_DIB, hCBData, size); - break; - case CF_ENHMETAFILE: - // intAddFormatedData(CF_METAFILEPICT, hCBData, size); - break; - case CF_METAFILEPICT: - // intAddFormatedData(CF_ENHMETAFILE, hCBData, size); - break; - } - - } - else - { - // the window provides data in the specified format - delayedRender = TRUE; - sendDrawClipboardMsg = TRUE; - intAddFormatedData(uFormat, NULL, 0); - ERR("SetClipboardData delayed format: %d\n", uFormat); - } - - - } - -exit_setCB: - - UserLeave(); - - return hMem; + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + /* If it's delayed rendering we don't have to open clipboard */ + if ((pWinStaObj->fInDelayedRendering && + pWinStaObj->spwndClipOwner->head.pti != PsGetCurrentThreadWin32Thread()) || + !IntIsClipboardOpenByMe(pWinStaObj)) + { + ERR("Access denied!\n"); + EngSetLastError(ERROR_CLIPBOARD_NOT_OPEN); + goto cleanup; + } + + _SEH2_TRY + { + ProbeForRead(scd, sizeof(*scd), 1); + fGlobalHandle = scd->fGlobalHandle; + if (scd->fIncSerialNumber) + pWinStaObj->iClipSerialNumber++; + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END + + if (!NT_SUCCESS(Status)) + { + SetLastNtError(Status); + goto cleanup; + } + + /* Is it a delayed render? */ + if (hData) + { + /* Is it a bitmap? */ + if (fmt == CF_BITMAP) + { + /* Make bitmap public */ + GreSetObjectOwner(hData, GDI_OBJ_HMGR_PUBLIC); + } + + /* Save data in the clipboard */ + IntAddFormatedData(pWinStaObj, fmt, hData, fGlobalHandle, FALSE); + TRACE("hData stored\n"); + + pWinStaObj->iClipSequenceNumber++; + pWinStaObj->fClipboardChanged = TRUE; + + /* Note: synthesized formats are added in NtUserCloseClipboard */ + } + else + { + /* This is a delayed render */ + IntAddFormatedData(pWinStaObj, fmt, DATA_DELAYED, FALSE, FALSE); + TRACE("SetClipboardData delayed format: %u\n", fmt); + } + + /* Return hData on success */ + hRet = hData; + +cleanup: + TRACE("NtUserSetClipboardData returns: %p\n", hRet); + + if(pWinStaObj) + ObDereferenceObject(pWinStaObj); + + UserLeave(); + + return hRet; } HWND APIENTRY NtUserSetClipboardViewer(HWND hWndNewViewer) { - HWND ret = NULL; - PCLIPBOARDCHAINELEMENT newWC = NULL; - PWND window; + HWND hWndNext = NULL; + PWINSTATION_OBJECT pWinStaObj = NULL; + PWND pWindow; UserEnterExclusive(); - window = UserGetWindowObject(hWndNewViewer); - - if (window) - { - if ((newWC = IntAddWindowToChain(window))) - { - if (newWC) - { - // newWC->next may be NULL if we are the first window in the chain - if (newWC->next) - { - // return the next HWND available window in the chain - ret = newWC->next->window->head.h; - } - } - } - } - - UserLeave(); - - return ret; -} - -UINT APIENTRY -IntEnumClipboardFormats(UINT uFormat) -{ - UINT ret = 0; - - if (intIsClipboardOpenByMe()) - { - if (uFormat == 0) - { - if (recentlySetClipboard) - { - ret = lastEnumClipboardFormats; - } - else - { - /* return the first available format */ - if (ClipboardData) - { - ret = ClipboardData->format; - } - } - } - else - { - if (recentlySetClipboard) - { - ret = 0; - } - else - { - /* querying nextt available format */ - PCLIPBOARDELEMENT data = intIsFormatAvailable(uFormat); - - if (data) - { - if (data->next) - { - ret = data->next->format; - } - else - { - /* reached the end */ - ret = 0; - } - } - } - - } - } - else - { - EngSetLastError(ERROR_CLIPBOARD_NOT_OPEN); - } - - return ret; -} - -// This number is incremented whenever the contents of the clipboard change -// or the clipboard is emptied. -// If clipboard rendering is delayed, + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + pWindow = UserGetWindowObject(hWndNewViewer); + if (!pWindow) + { + EngSetLastError(ERROR_INVALID_WINDOW_HANDLE); + goto cleanup; + } + + /* Return previous viewer. New viever window should + send messages to rest of the chain */ + if (pWinStaObj->spwndClipViewer) + hWndNext = pWinStaObj->spwndClipViewer->head.h; + + /* Set new viewer window */ + pWinStaObj->spwndClipViewer = pWindow; + +cleanup: + if(pWinStaObj) + ObDereferenceObject(pWinStaObj); + + UserLeave(); + + return hWndNext; +} + +// Sequence number is incremented whenever the contents of the clipboard change +// or the clipboard is emptied. If clipboard rendering is delayed, // the sequence number is not incremented until the changes are rendered. -VOID FASTCALL -IntIncrementSequenceNumber(VOID) -{ - PTHREADINFO pti; - PWINSTATION_OBJECT WinStaObj; - - pti = PsGetCurrentThreadWin32Thread(); - WinStaObj = pti->rpdesk->rpwinstaParent; - - WinStaObj->Clipboard->ClipboardSequenceNumber++; -} DWORD APIENTRY NtUserGetClipboardSequenceNumber(VOID) { - //windowstation sequence number - //if no WINSTA_ACCESSCLIPBOARD access to the window station, - //the function returns zero. - DWORD sn; - - HWINSTA WinSta; - PWINSTATION_OBJECT WinStaObj; - NTSTATUS Status; - - WinSta = UserGetProcessWindowStation(); - - Status = IntValidateWindowStationHandle(WinSta, KernelMode, WINSTA_ACCESSCLIPBOARD, &WinStaObj); - - if (!NT_SUCCESS(Status)) - { - ERR("No WINSTA_ACCESSCLIPBOARD access\n"); - SetLastNtError(Status); - return 0; - } - - sn = WinStaObj->ClipboardSequenceNumber; - - ObDereferenceObject(WinStaObj); - - //local copy - //sn = ClipboardSequenceNumber; - - return sn; + DWORD dwRet = 0; + PWINSTATION_OBJECT pWinStaObj; + + UserEnterShared(); + + pWinStaObj = IntGetWinStaForCbAccess(); + if (!pWinStaObj) + goto cleanup; + + /* Get windowstation sequence number */ + dwRet = (DWORD)pWinStaObj->iClipSequenceNumber; + + ObDereferenceObject(pWinStaObj); + +cleanup: + UserLeave(); + + return dwRet; +} + +HANDLE APIENTRY +NtUserConvertMemHandle( + PVOID pData, + DWORD cbData) +{ + HANDLE hMem = NULL; + PCLIPBOARDDATA pMemObj; + + UserEnterExclusive(); + + /* Create Clipboard data object */ + pMemObj = UserCreateObject(gHandleTable, NULL, &hMem, otClipBoardData, sizeof(CLIPBOARDDATA) + cbData); + if (!pMemObj) + goto cleanup; + + pMemObj->cbData = cbData; + + /* Copy data */ + _SEH2_TRY + { + ProbeForRead(pData, cbData, 1); + memcpy(pMemObj->Data, pData, cbData); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + pMemObj = NULL; + } + _SEH2_END; + + /* If we failed to copy data, remove handle */ + if (!pMemObj) + { + UserDeleteObject(hMem, otClipBoardData); + hMem = NULL; + } + +cleanup: + UserLeave(); + + return hMem; +} + +NTSTATUS APIENTRY +NtUserCreateLocalMemHandle( + HANDLE hMem, + PVOID pData, + DWORD cbData, + DWORD *pcbData) +{ + PCLIPBOARDDATA pMemObj; + NTSTATUS Status = STATUS_SUCCESS; + + UserEnterShared(); + + /* Get Clipboard data object */ + pMemObj = (PCLIPBOARDDATA)UserGetObject(gHandleTable, hMem, otClipBoardData); + if (!pMemObj) + { + Status = STATUS_INVALID_HANDLE; + goto cleanup; + } + + /* Don't overrun */ + if (cbData > pMemObj->cbData) + cbData = pMemObj->cbData; + + /* Copy data to usermode */ + _SEH2_TRY + { + if (pcbData) + { + ProbeForWrite(pcbData, sizeof(*pcbData), 1); + *pcbData = pMemObj->cbData; + } + + ProbeForWrite(pData, cbData, 1); + memcpy(pData, pMemObj->Data, cbData); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + +cleanup: + UserLeave(); + + return Status; } /* EOF */ Modified: trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -106,30 +106,6 @@ { STUB; return 0; -} - -DWORD -APIENTRY -NtUserConvertMemHandle( - DWORD Unknown0, - DWORD Unknown1) -{ - STUB - - return 0; -} - -DWORD -APIENTRY -NtUserCreateLocalMemHandle( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2, - DWORD Unknown3) -{ - STUB - - return 0; } BOOL Modified: trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/simplecall.c [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -313,7 +313,7 @@ } case ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS: /* FIXME: Should use UserEnterShared */ - RETURN(IntEnumClipboardFormats(Param)); + RETURN(UserEnumClipboardFormats(Param)); case ONEPARAM_ROUTINE_CSRSS_GUICHECK: IntUserManualGuiCheck(Param); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/useratom.c [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -69,7 +69,7 @@ Status = RtlQueryAtomInAtomTable(gAtomTable, nAtom, NULL, NULL, lpBuffer, &Size); if (Size < nSize) - *(lpBuffer + Size) = 0; + *(lpBuffer + Size/sizeof(WCHAR)) = 0; if (!NT_SUCCESS(Status)) { SetLastNtError(Status); Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -482,7 +482,7 @@ UserDereferenceObject(Window); - IntClipboardFreeWindow(Window); + UserClipboardFreeWindow(Window); return 0; } Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] Thu Sep 8 16:32:54 2011 @@ -97,18 +97,6 @@ return STATUS_SUCCESS; } -BOOL FASTCALL -IntSetupClipboard(PWINSTATION_OBJECT WinStaObj) -{ - WinStaObj->Clipboard = ExAllocatePoolWithTag(PagedPool, sizeof(CLIPBOARDSYSTEM), TAG_WINSTA); - if (WinStaObj->Clipboard) - { - RtlZeroMemory(WinStaObj->Clipboard, sizeof(CLIPBOARDSYSTEM)); - return TRUE; - } - return FALSE; -} - /* OBJECT CALLBACKS **********************************************************/ VOID APIENTRY @@ -117,6 +105,8 @@ PWINSTATION_OBJECT WinSta = (PWINSTATION_OBJECT)Parameters->Object; TRACE("Deleting window station (0x%X)\n", WinSta); + + UserEmptyClipboardData(WinSta); RtlDestroyAtomTable(WinSta->AtomTable); @@ -240,14 +230,14 @@ Buffer += WINSTA_ROOT_NAME_LENGTH; if (WinStaName != NULL) { - memcpy(Buffer, L"\\", sizeof(WCHAR)); + *Buffer = L'\\'; Buffer ++; memcpy(Buffer, WinStaName->Buffer, WinStaName->Length); if (DesktopName != NULL) { Buffer += WinStaName->Length / sizeof(WCHAR); - memcpy(Buffer, L"\\", sizeof(WCHAR)); + *Buffer = L'\\'; Buffer ++; memcpy(Buffer, DesktopName->Buffer, DesktopName->Length); } @@ -503,11 +493,6 @@ WindowStationObject->Name = WindowStationName; WindowStationObject->ScreenSaverRunning = FALSE; WindowStationObject->FlatMenu = FALSE; - - if (!IntSetupClipboard(WindowStationObject)) - { - ERR("WindowStation: Error Setting up the clipboard!!!\n"); - } if (InputWindowStation == NULL) {
13 years, 3 months
1
0
0
0
[gadamopoulos] 53643: [user32] - Add some more tests for the messages that are sent by SetActiveWindow
by gadamopoulos@svn.reactos.org
Author: gadamopoulos Date: Thu Sep 8 15:53:38 2011 New Revision: 53643 URL:
http://svn.reactos.org/svn/reactos?rev=53643&view=rev
Log: [user32] - Add some more tests for the messages that are sent by SetActiveWindow Modified: trunk/rostests/apitests/user32/SetActiveWindow.c Modified: trunk/rostests/apitests/user32/SetActiveWindow.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/user32/SetActive…
============================================================================== --- trunk/rostests/apitests/user32/SetActiveWindow.c [iso-8859-1] (original) +++ trunk/rostests/apitests/user32/SetActiveWindow.c [iso-8859-1] Thu Sep 8 15:53:38 2011 @@ -9,89 +9,298 @@ #include <wine/test.h> #include <windows.h> +typedef struct _MSG_ENTRY +{ + int iwnd; + UINT msg; +} MSG_ENTRY; + +MSG_ENTRY message_cache[100]; +int message_cache_size = 0; + +HWND hWnd1, hWnd2, hWnd3, hWnd4; + +/* helper functions */ + +static char* get_msg_name(UINT msg) +{ + switch(msg) + { + case WM_NCACTIVATE: return "WM_NCACTIVATE"; + case WM_ACTIVATE: return "WM_ACTIVATE"; + case WM_ACTIVATEAPP: return "WM_ACTIVATEAPP"; + case WM_WINDOWPOSCHANGING: return "WM_WINDOWPOSCHANGING"; + case WM_WINDOWPOSCHANGED: return "WM_WINDOWPOSCHANGED"; + case WM_SETFOCUS: return "WM_SETFOCUS"; + case WM_KILLFOCUS: return "WM_KILLFOCUS"; + case WM_NCPAINT: return "WM_NCPAINT"; + case WM_PAINT: return "WM_PAINT"; + case WM_ERASEBKGND: return "WM_ERASEBKGND"; + case WM_SIZE: return "WM_SIZE"; + case WM_MOVE: return "WM_MOVE"; + case WM_SHOWWINDOW: return "WM_SHOWWINDOW"; + case WM_QUERYNEWPALETTE: return "WM_QUERYNEWPALETTE"; + default: return NULL; + } +} + +static void empty_message_cache() +{ + memset(message_cache, 0, sizeof(message_cache)); + message_cache_size = 0; +} + +void trace_cache() +{ + int i; + char *szMsgName; + + for (i=0; i < message_cache_size; i++) + { + if((szMsgName = get_msg_name(message_cache[i].msg))) + { + trace("hwnd%d, msg:%s\n",message_cache[i].iwnd, szMsgName ); + } + else + { + trace("hwnd%d, msg:%d\n",message_cache[i].iwnd, message_cache[i].msg ); + } + } + trace("\n"); +} + +void compare_cache(char* testname, MSG_ENTRY *msg_chain) +{ + int i = 0; + + while(1) + { + char *szMsgExpected, *szMsgGot; + szMsgExpected = get_msg_name(msg_chain->msg); + szMsgGot = get_msg_name(message_cache[i].msg); + if(szMsgExpected && szMsgGot) + { + ok(message_cache[i].iwnd == msg_chain->iwnd && + message_cache[i].msg == msg_chain->msg, + "%s, message %d: expected %s to hwnd%d and got %s to hwnd%d\n", + testname,i, szMsgExpected, msg_chain->iwnd, szMsgGot, message_cache[i].iwnd); + } + else + { + ok(message_cache[i].iwnd == msg_chain->iwnd && + message_cache[i].msg == msg_chain->msg, + "%s, message %d: expected msg %d to hwnd%d and got msg %d to hwnd%d\n", + testname,i, msg_chain->msg, msg_chain->iwnd, message_cache[i].msg, message_cache[i].iwnd); + } + + if(msg_chain->msg !=0 && msg_chain->iwnd != 0) + { + msg_chain++; + } + else + { + if(i>message_cache_size) + { + break; + } + } + i++; + } +} + +LRESULT CALLBACK OwnerTestProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + if(message < WM_USER && + message != WM_IME_SETCONTEXT && + message != WM_IME_NOTIFY && + message != WM_KEYUP && + message != WM_GETICON && + message != WM_GETTEXT && /* the following messages have to be ignroed because dwm changes the time they are sent */ + message != WM_NCPAINT && + message != WM_ERASEBKGND && + message != WM_PAINT && + message != 0x031f /*WM_DWMNCRENDERINGCHANGED*/) + { + if (message_cache_size<100) + { + int iwnd; + if(hWnd == hWnd1) iwnd = 1; + else if(hWnd == hWnd2) iwnd = 2; + else if(hWnd == hWnd3) iwnd = 3; + else if(hWnd == hWnd4) iwnd = 4; + else + return DefWindowProc(hWnd, message, wParam, lParam); + + message_cache[message_cache_size].iwnd = iwnd; + message_cache[message_cache_size].msg = message; + message_cache_size++; + } + } + + return DefWindowProc(hWnd, message, wParam, lParam); +} + +static void create_test_windows() +{ + WNDCLASSEXW wcex; + + wcex.cbSize = sizeof(WNDCLASSEX); + wcex.style = 0; + wcex.lpfnWndProc = OwnerTestProc; + wcex.cbClsExtra = 0; + wcex.cbWndExtra = 0; + wcex.hInstance = 0; + wcex.hIcon = 0; + wcex.hCursor = LoadCursor(NULL, IDC_ARROW); + wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); + wcex.lpszMenuName = 0; + wcex.lpszClassName = L"ownertest"; + wcex.hIconSm = 0; + + RegisterClassExW(&wcex); + + hWnd1 = CreateWindowW(L"ownertest", L"ownertest", WS_OVERLAPPEDWINDOW, + 20, 20, 300, 300, NULL, NULL, 0, NULL); + + hWnd2 = CreateWindowW(L"ownertest", L"ownertest", WS_OVERLAPPEDWINDOW, + 20, 350, 300, 300, hWnd1, NULL, 0, NULL); + + hWnd3 = CreateWindowW(L"ownertest", L"ownertest", WS_OVERLAPPEDWINDOW, + 200, 200, 300, 300, NULL, NULL, 0, NULL); + + hWnd4 = CreateWindowW(L"ownertest", L"ownertest", WS_OVERLAPPEDWINDOW, + 250, 250, 200, 200, hWnd1, NULL, 0, NULL); + + trace("1:%p, 2:%p, 3:%p,4:%p\n", hWnd1, hWnd2, hWnd3, hWnd4); +} + +/* the actual test begins here */ + +MSG_ENTRY Activate1_chain[]={{4,WM_NCACTIVATE}, + {4,WM_ACTIVATE}, + {4,WM_WINDOWPOSCHANGING}, + {2,WM_WINDOWPOSCHANGING}, + {1,WM_WINDOWPOSCHANGING}, + {1,WM_NCACTIVATE}, + {1,WM_ACTIVATE}, + {4,WM_KILLFOCUS}, + {1,WM_SETFOCUS}, + {0,0}}; + +MSG_ENTRY Activate2_chain[]={{1,WM_NCACTIVATE}, + {1,WM_ACTIVATE}, + {3,WM_WINDOWPOSCHANGING}, + {3,WM_WINDOWPOSCHANGED}, + {3,WM_NCACTIVATE}, + {3,WM_ACTIVATE}, + {1,WM_KILLFOCUS}, + {3,WM_SETFOCUS}, + {0,0}}; + +MSG_ENTRY Activate3_chain[]={{3,WM_NCACTIVATE}, + {3,WM_ACTIVATE}, + {2,WM_WINDOWPOSCHANGING}, + {4,WM_WINDOWPOSCHANGING}, + {1,WM_WINDOWPOSCHANGING}, + {2,WM_WINDOWPOSCHANGED}, + {4,WM_WINDOWPOSCHANGED}, + {1,WM_WINDOWPOSCHANGED}, + {2,WM_NCACTIVATE}, + {2,WM_ACTIVATE}, + {3,WM_KILLFOCUS}, + {2,WM_SETFOCUS}, + {0,0}}; + +MSG_ENTRY Activate4_chain[]={{2,WM_NCACTIVATE}, + {2,WM_ACTIVATE}, + {2,WM_WINDOWPOSCHANGING}, + {4,WM_WINDOWPOSCHANGING}, + {1,WM_WINDOWPOSCHANGING}, + {1,WM_NCACTIVATE}, + {1,WM_ACTIVATE}, + {2,WM_KILLFOCUS}, + {1,WM_SETFOCUS}, + {0,0}}; #define EXPECT_NEXT(hWnd1, hWnd2) ok(GetWindow(hWnd1,GW_HWNDNEXT) == hWnd2, "Expected %p after %p, not %p\n",hWnd2,hWnd1,GetWindow(hWnd1,GW_HWNDNEXT) ) #define EXPECT_ACTIVE(hwnd) ok(GetActiveWindow() == hwnd, "Expected %p to be the active window, not %p\n",hwnd,GetActiveWindow()) +#define FLUSH_MESSAGES(msg) while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); + void Test_SetActiveWindow() { MSG msg; - HWND hWnd1, hWnd2, hWnd3, hWnd4; - - hWnd1 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW, - 20, 20, 300, 300, NULL, NULL, 0, NULL); - - hWnd2 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW, - 20, 350, 300, 300, hWnd1, NULL, 0, NULL); - - hWnd3 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW, - 200, 200, 300, 300, NULL, NULL, 0, NULL); - - hWnd4 = CreateWindowW(L"BUTTON", L"ownertest", WS_OVERLAPPEDWINDOW, - 250, 250, 200, 200, hWnd1, NULL, 0, NULL); + + create_test_windows(); ShowWindow(hWnd1, SW_SHOW); UpdateWindow(hWnd1); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd4,hWnd2); EXPECT_NEXT(hWnd1,hWnd3); ShowWindow(hWnd2, SW_SHOW); UpdateWindow(hWnd2); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd2,hWnd4); EXPECT_NEXT(hWnd4,hWnd1); ShowWindow(hWnd3, SW_SHOW); UpdateWindow(hWnd3); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd3,hWnd2); EXPECT_NEXT(hWnd2,hWnd4); EXPECT_NEXT(hWnd4,hWnd1); ShowWindow(hWnd4, SW_SHOW); UpdateWindow(hWnd4); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd4,hWnd2); EXPECT_NEXT(hWnd2,hWnd1); EXPECT_NEXT(hWnd1,hWnd3); EXPECT_ACTIVE(hWnd4); + empty_message_cache(); + SetActiveWindow(hWnd1); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd4,hWnd2); EXPECT_NEXT(hWnd2,hWnd1); EXPECT_NEXT(hWnd1,hWnd3); EXPECT_ACTIVE(hWnd1); + compare_cache("Activate1", Activate1_chain); + trace_cache(); + empty_message_cache(); SetActiveWindow(hWnd3); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd3,hWnd4); EXPECT_NEXT(hWnd4,hWnd2); EXPECT_NEXT(hWnd2,hWnd1); EXPECT_ACTIVE(hWnd3); + compare_cache("Activate2", Activate2_chain); + trace_cache(); + empty_message_cache(); SetActiveWindow(hWnd2); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd2,hWnd4); EXPECT_NEXT(hWnd4,hWnd1); EXPECT_NEXT(hWnd1,hWnd3); EXPECT_ACTIVE(hWnd2); + compare_cache("Activate3", Activate3_chain); + trace_cache(); + empty_message_cache(); SetActiveWindow(hWnd1); - while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); - + FLUSH_MESSAGES(msg); EXPECT_NEXT(hWnd2,hWnd4); EXPECT_NEXT(hWnd4,hWnd1); EXPECT_NEXT(hWnd1,hWnd3); EXPECT_ACTIVE(hWnd1); + compare_cache("Activate4", Activate4_chain); + trace_cache(); + empty_message_cache(); } START_TEST(SetActiveWindow)
13 years, 3 months
1
0
0
0
[rharabien] 53642: [WIN32K] - Simplify accelerators code a bit - Set last error in NtUserCopyAcceleratorTable - Fix user32:resource winetest regression
by rharabien@svn.reactos.org
Author: rharabien Date: Thu Sep 8 14:13:19 2011 New Revision: 53642 URL:
http://svn.reactos.org/svn/reactos?rev=53642&view=rev
Log: [WIN32K] - Simplify accelerators code a bit - Set last error in NtUserCopyAcceleratorTable - Fix user32:resource winetest regression Modified: trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c Modified: trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/accelerator.c [iso-8859-1] Thu Sep 8 14:13:19 2011 @@ -291,19 +291,25 @@ { PACCELERATOR_TABLE Accel; int Ret; - BOOL Done = FALSE; DECLARE_RETURN(int); TRACE("Enter NtUserCopyAcceleratorTable\n"); UserEnterShared(); Accel = UserGetAccelObject(hAccel); - - if ((Entries && (EntriesCount < 1)) || ((hAccel == NULL) || (!Accel))) - { - RETURN(0); - } - + if (!Accel) + { + EngSetLastError(ERROR_INVALID_ACCEL_HANDLE); + RETURN(0); + } + + /* If Entries is NULL return table size */ + if (!Entries) + { + RETURN(Accel->Count); + } + + /* Don't overrun */ if (Accel->Count < EntriesCount) EntriesCount = Accel->Count; @@ -313,20 +319,11 @@ { ProbeForWrite(Entries, EntriesCount*sizeof(Entries[0]), 4); - while (!Done) + for (Ret = 0; Ret < EntriesCount; Ret++) { - if (Entries) - { - Entries[Ret].fVirt = Accel->Table[Ret].fVirt & 0x7f; - Entries[Ret].key = Accel->Table[Ret].key; - Entries[Ret].cmd = Accel->Table[Ret].cmd; - - if(Ret + 1 == EntriesCount) Done = TRUE; - } - - if((Accel->Table[Ret].fVirt & 0x80) != 0) Done = TRUE; - - Ret++; + Entries[Ret].fVirt = Accel->Table[Ret].fVirt; + Entries[Ret].key = Accel->Table[Ret].key; + Entries[Ret].cmd = Accel->Table[Ret].cmd; } } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) @@ -360,7 +357,7 @@ Entries, EntriesCount); UserEnterExclusive(); - if (!Entries || EntriesCount < 1) + if (!Entries || EntriesCount <= 0) { SetLastNtError(STATUS_INVALID_PARAMETER); RETURN( (HACCEL) NULL ); @@ -375,57 +372,51 @@ } Accel->Count = EntriesCount; - if (Accel->Count > 0) - { - Accel->Table = ExAllocatePoolWithTag(PagedPool, EntriesCount * sizeof(ACCEL), USERTAG_ACCEL); - if (Accel->Table == NULL) - { - UserDereferenceObject(Accel); - UserDeleteObject(hAccel, otAccel); - SetLastNtError(STATUS_NO_MEMORY); - RETURN( (HACCEL) NULL); - } - - _SEH2_TRY - { - ProbeForRead(Entries, EntriesCount * sizeof(ACCEL), 4); - - for (Index = 0; Index < EntriesCount; Index++) - { - Accel->Table[Index].fVirt = Entries[Index].fVirt&0x7f; - if(Accel->Table[Index].fVirt & FVIRTKEY) - { - Accel->Table[Index].key = Entries[Index].key; - } - else - { - RtlMultiByteToUnicodeN(&Accel->Table[Index].key, - sizeof(WCHAR), - NULL, - (PCSTR)&Entries[Index].key, - sizeof(CHAR)); - } - - Accel->Table[Index].cmd = Entries[Index].cmd; - } - } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - Status = _SEH2_GetExceptionCode(); - } - _SEH2_END; - - if (!NT_SUCCESS(Status)) - { - ExFreePoolWithTag(Accel->Table, USERTAG_ACCEL); - UserDereferenceObject(Accel); - UserDeleteObject(hAccel, otAccel); - SetLastNtError(Status); - RETURN( (HACCEL) NULL); - } - - /* Set the end-of-table terminator. */ - Accel->Table[EntriesCount - 1].fVirt |= 0x80; + Accel->Table = ExAllocatePoolWithTag(PagedPool, EntriesCount * sizeof(ACCEL), USERTAG_ACCEL); + if (Accel->Table == NULL) + { + UserDereferenceObject(Accel); + UserDeleteObject(hAccel, otAccel); + SetLastNtError(STATUS_NO_MEMORY); + RETURN( (HACCEL) NULL); + } + + _SEH2_TRY + { + ProbeForRead(Entries, EntriesCount * sizeof(ACCEL), 4); + + for (Index = 0; Index < EntriesCount; Index++) + { + Accel->Table[Index].fVirt = Entries[Index].fVirt & 0x7F; + if(Accel->Table[Index].fVirt & FVIRTKEY) + { + Accel->Table[Index].key = Entries[Index].key; + } + else + { + RtlMultiByteToUnicodeN(&Accel->Table[Index].key, + sizeof(WCHAR), + NULL, + (PCSTR)&Entries[Index].key, + sizeof(CHAR)); + } + + Accel->Table[Index].cmd = Entries[Index].cmd; + } + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + if (!NT_SUCCESS(Status)) + { + ExFreePoolWithTag(Accel->Table, USERTAG_ACCEL); + UserDereferenceObject(Accel); + UserDeleteObject(hAccel, otAccel); + SetLastNtError(Status); + RETURN( (HACCEL) NULL); } /* FIXME: Save HandleTable in a list somewhere so we can clean it up again */ @@ -546,10 +537,6 @@ hWnd, hAccel, pUnsafeMessage, 1); RETURN( 1); } - if (((Accel->Table[i].fVirt & 0x80) > 0)) - { - break; - } } RETURN( 0);
13 years, 3 months
1
0
0
0
[cmihail] 53641: [shell32.dll] - Make sure the ParseDisplayName functions make the ppidle parameter NULL whenever that's possible. Scores a wine test. Spotted by Victor Martinez.
by cmihail@svn.reactos.org
Author: cmihail Date: Thu Sep 8 14:07:02 2011 New Revision: 53641 URL:
http://svn.reactos.org/svn/reactos?rev=53641&view=rev
Log: [shell32.dll] - Make sure the ParseDisplayName functions make the ppidle parameter NULL whenever that's possible. Scores a wine test. Spotted by Victor Martinez. Modified: branches/shell32_new-bringup/dll/win32/shell32/shfldr_desktop.cpp branches/shell32_new-bringup/dll/win32/shell32/shfldr_fs.cpp Modified: branches/shell32_new-bringup/dll/win32/shell32/shfldr_desktop.cpp URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
============================================================================== --- branches/shell32_new-bringup/dll/win32/shell32/shfldr_desktop.cpp [iso-8859-1] (original) +++ branches/shell32_new-bringup/dll/win32/shell32/shfldr_desktop.cpp [iso-8859-1] Thu Sep 8 14:07:02 2011 @@ -304,10 +304,16 @@ this, hwndOwner, pbc, lpszDisplayName, debugstr_w(lpszDisplayName), pchEaten, ppidl, pdwAttributes); - if (!lpszDisplayName || !ppidl) + if (!ppidl) return E_INVALIDARG; - *ppidl = 0; + if (!lpszDisplayName) + { + *ppidl = NULL; + return E_INVALIDARG; + } + + *ppidl = NULL; if (pchEaten) *pchEaten = 0; /* strange but like the original */ @@ -333,6 +339,7 @@ else if( (pidlTemp = SHELL32_CreatePidlFromBindCtx(pbc, lpszDisplayName)) ) { *ppidl = pidlTemp; + DbgPrint("[shell32, CDesktopFolder::ParseDisplayName] 1 *ppidl = 0x%x\n", *ppidl); return S_OK; } else @@ -379,7 +386,10 @@ } } - *ppidl = pidlTemp; + if (SUCCEEDED(hr)) + *ppidl = pidlTemp; + else + *ppidl = NULL; TRACE ("(%p)->(-- ret=0x%08x)\n", this, hr); Modified: branches/shell32_new-bringup/dll/win32/shell32/shfldr_fs.cpp URL:
http://svn.reactos.org/svn/reactos/branches/shell32_new-bringup/dll/win32/s…
============================================================================== --- branches/shell32_new-bringup/dll/win32/shell32/shfldr_fs.cpp [iso-8859-1] (original) +++ branches/shell32_new-bringup/dll/win32/shell32/shfldr_fs.cpp [iso-8859-1] Thu Sep 8 14:07:02 2011 @@ -188,8 +188,16 @@ this, hwndOwner, pbc, lpszDisplayName, debugstr_w (lpszDisplayName), pchEaten, ppidl, pdwAttributes); - if (!lpszDisplayName || !ppidl) + if (!ppidl) return E_INVALIDARG; + + if (!lpszDisplayName) + { + *ppidl = NULL; + return E_INVALIDARG; + } + + *ppidl = NULL; if (pchEaten) *pchEaten = 0; /* strange but like the original */
13 years, 3 months
1
0
0
0
← Newer
1
...
24
25
26
27
28
29
30
...
40
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Results per page:
10
25
50
100
200