Compare commits

..

12 Commits

Author SHA1 Message Date
Colin Finck
08db8fdd1f [FOSDEM 2015]
- Import the <msg> code again. reactos.exe doesn't show a "Finish" button as promised, but instead presents you with an unfinished GUI installer.
- Also import the messages. The French translation is copied from reactos.exe, so it isn't as exact as the English or German ones, but it carries the meaning.

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66121
2015-01-30 03:19:25 +00:00
Hermès Bélusca-Maïto
d3c5de2335 [BOOTDATA]: Simplify hybridcd boot menu.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66120
2015-01-30 01:12:55 +00:00
Hermès Bélusca-Maïto
2904a2ade0 Sync with trunk r66118.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66119
2015-01-30 00:47:13 +00:00
Hermès Bélusca-Maïto
16c0d115da [FOSDEM2015-WELCOME]
- Fix compilation
- Fix lang files (should be UTF8 w/o BOM)
- Translate into French
- Do NOT forget that RosBE is now quite incompatible with Windows 2000 !!!

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66117
2015-01-29 23:31:50 +00:00
Colin Finck
fd797a7054 [WELCOME]
- Apply parts of the welcome.c part from r62439 to this branch. Compared to CLT2014, remove the code for handling <msg>, we don't need it anymore.
  This change should go into Trunk if it works well :)
- Create a new French resource file out of the English one to let Hermès translate it to French.

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66116
2015-01-29 22:30:04 +00:00
Colin Finck
d6b2d32c34 [FOSDEM 2015]
Translate the welcome.exe into English and customize all menu entries for the files on the FOSDEM 2015 CD

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66115
2015-01-29 22:10:30 +00:00
Hermès Bélusca-Maïto
f14a0aa80f [FOSDEM2015]: Flatten a bit the hybridcd tree otherwise some problems appear for the livecd (in other words, some parts of the OS do not really support having ROS installed eg. in C:\some_custom_dir\reactos instead of C:\reactos).
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66114
2015-01-29 21:36:54 +00:00
Hermès Bélusca-Maïto
b8ff7aff51 Sync with trunk r66111.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66112
2015-01-29 01:08:58 +00:00
Hermès Bélusca-Maïto
ca05c5f9f2 [FOSDEM2015]
- Update readme.txt with CD contents (à la CLT).
- Add wallpapers (and one based on artwork by Henry Tang, that was already used in the official 0.3.17 release) and activate the fosdem one.
- Fix the autorun path (should be done globally in trunk later on, i.e. after FOSDEM2015 is over).
- Add user-friendliness to the boot menu.

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66111
2015-01-29 01:01:58 +00:00
Colin Finck
347aa122c5 [EXPLORER]
Apply the changes of r66095 for the 0.3.17-FOSDEM2015 release

svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66096
2015-01-26 23:03:07 +00:00
Hermès Bélusca-Maïto
9bfbf0d4a0 Sync to trunk revision 66092.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66093
2015-01-26 21:41:11 +00:00
Hermès Bélusca-Maïto
bc632bd42c Update versioning for FOSDEM.
svn path=/branches/ReactOS-0.3.17-FOSDEM2015/; revision=66090
2015-01-26 19:13:46 +00:00
17039 changed files with 842306 additions and 2191496 deletions

31
reactos/.hgeol Normal file
View File

@@ -0,0 +1,31 @@
[patterns]
**.txt = native
**.cmake = native
**.asm = native
**.S = native
**.cxx = native
**.cpp = native
**.hpp = native
**.hxx = native
**.c = native
**.h = native
**.py = native
**.rc = native
**.html = native
**.bat = native
**.cmd = native
**.mak = native
**makefile = native
**.manifest = native
**.properties = native
**.dsp = native
**.sln = native
**.vcproj = native
**.gen = native
**.bmp = BIN
**.cur = BIN
**.ico = BIN
**.jpg = BIN
**.png = BIN
tgzsrc = LF
scripts/ba = LF

View File

@@ -11,20 +11,10 @@ if(POLICY CMP0026)
cmake_policy(SET CMP0026 OLD)
endif()
if(POLICY CMP0051)
# List TARGET_OBJECTS in SOURCES target property
cmake_policy(SET CMP0051 NEW)
endif()
if(POLICY CMP0058)
# Ninja requires custom command byproducts to be explicit
cmake_policy(SET CMP0058 OLD)
endif()
project(REACTOS)
# Versioning
include(sdk/include/reactos/version.cmake)
include(include/reactos/version.cmake)
# Don't escape preprocessor definition values added via add_definitions
cmake_policy(SET CMP0005 OLD)
@@ -40,9 +30,10 @@ set(CMAKE_SKIP_PREPROCESSED_SOURCE_RULES TRUE)
set(CMAKE_SKIP_ASSEMBLY_SOURCE_RULES TRUE)
set(CMAKE_COLOR_MAKEFILE OFF)
#set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
set(CMAKE_SKIP_INSTALL_RULES ON)
if(NOT DEFINED NEW_STYLE_BUILD)
set(NEW_STYLE_BUILD TRUE)
if(NOT CMAKE_VERSION STREQUAL "2.8.12.1-ReactOS")
set(CMAKE_DISABLE_NINJA_DEPSLOG TRUE)
endif()
if(NOT ARCH)
@@ -57,37 +48,20 @@ string(TOLOWER ${ARCH} ARCH)
# Compile options
if(ARCH STREQUAL "i386")
include(sdk/cmake/config.cmake)
include(cmake/config.cmake)
elseif(ARCH STREQUAL "amd64")
include(sdk/cmake/config-amd64.cmake)
include(cmake/config-amd64.cmake)
elseif(ARCH STREQUAL "arm")
include(sdk/cmake/config-arm.cmake)
include(cmake/config-arm.cmake)
endif()
# Compiler flags handling
include(sdk/cmake/compilerflags.cmake)
include(cmake/compilerflags.cmake)
add_definitions(-D__REACTOS__)
if(MSVC_IDE)
add_compile_flags("/MP")
endif()
# We don't need CMake importlib handling.
# FIXME: Remove the MSVC_IDE condition when the upcoming RosBE lands.
if(NOT MSVC_IDE)
unset(CMAKE_IMPORT_LIBRARY_SUFFIX)
endif()
# Bison and Flex support
# include(sdk/cmake/bison-flex.cmake)
if(NOT CMAKE_CROSSCOMPILING)
if(NEW_STYLE_BUILD)
set(TOOLS_FOLDER ${CMAKE_CURRENT_BINARY_DIR})
endif()
add_definitions(-DTARGET_${ARCH})
if(MSVC)
@@ -98,33 +72,26 @@ if(NOT CMAKE_CROSSCOMPILING)
add_definitions(/D_ALLOW_KEYWORD_MACROS)
endif()
add_definitions(/Dinline=__inline)
else()
add_compile_flags("-fshort-wchar -Wno-multichar")
endif()
include_directories(sdk/include/host)
include_directories(include/host)
if(NOT MSVC)
add_subdirectory(dll/win32/dbghelp)
endif()
add_subdirectory(sdk/tools)
add_subdirectory(sdk/lib)
add_subdirectory(tools)
add_subdirectory(lib)
if(NOT NEW_STYLE_BUILD)
if(NOT MSVC)
export(TARGETS bin2c widl gendib cabman fatten hpp isohybrid mkhive mkisofs obj2bin spec2def geninc rsym mkshelllink utf16le xml2sdb FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
else()
export(TARGETS bin2c widl gendib cabman fatten hpp isohybrid mkhive mkisofs obj2bin spec2def geninc mkshelllink utf16le xml2sdb FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
endif()
if(NOT MSVC)
export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc rsym mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
else()
export(TARGETS bin2c widl gendib cabman cdmake mkhive obj2bin spec2def geninc mkshelllink utf16le FILE ${CMAKE_BINARY_DIR}/ImportExecutables.cmake NAMESPACE native- )
endif()
else()
if(NEW_STYLE_BUILD)
include(sdk/cmake/host-tools.cmake)
endif()
# Print build type
message("-- Build Type: ${CMAKE_BUILD_TYPE}")
# adjust the default behaviour of the FIND_XXX() commands:
# search headers and libraries in the target environment, search
# programs in the host environment
@@ -135,6 +102,15 @@ else()
#useful stuff!
include(CMakeParseArguments)
if(ENABLE_CCACHE)
set(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES OFF)
set(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES OFF)
endif()
# Default to Debug for the build type
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
"Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." FORCE)
# Do some cleanup
file(REMOVE
${REACTOS_BINARY_DIR}/dependencies.graphml
@@ -145,14 +121,13 @@ else()
${REACTOS_BINARY_DIR}/boot/ros_cab.txt
${REACTOS_BINARY_DIR}/boot/ros_cab_target.txt)
if(NOT NEW_STYLE_BUILD)
if(NOT DEFINED REACTOS_BUILD_TOOLS_DIR)
set(REACTOS_BUILD_TOOLS_DIR ${REACTOS_SOURCE_DIR}/build)
endif()
set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
include(${IMPORT_EXECUTABLES})
if(NOT DEFINED REACTOS_BUILD_TOOLS_DIR)
set(REACTOS_BUILD_TOOLS_DIR ${REACTOS_SOURCE_DIR}/build)
endif()
set(IMPORT_EXECUTABLES "${REACTOS_BUILD_TOOLS_DIR}/ImportExecutables.cmake" CACHE FILEPATH "Host executables")
include(${IMPORT_EXECUTABLES})
if(DBG)
add_definitions(-DDBG=1 -D_SEH_ENABLE_TRACE)
else()
@@ -167,7 +142,7 @@ else()
add_definitions(-D_WINKD_=1)
endif()
if(CMAKE_VERSION MATCHES "ReactOS")
if(CMAKE_VERSION STREQUAL "2.8.12.1-ReactOS")
set(PCH 1 CACHE BOOL "Whether to use precompiled headers")
else()
set(PCH 0 CACHE BOOL "Whether to use precompiled headers")
@@ -187,10 +162,7 @@ else()
add_definitions(-D_M_AMD64 -D_AMD64_ -D__x86_64__ -D_WIN64)
elseif(ARCH STREQUAL "arm")
# _M_ARM is already defined by toolchain
add_definitions(-D_ARM_ -D__arm__ -DWIN32)
if(SARCH STREQUAL "omap-zoom2")
add_definitions(-D_ZOOM2_)
endif()
add_definitions(-D_ARM_ -D__arm__)
endif()
# Other
@@ -199,7 +171,7 @@ else()
elseif(ARCH STREQUAL "amd64")
add_definitions(-DUSE_COMPILER_EXCEPTIONS -DNO_UNDERSCORE_PREFIX)
elseif(ARCH STREQUAL "arm")
add_definitions(-DUSE_COMPILER_EXCEPTIONS -DNO_UNDERSCORE_PREFIX)
add_definitions(-DUSE_COMPILER_EXCEPTIONS)
endif()
# Activate support for assembly source files
@@ -209,60 +181,55 @@ else()
enable_language(RC)
# Localization definitions
include(sdk/cmake/localization.cmake)
include(cmake/localization.cmake)
set(I18N_DEFS "")
# This will set I18N_DEFS for later use
set_i18n_language(${I18N_LANG})
# Compiler specific definitions and macros
if(MSVC)
include(sdk/cmake/msvc.cmake)
include(cmake/msvc.cmake)
else()
include(sdk/cmake/gcc.cmake)
include(cmake/gcc.cmake)
endif()
# Generic macros
include(sdk/cmake/CMakeMacros.cmake)
include(cmake/CMakeMacros.cmake)
# IDL macros for widl/midl
# We're using widl now for both MSVC and GCC builds
include(sdk/cmake/widl-support.cmake)
include(cmake/widl-support.cmake)
include_directories(
sdk/include
sdk/include/psdk
sdk/include/dxsdk
${REACTOS_BINARY_DIR}/sdk/include
${REACTOS_BINARY_DIR}/sdk/include/psdk
${REACTOS_BINARY_DIR}/sdk/include/dxsdk
${REACTOS_BINARY_DIR}/sdk/include/ddk
${REACTOS_BINARY_DIR}/sdk/include/reactos
${REACTOS_BINARY_DIR}/sdk/include/reactos/mc
sdk/include/crt
sdk/include/ddk
sdk/include/ndk
sdk/include/reactos
sdk/include/reactos/libs)
include
include/psdk
include/dxsdk
${REACTOS_BINARY_DIR}/include
${REACTOS_BINARY_DIR}/include/psdk
${REACTOS_BINARY_DIR}/include/dxsdk
${REACTOS_BINARY_DIR}/include/reactos
include/crt
include/ddk
include/ndk
include/reactos
include/reactos/libs)
if(ARCH STREQUAL "arm")
include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/arm)
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/arm)
endif()
add_dependency_header()
add_subdirectory(sdk/include/xdk)
add_subdirectory(sdk/include/psdk)
add_subdirectory(sdk/include/dxsdk)
add_subdirectory(sdk/include/reactos/wine)
add_subdirectory(sdk/include/reactos/mc)
add_subdirectory(sdk/include/asm)
add_subdirectory(include/psdk)
add_subdirectory(include/dxsdk)
add_subdirectory(include/reactos/wine)
add_subdirectory(include/reactos/mc)
add_subdirectory(include/asm)
if(NO_ROSSYM)
include(sdk/cmake/baseaddress_dwarf.cmake)
elseif(MSVC)
include(sdk/cmake/baseaddress_msvc.cmake)
include(cmake/baseaddress_dwarf.cmake)
else()
include(sdk/cmake/baseaddress.cmake)
include(cmake/baseaddress.cmake)
endif()
# For MSVC builds, this puts all debug symbols file in the same directory.
@@ -274,21 +241,18 @@ else()
add_subdirectory(dll)
add_subdirectory(drivers)
add_subdirectory(hal)
add_subdirectory(sdk/lib)
add_subdirectory(lib)
add_subdirectory(media)
add_subdirectory(modules)
add_subdirectory(ntoskrnl)
add_subdirectory(subsystems)
add_subdirectory(sdk/tools/wpp)
add_subdirectory(tools/wpp)
add_subdirectory(win32ss)
# Create the registry hives
create_registry_hives()
# Create {bootcd, livecd, bootcdregtest}.lst
create_iso_lists()
file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/sdk/include/reactos)
file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/include/reactos)
add_dependency_footer()
endif()

View File

@@ -13,7 +13,6 @@ Brian Palmer <brianp@sginet.com>
Cameron M. Gutman <cgutman@reactos.org>
Casper S. Hornstrup <chorns@users.sourceforge.net>
Christoph von Wittich <christoph_vw@reactos.org>
Colin Finck <colin@reactos.org>
Daniel Reimer <reimer.daniel@freenet.de>
David Welch <welch@cwcom.net>
Dmitry Chapyshev <dmitry@reactos.org>
@@ -68,7 +67,7 @@ Robert Dickenson <robd@reactos.org>
Royce Mitchell III <royce3@ev1.net>
Samuel Serapi<70>n <samdwise51@gmail.com>
Saveliy Tretiakov <saveliyt@mail.ru>
Stefan Ginsberg <stefan.ginsberg@reactos.org>
Stefan Ginsberg <stefan__100__@hotmail.com>
Steven Edwards <winehacker@gmail.com>
Thomas Weidenmueller <w3seek@users.sourceforge.net>
Timo Kreuzer <timo.kreuzer@reactos.org>

File diff suppressed because it is too large Load Diff

View File

@@ -1,41 +1,28 @@
1. Build environment
--------------------
To build the system it is strongly advised to use the ReactOS Build Environment
(RosBE). Up-to-date versions for Windows and for Unix/GNU-Linux are available
from our download page at: http://www.reactos.org/wiki/Build_Environment/
Alternatively one can use Microsoft Visual C++ (MSVC) version 2010+, together
with separate installations of CMake and the Ninja build utility.
To build the system you need either mingw32 installed on Windows or a mingw32
cross compiler running on unix. You may obtain MinGW binaries that build
ReactOS from http://www.reactos.org/.
2. Building ReactOS
-------------------
A throughout guide for how to build ReactOS can be found at:
http://www.reactos.org/wiki/Building_ReactOS
In the following we only make a quick overview.
2.1 Building the binaries
To build ReactOS run 'ninja' (without the quotes), or alternatively run
'make' if you are using the Make utility, from the top directory.
NOTE: In the other examples listed in the following, similar modification
holds if you are using the Make utility instead of Ninja.
If you are using RosBE, follow on-screen instructions.
To build ReactOS run 'make' (without the quotes) if you are building on Linux
or 'mingw32-make' if you are building on Windows (or ReactOS) from the top
directory. If you are using RosBE, follow on-screen instructions.
2.2 Building a bootable CD image
To build a bootable CD image run 'ninja bootcd' (without the quotes) from the
top directory. This will create a CD image with a filename, ReactOS.iso, in
the top directory.
To build a bootable CD image run 'make bootcd' (without the quotes) if you are
building on Linux or 'mingw32-make bootcd' if you are building on Windows (or
ReactOS) from the top directory. This will create a CD image with a filename,
ReactOS.iso, in the top directory.
3. Installation
---------------
ReactOS can only be installed on a machine that has a FAT16 or FAT32 partition
as the active (bootable) partition. The partition on which ReactOS is to be
@@ -54,13 +41,13 @@ build a bootable CD as described above. Burn the CD image, boot from it, and
follow the instructions to install ReactOS.
If you have an existing ReactOS installation you want to upgrade, then to
install ReactOS after building it, type 'ninja install'. This will create
the directory 'reactos' in the top directory. Copy the contents of this
directory over the existing installation.
install ReactOS after building it, type 'make install' or
'mingw32-make install'. This will create the directory 'reactos' in the top
directory. Copy the contents of this directory over the existing installation.
If you don't want to copy the files manually every time you run a
'ninja install', then you can specify the directory where the files are
to be copied to during installation.
'make install' or 'mingw32-make install', then you can specify the directory
where the files are to be copied to during installation.
Set the ROS_INSTALL environment variable. If you are on Windows this could be
done by:
@@ -71,7 +58,8 @@ If you are on Linux this could be done by:
export ROS_INSTALL=/mnt/windows/reactos
Now run 'ninja install' to install the files to the new location.
Now run 'make install' or 'mingw32-make install' to install the files to the
new location.
3.2 Installation from bootable CD distribution
@@ -80,13 +68,12 @@ To install ReactOS from the bootable CD distribution, extract the archive
contents. Then burn the CD image, boot from it, and follow instructions.
4. Help
-------
5. Help
If you run into problems or have suggestions for making ReactOS better, please
visit the address below. Mailing lists are available for a variety of topics,
bugs should be submitted to JIRA and general chat takes place in the forums,
or #reactos on freenode.
or #reactos on freenode
http://www.reactos.org/

View File

@@ -4,7 +4,7 @@ STRING(REPLACE "/PreLoad.cmake" "" REACTOS_HOME_DIR ${CMAKE_CURRENT_LIST_FILE})
#message("/PreLoad.cmake ... ${REACTOS_HOME_DIR}")
SET(CMAKE_MODULE_PATH "${REACTOS_HOME_DIR}/sdk/cmake" CACHE INTERNAL "")
SET(CMAKE_MODULE_PATH "${REACTOS_HOME_DIR}/cmake" CACHE INTERNAL "")
#message("CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")

View File

@@ -1,32 +1,29 @@
========================
ReactOS<EFBFBD> Version 0.4.x
Updated January 5, 2016
ReactOS Version 0.3.x
Updated Dec 16, 2006
========================
1. What is ReactOS?
-------------------
ReactOS<EFBFBD> is an Open Source effort to develop a quality operating system that is
compatible with applications and drivers written for the Microsoft<66> Windows<77> NT
family of operating systems (NT4, 2000, XP, 2003, Vista, Seven).
ReactOS is an Open Source effort to develop a quality operating system
that is compatible with Windows NT applications and drivers.
The ReactOS project, although currently focused on Windows Server 2003
compatibility, is always keeping an eye toward compatibility with
Windows Vista and future Windows NT releases.
The ReactOS project, although currently focused on Windows XP/2003
drivers compatibility, is always keeping an eye toward compatibility with
older version of Windows NT family ( NT 4.0, 2000 (NT 5.0)) and new
Windows NT releases (Vista, etc). Applications (Win32 API) compatibility
focus is Windows XP.
More information is available at: https://www.reactos.org
More information is available at http://www.reactos.org/.
2. Building ReactOS
-------------------
See the INSTALL file for more details.
3. More information
-------------------
See the media\doc subdirectory for some sparse notes.
4. Who is responsible
---------------------
See the CREDITS file.

View File

@@ -3,13 +3,11 @@ add_subdirectory(atactl)
add_subdirectory(cacls)
add_subdirectory(calc)
add_subdirectory(charmap)
add_subdirectory(clipbrd)
add_subdirectory(cmdutils)
add_subdirectory(control)
add_subdirectory(dxdiag)
add_subdirectory(extrac32)
add_subdirectory(findstr)
add_subdirectory(fltmc)
add_subdirectory(fontview)
add_subdirectory(games)
add_subdirectory(hh)
@@ -20,7 +18,6 @@ add_subdirectory(magnify)
add_subdirectory(mmc)
add_subdirectory(mplay32)
add_subdirectory(msconfig)
add_subdirectory(msconfig_new)
add_subdirectory(mscutils)
add_subdirectory(mspaint)
add_subdirectory(mstsc)
@@ -28,7 +25,6 @@ add_subdirectory(network)
add_subdirectory(notepad)
add_subdirectory(osk)
add_subdirectory(rapps)
add_subdirectory(rapps_new)
add_subdirectory(regedit)
add_subdirectory(regedt32)
add_subdirectory(sc)

View File

@@ -91,14 +91,14 @@ void print_help() {
" will switch device at Scsi2, bus 1, taget_id 1 to UDMA0 mode\n"
" atactl -h -d 30 c1:b0:d0:l0 \n"
" will hide Master (d0:l0) device on secondary (c1:b0) IDE channel\n"
" and lock i/o on this channel for 30 seconds to ensure safety\n"
" and lock i/o on this channel for 30 seconds to ensure safity\n"
" of removal process"
"------\n"
"Device address format:\n"
"\n"
"s<controller id> number of controller in system. Is assigned during hardware\n"
" detection. Usually s0/s1 are ATA Pri/Sec.\n"
" Note, due do NT internal design ATA controllers are represented\n"
" Note, due do NT internal desing ATA controllers are represented\n"
" as SCSI controllers.\n"
"b<bus id> For ATA controllers it is channel number.\n"
" Note, usually onboard controller is represented as 2 legacy\n"
@@ -1283,7 +1283,7 @@ ata_scan(
to.WaitForPhysicalLink = lock;
to.Flags = unhide ? UNIATA_ADD_FLAGS_UNHIDE : 0;
printf("Scanning bus for new devices.\n");
printf("Scaning bus for new devices.\n");
if(lock) {
printf("You have %d seconds to connect device.\n", lock);
}

View File

@@ -1,8 +1,6 @@
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/conutils)
add_executable(cacls cacls.c cacls.rc)
list(APPEND SOURCE cacls.c cacls.rc)
add_executable(cacls ${SOURCE})
set_module_type(cacls win32cui UNICODE)
target_link_libraries(cacls conutils ${PSEH_LIB})
add_importlibs(cacls advapi32 user32 shell32 msvcrt kernel32)
add_cd_file(TARGET cacls DESTINATION reactos/system32 FOR all)

View File

@@ -33,17 +33,155 @@ static GENERIC_MAPPING FileGenericMapping =
};
static VOID
PrintError(DWORD dwError)
static
INT
LengthOfStrResource(IN HINSTANCE hInst,
IN UINT uID)
{
if (dwError == ERROR_SUCCESS)
return;
HRSRC hrSrc;
HGLOBAL hRes;
LPWSTR lpName, lpStr;
ConMsgPuts(StdErr, FORMAT_MESSAGE_FROM_SYSTEM,
NULL, dwError, LANG_USER_DEFAULT);
if (hInst == NULL)
{
hInst = GetModuleHandle(NULL);
}
/* There are always blocks of 16 strings */
lpName = (LPWSTR)MAKEINTRESOURCE((uID >> 4) + 1);
/* Find the string table block */
hrSrc = FindResourceW(hInst, lpName, (LPWSTR)RT_STRING);
if (hrSrc)
{
hRes = LoadResource(hInst, hrSrc);
if (hRes)
{
lpStr = LockResource(hRes);
if (lpStr)
{
UINT x;
/* Find the string we're looking for */
uID &= 0xF; /* position in the block, same as % 16 */
for (x = 0; x < uID; x++)
{
lpStr += (*lpStr) + 1;
}
/* Found the string */
return (int)(*lpStr);
}
}
}
return -1;
}
static BOOL
static
INT
AllocAndLoadString(OUT LPTSTR *lpTarget,
IN HINSTANCE hInst,
IN UINT uID)
{
INT ln;
ln = LengthOfStrResource(hInst,
uID);
if (ln++ > 0)
{
(*lpTarget) = (LPTSTR)HeapAlloc(GetProcessHeap(),
0,
ln * sizeof(TCHAR));
if ((*lpTarget) != NULL)
{
INT Ret;
Ret = LoadString(hInst,
uID,
*lpTarget,
ln);
if (!Ret)
{
HeapFree(GetProcessHeap(),
0,
*lpTarget);
}
return Ret;
}
}
return 0;
}
static
VOID
PrintHelp(VOID)
{
LPTSTR szHelp;
if (AllocAndLoadString(&szHelp,
NULL,
IDS_HELP) != 0)
{
_tprintf(_T("%s"),
szHelp);
HeapFree(GetProcessHeap(),
0,
szHelp);
}
}
static
VOID
PrintErrorMessage(IN DWORD dwError)
{
LPTSTR szError;
if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL,
SUBLANG_DEFAULT),
(LPTSTR)&szError,
0,
NULL) != 0)
{
_tprintf(_T("%s"),
szError);
LocalFree((HLOCAL)szError);
}
}
static
DWORD
LoadAndPrintString(IN HINSTANCE hInst,
IN UINT uID)
{
TCHAR szTemp[255];
DWORD Len;
Len = (DWORD)LoadString(hInst,
uID,
szTemp,
sizeof(szTemp) / sizeof(szTemp[0]));
if (Len != 0)
{
_tprintf(_T("%s"),
szTemp);
}
return Len;
}
static
BOOL
PrintFileDacl(IN LPTSTR FilePath,
IN LPTSTR FileName)
{
@@ -61,8 +199,10 @@ PrintFileDacl(IN LPTSTR FilePath,
return FALSE;
}
_tcscpy(FullFileName, FilePath);
_tcscat(FullFileName, FileName);
_tcscpy(FullFileName,
FilePath);
_tcscat(FullFileName,
FileName);
/* find out how much memory we need */
if (!GetFileSecurity(FullFileName,
@@ -178,7 +318,8 @@ BuildSidString:
}
/* print the file name or space */
ConPrintf(StdOut, L"%s ", FullFileName);
_tprintf(_T("%s "),
FullFileName);
/* attempt to map the SID to a user name */
if (AceIndex == 0)
@@ -194,29 +335,35 @@ BuildSidString:
/* print the domain and/or user if possible, or the SID string */
if (Name != NULL && Domain[0] != _T('\0'))
{
ConPrintf(StdOut, L"%s\\%s:", Domain, Name);
_tprintf(_T("%s\\%s:"),
Domain,
Name);
IndentAccess = (DWORD)_tcslen(Domain) + _tcslen(Name);
}
else
{
LPTSTR DisplayString = (Name != NULL ? Name : SidString);
ConPrintf(StdOut, L"%s:", DisplayString);
_tprintf(_T("%s:"),
DisplayString);
IndentAccess = (DWORD)_tcslen(DisplayString);
}
/* print the ACE Flags */
if (Ace->Header.AceFlags & CONTAINER_INHERIT_ACE)
{
IndentAccess += ConResPuts(StdOut, IDS_ABBR_CI);
IndentAccess += LoadAndPrintString(NULL,
IDS_ABBR_CI);
}
if (Ace->Header.AceFlags & OBJECT_INHERIT_ACE)
{
IndentAccess += ConResPuts(StdOut, IDS_ABBR_OI);
IndentAccess += LoadAndPrintString(NULL,
IDS_ABBR_OI);
}
if (Ace->Header.AceFlags & INHERIT_ONLY_ACE)
{
IndentAccess += ConResPuts(StdOut, IDS_ABBR_IO);
IndentAccess += LoadAndPrintString(NULL,
IDS_ABBR_IO);
}
IndentAccess += 2;
@@ -228,11 +375,13 @@ BuildSidString:
{
if (AccessMask == FILE_ALL_ACCESS)
{
ConResPuts(StdOut, IDS_ABBR_NONE);
LoadAndPrintString(NULL,
IDS_ABBR_NONE);
}
else
{
ConResPuts(StdOut, IDS_DENY);
LoadAndPrintString(NULL,
IDS_DENY);
goto PrintSpecialAccess;
}
}
@@ -240,20 +389,24 @@ BuildSidString:
{
if (AccessMask == FILE_ALL_ACCESS)
{
ConResPuts(StdOut, IDS_ABBR_FULL);
LoadAndPrintString(NULL,
IDS_ABBR_FULL);
}
else if (!(Ace->Mask & (GENERIC_READ | GENERIC_EXECUTE)) &&
AccessMask == (FILE_GENERIC_READ | FILE_EXECUTE))
{
ConResPuts(StdOut, IDS_ABBR_READ);
LoadAndPrintString(NULL,
IDS_ABBR_READ);
}
else if (AccessMask == (FILE_GENERIC_READ | FILE_GENERIC_WRITE | FILE_EXECUTE | DELETE))
{
ConResPuts(StdOut, IDS_ABBR_CHANGE);
LoadAndPrintString(NULL,
IDS_ABBR_CHANGE);
}
else if (AccessMask == FILE_GENERIC_WRITE)
{
ConResPuts(StdOut, IDS_ABBR_WRITE);
LoadAndPrintString(NULL,
IDS_ABBR_WRITE);
}
else
{
@@ -293,32 +446,38 @@ BuildSidString:
{STANDARD_RIGHTS_ALL, IDS_STANDARD_RIGHTS_ALL},
};
ConResPuts(StdOut, IDS_ALLOW);
LoadAndPrintString(NULL,
IDS_ALLOW);
PrintSpecialAccess:
ConResPuts(StdOut, IDS_SPECIAL_ACCESS);
LoadAndPrintString(NULL,
IDS_SPECIAL_ACCESS);
/* print the special access rights */
x = ARRAYSIZE(AccessRights);
x = sizeof(AccessRights) / sizeof(AccessRights[0]);
while (x-- != 0)
{
if ((Ace->Mask & AccessRights[x].Access) == AccessRights[x].Access)
{
ConPrintf(StdOut, L"\n%s ", FullFileName);
for (x2 = 0; x2 < IndentAccess; x2++)
_tprintf(_T("\n%s "),
FullFileName);
for (x2 = 0;
x2 < IndentAccess;
x2++)
{
ConPuts(StdOut, L" ");
_tprintf(_T(" "));
}
ConResPuts(StdOut, AccessRights[x].uID);
LoadAndPrintString(NULL,
AccessRights[x].uID);
}
}
ConPuts(StdOut, L"\n");
_tprintf(_T("\n"));
}
}
ConPuts(StdOut, L"\n");
_tprintf(_T("\n"));
/* free up all resources */
if (Name != NULL)
@@ -382,7 +541,7 @@ GetPathOfFile(LPTSTR FilePath, LPCTSTR pszFiles)
*pch = 0;
if (!GetFullPathName(FilePath, MAX_PATH, FullPath, NULL))
{
PrintError(GetLastError());
PrintErrorMessage(GetLastError());
return FALSE;
}
lstrcpyn(FilePath, FullPath, MAX_PATH);
@@ -390,7 +549,7 @@ GetPathOfFile(LPTSTR FilePath, LPCTSTR pszFiles)
attrs = GetFileAttributes(FilePath);
if (attrs == 0xFFFFFFFF || !(attrs & FILE_ATTRIBUTE_DIRECTORY))
{
PrintError(ERROR_DIRECTORY);
PrintErrorMessage(ERROR_DIRECTORY);
return FALSE;
}
}
@@ -432,7 +591,7 @@ PrintDaclsOfFiles(LPCTSTR pszFiles)
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintError(LastError);
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
@@ -440,21 +599,17 @@ PrintDaclsOfFiles(LPCTSTR pszFiles)
}
}
else
{
break;
}
}
else
{
ConPuts(StdOut, L"\n");
}
_tprintf(_T("\n"));
} while(FindNextFile(hFind, &FindData));
LastError = GetLastError();
FindClose(hFind);
if (LastError != ERROR_NO_MORE_FILES)
{
PrintError(LastError);
PrintErrorMessage(LastError);
return FALSE;
}
@@ -616,7 +771,7 @@ ChangeACLsOfFiles(LPCTSTR pszFiles)
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintError(LastError);
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
@@ -633,7 +788,7 @@ ChangeACLsOfFiles(LPCTSTR pszFiles)
if (LastError != ERROR_NO_MORE_FILES)
{
PrintError(LastError);
PrintErrorMessage(LastError);
return FALSE;
}
@@ -671,7 +826,7 @@ ChangeACLsOfFilesInCurDir(LPCTSTR pszFiles)
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintError(LastError);
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
@@ -688,7 +843,7 @@ ChangeACLsOfFilesInCurDir(LPCTSTR pszFiles)
if (LastError != ERROR_NO_MORE_FILES)
{
PrintError(LastError);
PrintErrorMessage(LastError);
return FALSE;
}
@@ -717,7 +872,7 @@ ChangeACLsOfFilesInCurDir(LPCTSTR pszFiles)
LastError = GetLastError();
if (LastError == ERROR_ACCESS_DENIED)
{
PrintError(LastError);
PrintErrorMessage(LastError);
if (!OptionC)
{
FindClose(hFind);
@@ -734,29 +889,26 @@ ChangeACLsOfFilesInCurDir(LPCTSTR pszFiles)
if (LastError != ERROR_NO_MORE_FILES)
{
PrintError(LastError);
PrintErrorMessage(LastError);
return FALSE;
}
return TRUE;
}
int _tmain(int argc, const TCHAR *argv[])
int
__cdecl
_tmain(int argc, const TCHAR *argv[])
{
INT i;
LPTSTR pch;
BOOL InvalidParameter = FALSE;
/* Initialize the Console Standard Streams */
ConInitStdStreams();
if (argc <= 1)
{
ConResPuts(StdOut, IDS_HELP);
PrintHelp();
return 0;
}
// FIXME: Convert to proper parsing, with support for /?
/*
* parse command line options
*/
@@ -839,8 +991,8 @@ int _tmain(int argc, const TCHAR *argv[])
if (InvalidParameter)
{
PrintError(ERROR_INVALID_PARAMETER);
ConResPuts(StdOut, IDS_HELP);
PrintErrorMessage(ERROR_INVALID_PARAMETER);
PrintHelp();
return 1;
}

View File

@@ -75,9 +75,6 @@
#ifdef LANGUAGE_SQ_AL
#include "lang/sq-AL.rc"
#endif
#ifdef LANGUAGE_TR_TR
#include "lang/tr-TR.rc"
#endif
#ifdef LANGUAGE_UK_UA
#include "lang/uk-UA.rc"
#endif

View File

@@ -23,8 +23,7 @@ CACLS όνομα_αρχείου [/T] [/E] [/C] [/G χρήστης:άδειες [
C Αλλαγή (εγγραφή)\n\
F Πλήρης έλεγχος\n\
/D user Αποτροπή χρήστη από προσπέλαση.\n\
Τα Wildcards μπορούν να χρησιμοποιηθούν για να προσδιορίσουν παραπαπάνω από\n\
ένα αρχεία στην εντολή.\n\
Τα Wildcards μπορούν να χρησιμοποιηθούν για να προσδιορίσουν παραπαπάνω από ένα αρχεία στην εντολή.\n\
Μπορείτε να προσδιορίσετε παρπαάνω από έναν χρήστη στην εντολή.\n\n\
Abbreviations:\n\
CI - Container Inherit.\n\

View File

@@ -18,8 +18,7 @@ CACLS archivo [/T] [/E] [/C] [/G user:perm [...]] [/R usuario [...]]\n\
W Escribir\n\
C Cambiar (escribir)\n\
F Control total\n\
/R usuario Revoca los derechos de acceso al usuario especificado\n\
(unicamente válido con /E).\n\
/R usuario Revoca los derechos de acceso al usuario especificado (unicamente válido con /E).\n\
/P user:perm Reemplaza los derechos de acceso del usuario especificado.\n\
Perm puede ser: N Ninguno\n\
R Leer\n\

View File

@@ -15,8 +15,7 @@ CACLS nomfichier [/T] [/E] [/C] [/G user:perm [...]] [/R user [...]]\n\
W Écriture\n\
C Modification (Écriture)\n\
F Contrôle total\n\
/R user Supprime les droits d'accès de l'utilisateur spécifié\n\
(valide uniquement avec /E).\n\
/R user Supprime les droits d'accès de l'utilisateur spécifié (valide uniquement avec /E).\n\
/P user:perm Remplace les droits d'accès de l'utilisateur spécifié.\n\
Perm peut valoir : N Aucun \n\
R Lecture\n\
@@ -24,8 +23,7 @@ CACLS nomfichier [/T] [/E] [/C] [/G user:perm [...]] [/R user [...]]\n\
C Modification (Écriture)\n\
F Contrôle total\n\
/D user Interdit l'accès à l'utilisateur spécifié.\n\
Il est possible d'utiliser des caractères joker pour sélectionner plus d'un\n\
fichier avec une commande.\n\
Il est possible d'utiliser des caractères joker pour sélectionner plus d'un fichier avec une commande.\n\
Il est possible de spécifier plus d'un utilisateur dans une commande.\n\n\
Abréviations:\n\
CI - Héritage du conteneur.\n\

View File

@@ -2,9 +2,7 @@ LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
STRINGTABLE
BEGIN
IDS_HELP "ACL's (Access Control Lists, toegangslijsten) van bestanden weergeven\n\
of bewerken\n\n\
CACLS bestandsnaam [/T] [/E] [/C] [/G gebr:toeg] [/R gebruiker [...]]\n\
IDS_HELP "ACL's (Access Control Lists, toegangslijsten) van bestanden weergeven\nof bewerken\n\nCACLS bestandsnaam [/T] [/E] [/C] [/G gebr:toeg] [/R gebruiker [...]]\n\
[/P gebr:toeg [...]] [/D gebruiker [...]]\n\
bestandsnaam ACL's weergeven.\n\
/T ACL's wijzigen van opgegeven bestanden in\n\

View File

@@ -24,8 +24,7 @@ CACLS nazwa pliku [/T] [/E] [/C] [/G użytkownik:dostęp [...]] [/R użytkownik
W Zapis\n\
C Zmiana (zapis)\n\
F Pełny dostęp\n\
/R użytkownik Odwołuje prawa dostępu określonemu użytkownikowi\n\
(działa tylko z opcją /E).\n\
/R użytkownik Odwołuje prawa dostępu określonemu użytkownikowi (działa tylko z opcją /E).\n\
/P użytkownik:dostęp Edytuje prawa dostępu określonego użytkownika.\n\
Poziom dostępu:\n\
N Brak\n\
@@ -34,8 +33,7 @@ CACLS nazwa pliku [/T] [/E] [/C] [/G użytkownik:dostęp [...]] [/R użytkownik
C Zmiana (zapis)\n\
F Pełny dostęp\n\
/D użytkownik Odbiera prawa dostępu określonemu użytkownikowi.\n\
W jednym poleceniu można edytować prawa dostępu do wielu plików, używając\n\
symboli wieloznacznych.\n\
W jednym poleceniu można edytować prawa dostępu do wielu plików, używając symboli wieloznacznych.\n\
W jednym poleceniu można edytować prawa dostępu wielu użytkowników.\n\n\
Skróty:\n\
CI - Dziedziczenie kontenera.\n\

View File

@@ -1,4 +1,11 @@
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot md) */
/*
* FILE: base/applications/cacls/lang/ro-RO.rc
* ReactOS Project (http://www.reactos.org)
* TRANSLATOR: Fulea Ștefan (PM on ReactOS Forum at fulea.stefan)
* CHANGE LOG: 2011-08-20 initial translation
* 2011-10-17 diacritics change
*/
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
STRINGTABLE
@@ -11,7 +18,7 @@ CACLS nume_fișier [/T] [/E] [/C] [/G utilizator:acces [...]]\n\
/T Modifică ACL pentru fișierele specificate în\n\
directorul curent și toate subdirectoarele sale.\n\
/E Editează ACL curentă evitând astfel înlocuirea ei.\n\
/C Continuă și la erori de acces respins.\n\
/C Continuă și la erori de acces interzis.\n\
/G utilizator:acces Acordă drepturile de acces specificate pentru utilizator.\n\
acces poate fi de: R Citire\n\
W Scriere\n\
@@ -26,8 +33,8 @@ CACLS nume_fișier [/T] [/E] [/C] [/G utilizator:acces [...]]\n\
C De modificare (scriere)\n\
F Deplin\n\
/D utilizator Interzice accesul pentru utilizatorul specificat.\n\
Utilizând metacaractere pot fi specificate mai multe fișiere.\n\
În aceiași comandă pot fi specificați mai mulți utilizatori.\n\n\
Se pot specifica mai multe fișiere utilizând metacaractere.\n\
Pot fi specificați mai mulți utilizatori în aceiași comandă.\n\n\
Abrevieri:\n\
CI - Moștenire container.\n\
ACE moștenită de directoare.\n\

View File

@@ -1,76 +0,0 @@
/* TRANSLATOR: 2015 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE
BEGIN
IDS_HELP "Kütüklerin erişim denetim dizelgelerini (ACL'lerini) görüntüler ya da değiştirir.\n\n\
CACLS kütük adı [/T] [/E] [/C] [/G kullanıcı:izin [...]] [/R kullanıcı [...]]\n\
[/P kullanıcı:izin [...]] [/D kullanıcı [...]]\n\
kütük adı ACL'leri görüntüler.\n\
/T Şimdiki dizin ve alt dizinlerin içinde\n\
belirtilen kütülerin ACL'lerini değiştirir.\n\
/E ACL'yi yenisiyle değiştirme yerine onu düzenle.\n\
/C Erişim engellendi yanlışlıklarıyla sürdür.\n\
/G kullanıcı:izin Belirtilen kullanıcı erişim yetkilerini ver.\n\
İzin şu olabilir: R Okuma\n\
W Yazma\n\
C Değiştirme (yazma)\n\
F Tüm denetim\n\
/R kullanıcı Belirtilen kullanıcının erişim yetkilerini geri al\n\
(yalnızca /E ile geçerli).\n\
/P kullanıcı:izin Belirtilen kullanıcının erişim yetkilerini yenileriyle\n\
değiştir.\n\
İzin şu olabilir: N Yok\n\
R Okuma\n\
W Yazma\n\
C Değiştirme (yazma)\n\
F Tüm denetim\n\
/D kullanıcı Belirtilen kullanıcı erişimini verme.\n\
Umûmî arama damgaları, bir komutta birden çok kütük belirtmek için kullanılabilir.\n\
Bir komutta birden çok kullanıcı belirtebilirsiniz.\n\n\
Kısaltmalar:\n\
CI - Kapsayıcı Devral.\n\
ACE dizinlerle devralınacak.\n\
OI - Nesne Devral.\n\
ACE kütüklerle devralınacak.\n\
IO - Yalnızca Devral.\n\
ACE'yi şimdiki kütüğe ya da dizine uygulama.\n"
IDS_ABBR_CI "(CI)"
IDS_ABBR_OI "(OI)"
IDS_ABBR_IO "(IO)"
IDS_ABBR_FULL "F"
IDS_ABBR_READ "R"
IDS_ABBR_WRITE "W"
IDS_ABBR_CHANGE "C"
IDS_ABBR_NONE "N"
IDS_ALLOW ""
IDS_DENY "(VERME)"
IDS_SPECIAL_ACCESS "(husûsî erişim:)"
IDS_GENERIC_READ "GENERIC_READ"
IDS_GENERIC_WRITE "GENERIC_WRITE"
IDS_GENERIC_EXECUTE "GENERIC_EXECUTE"
IDS_GENERIC_ALL "GENERIC_ALL"
IDS_FILE_GENERIC_EXECUTE "FILE_GENERIC_EXECUTE"
IDS_FILE_GENERIC_READ "FILE_GENERIC_READ"
IDS_FILE_GENERIC_WRITE "FILE_GENERIC_WRITE"
IDS_FILE_READ_DATA "FILE_READ_DATA"
IDS_FILE_WRITE_DATA "FILE_WRITE_DATA"
IDS_FILE_APPEND_DATA "FILE_APPEND_DATA"
IDS_FILE_READ_EA "FILE_READ_EA"
IDS_FILE_WRITE_EA "FILE_WRITE_EA"
IDS_FILE_EXECUTE "FILE_EXECUTE"
IDS_FILE_DELETE_CHILD "FILE_DELETE_CHILD"
IDS_FILE_READ_ATTRIBUTES "FILE_READ_ATTRIBUTES"
IDS_FILE_WRITE_ATTRIBUTES "FILE_WRITE_ATTRIBUTES"
IDS_MAXIMUM_ALLOWED "MAXIMUM_ALLOWED"
IDS_ACCESS_SYSTEM_SECURITY "ACCESS_SYSTEM_SECURITY"
IDS_SPECIFIC_RIGHTS_ALL "SPECIFIC_RIGHTS_ALL"
IDS_STANDARD_RIGHTS_REQUIRED "STANDARD_RIGHTS_REQUIRED"
IDS_SYNCHRONIZE "SYNCHRONIZE"
IDS_WRITE_OWNER "WRITE_OWNER"
IDS_WRITE_DAC "WRITE_DAC"
IDS_READ_CONTROL "READ_CONTROL"
IDS_DELETE "DELETE"
IDS_STANDARD_RIGHTS_ALL "STANDARD_RIGHTS_ALL"
END

View File

@@ -2,14 +2,11 @@
#define _CACLS_PRECOMP_H
#include <stdarg.h>
#include <tchar.h>
#include <windef.h>
#include <winbase.h>
#include <winuser.h> // For CharPrev
#include <winuser.h>
#include <sddl.h>
#include <conutils.h>
#include <tchar.h>
#include "resource.h"

View File

@@ -2,6 +2,7 @@
add_definitions(-DDISABLE_HTMLHELP_SUPPORT=1)
list(APPEND SOURCE
about.c
convert.c
function.c
rpn.c
@@ -9,13 +10,13 @@ list(APPEND SOURCE
winmain.c
calc.h)
file(GLOB calc_rc_deps res/*.*)
add_rc_deps(resource.rc ${calc_rc_deps})
add_executable(calc ${SOURCE} resource.rc)
set_module_type(calc win32gui UNICODE)
add_importlibs(calc advapi32 user32 shell32 gdi32 msvcrt kernel32)
add_importlibs(calc advapi32 user32 gdi32 msvcrt kernel32)
if(MSVC)
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
target_link_libraries(calc mingwex)
elseif(MSVC)
add_importlibs(calc ntdll)
endif()

View File

@@ -0,0 +1,33 @@
#include "calc.h"
#define MAX_LICENSE_SIZE 1000 // it's enought!
INT_PTR CALLBACK AboutDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
TCHAR *license;
switch (msg) {
case WM_INITDIALOG:
license = (TCHAR *)alloca(MAX_LICENSE_SIZE*sizeof(TCHAR));
if (LoadString(calc.hInstance, IDS_STRING_LICENSE, license, MAX_LICENSE_SIZE))
SendDlgItemMessage(hWnd, IDC_EDIT_LICENSE, WM_SETTEXT, 0, (LPARAM)license);
/* Update software version */
SendDlgItemMessage(hWnd, IDC_TEXT_VERSION, WM_GETTEXT, (WPARAM)MAX_LICENSE_SIZE, (LPARAM)license);
_tcscat(license, CALC_VERSION);
SendDlgItemMessage(hWnd, IDC_TEXT_VERSION, WM_SETTEXT, 0, (LPARAM)license);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wp)) {
case IDOK:
EndDialog(hWnd, 0);
return TRUE;
}
break;
case WM_CLOSE:
EndDialog(hWnd, 0);
return 0;
}
return FALSE;
}

View File

@@ -41,6 +41,8 @@
#define IDC_STATIC ((DWORD)-1)
#endif
#define CALC_VERSION TEXT("1.11")
#define MAX_CALC_SIZE 256
/*#define USE_KEYBOARD_HOOK*/

View File

@@ -331,7 +331,7 @@ It deletes the current calculation and all sub expressions.
Shortcut from keyboard: ESC
F-E
It enables or it disables the fixed scientific notation.
It enables or it disables the fixed scietific notation.
Shortcut from keyboard: V
0 1 2 3 4 5 6 7 8 9

View File

@@ -296,6 +296,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "За ReactOS Calc"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "Добре", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Изчислителят на РеактОС", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Версия:", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Написано от Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Статистическа кутия"
@@ -403,17 +419,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Calc is free software released under GNU GPL license.\r\n\r\nYou can get a copy of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nYou can also get a translation of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Грешка"
IDS_QUICKHELP "Бърза помощ"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Изчислителят на РеактОС"
IDS_AUTHOR "Написано от Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -295,6 +295,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "O ReactOS Kalkulačce"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Kalkulačka", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Verze ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Autor: Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistické výpočty"
@@ -402,17 +418,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS kalkulačka je svobodný software vydaný pod licencí GNU GPL.\r\n\r\nZde najdete znění GNU GPL licence:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nZde také najdete překlad GNU GPL licence:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Chyba"
IDS_QUICKHELP "Rychlá nápověda"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Kalkulačka"
IDS_AUTHOR "Autor: Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Über ReactOS Rechner"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Rechner", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Version ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Geschrieben von Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistikbox"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Rechner ist freie Software, herausgegeben unter der GNU GPL Lizenz.\r\n\r\nSie können hier eine Kopie der GNU GPL Lizenz erhalten:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nSie können hier auch eine Übersetzung der GNU GPL Lizenz erhalten:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Fehler"
IDS_QUICKHELP "Schnellhilfe"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Rechner"
IDS_AUTHOR "Geschrieben von Carlo Bramini"
END
/* Konversionstypen */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Σχετικά..."
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Αριθμομηχανή", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Έκδοση ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Από τον Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistics box"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Calc is free software released under GNU GPL license.\r\n\r\nYou can get a copy of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nYou can also get a translation of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Σφάλμα"
IDS_QUICKHELP "Quick help"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Αριθμομηχανή"
IDS_AUTHOR "Από τον Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "About ReactOS Calc"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Calculator", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Version ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Written by Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistics box"
@@ -307,89 +323,89 @@ END
IDR_MENU_SCIENTIFIC_1 MENU
BEGIN
POPUP "&Edit"
POPUP "Edit"
BEGIN
MENUITEM "&Copy\tCtrl+C", IDM_EDIT_COPY
MENUITEM "&Paste\tCtrl+V", IDM_EDIT_PASTE
MENUITEM "Copy\tCtrl+C", IDM_EDIT_COPY
MENUITEM "Paste\tCtrl+V", IDM_EDIT_PASTE
END
POPUP "&View"
POPUP "View"
BEGIN
MENUITEM "S&tandard", IDM_VIEW_STANDARD
MENUITEM "&Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "C&onversion", IDM_VIEW_CONVERSION
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Hex\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "&Decimal\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "&Octal\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "&Binary\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "Decimal\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "Octal\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "Binary\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM SEPARATOR
MENUITEM "D&egrees\tF2", IDM_VIEW_DEG, CHECKED
MENUITEM "&Radians\tF3", IDM_VIEW_RAD, CHECKED
MENUITEM "&Gradians\tF4", IDM_VIEW_GRAD, CHECKED
MENUITEM "Degrees\tF2", IDM_VIEW_DEG, CHECKED
MENUITEM "Radians\tF3", IDM_VIEW_RAD, CHECKED
MENUITEM "Gradians\tF4", IDM_VIEW_GRAD, CHECKED
MENUITEM SEPARATOR
MENUITEM "Group d&igits", IDM_VIEW_GROUP, CHECKED
MENUITEM "Group digits", IDM_VIEW_GROUP, CHECKED
END
POPUP "&Help"
POPUP "Help"
BEGIN
MENUITEM "&Help Topics", IDM_HELP_HELP
MENUITEM "Help topics", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&About ReactOS Calc", IDM_HELP_ABOUT
MENUITEM "About ReactOS Calc", IDM_HELP_ABOUT
END
END
IDR_MENU_SCIENTIFIC_2 MENU
BEGIN
POPUP "&Edit"
POPUP "Edit"
BEGIN
MENUITEM "&Copy\tCtrl+C", IDM_EDIT_COPY
MENUITEM "&Paste\tCtrl+V", IDM_EDIT_PASTE
MENUITEM "Copy\tCtrl+C", IDM_EDIT_COPY
MENUITEM "Paste\tCtrl+V", IDM_EDIT_PASTE
END
POPUP "&View"
POPUP "View"
BEGIN
MENUITEM "S&tandard", IDM_VIEW_STANDARD
MENUITEM "&Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "C&onversion", IDM_VIEW_CONVERSION
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Hex\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "&Decimal\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "&Octal\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "&Binary\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM "Hex\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "Decimal\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "Octal\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "Binary\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM SEPARATOR
MENUITEM "&Qword\tF12", IDM_VIEW_QWORD, CHECKED
MENUITEM "&Dword\tF2", IDM_VIEW_DWORD, CHECKED
MENUITEM "&Word\tF3", IDM_VIEW_WORD, CHECKED
MENUITEM "B&yte\tF4", IDM_VIEW_BYTE, CHECKED
MENUITEM "Qword\tF12", IDM_VIEW_QWORD, CHECKED
MENUITEM "Dword\tF2", IDM_VIEW_DWORD, CHECKED
MENUITEM "Word\tF3", IDM_VIEW_WORD, CHECKED
MENUITEM "Byte\tF4", IDM_VIEW_BYTE, CHECKED
MENUITEM SEPARATOR
MENUITEM "Group d&igits", IDM_VIEW_GROUP, CHECKED
MENUITEM "Group digits", IDM_VIEW_GROUP, CHECKED
END
POPUP "&Help"
POPUP "Help"
BEGIN
MENUITEM "&Help Topics", IDM_HELP_HELP
MENUITEM "Help topics", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&About ReactOS Calc", IDM_HELP_ABOUT
MENUITEM "About ReactOS Calc", IDM_HELP_ABOUT
END
END
IDR_MENU_STANDARD MENU
BEGIN
POPUP "&Edit"
POPUP "Edit"
BEGIN
MENUITEM "&Copy\tCtrl+C", IDM_EDIT_COPY
MENUITEM "&Paste\tCtrl+V", IDM_EDIT_PASTE
MENUITEM "Copy\tCtrl+C", IDM_EDIT_COPY
MENUITEM "Paste\tCtrl+V", IDM_EDIT_PASTE
END
POPUP "&View"
POPUP "View"
BEGIN
MENUITEM "S&tandard", IDM_VIEW_STANDARD
MENUITEM "&Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "C&onversion", IDM_VIEW_CONVERSION
MENUITEM "Standard", IDM_VIEW_STANDARD
MENUITEM "Scientific", IDM_VIEW_SCIENTIFIC
MENUITEM "Conversion", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Group d&igits", IDM_VIEW_GROUP, CHECKED
MENUITEM "Group digits", IDM_VIEW_GROUP, CHECKED
END
POPUP "&Help"
POPUP "Help"
BEGIN
MENUITEM "&Help Topics", IDM_HELP_HELP
MENUITEM "Help topics", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&About ReactOS Calc", IDM_HELP_ABOUT
MENUITEM "About ReactOS Calc", IDM_HELP_ABOUT
END
END
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Calc is free software released under GNU GPL license.\r\n\r\nYou can get a copy of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nYou can also get a translation of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Error"
IDS_QUICKHELP "Quick help"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Calculator"
IDS_AUTHOR "Written by Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -296,6 +296,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Acerca de la Calculadora de ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "Aceptar", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Calculadora de ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Versión ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Creada por Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Cuadro de estadísticas"
@@ -403,17 +419,18 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "La Calculadora de ReactOS es software libre realizado bajo licencia GNU GPL.\r\n\
\r\n\
Puedes obtener una copia de la licencia GNU GPL aquí:\r\n\
http://www.gnu.org/licenses/gpl.html\r\n\
\r\n\
También puedes obtener una traducción de la licencia GNU GPL aquí:\r\n\
http://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Error"
IDS_QUICKHELP "Ayuda rápida"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Calculadora de ReactOS"
IDS_AUTHOR "Creada por Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "À propos de la Calculatrice ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Calculatrice ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Version ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "par Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistiques"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Calculatrice ReactOS est un logiciel libre distribué sous licence GNU GPL.\r\n\r\nVous pouvez obtenir une copie de la licence GNU GPL ici:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nVous pouvez aussi obtenir une traduction de la licence GNU GPL ici:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Erreur"
IDS_QUICKHELP "Aide rapide"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Calculatrice ReactOS"
IDS_AUTHOR "par Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -292,6 +292,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "אודות המחשבון ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "אישור", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "מחשבון ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "גירסה ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "נכתבה על ידי Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "תיבת סטטיסטיקה"
@@ -399,17 +415,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Calc is free software released under GNU GPL license.\r\n\r\nYou can get a copy of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nYou can also get a translation of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "שגיאה"
IDS_QUICKHELP "עזרה מהירה"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "מחשבון ReactOS"
IDS_AUTHOR "נכתבה על ידי Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -298,6 +298,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "A ReactOS Számológépről"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Számológép", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Verzió ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Írta Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statisztika"
@@ -405,17 +421,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "A ReactOS Számológép a GNU GPL licenc alatt kiadott szabad szoftver.\r\n\r\nA GNU GPL licenc egy másolatát innen szerezheted be:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nValamint a GNU GPL licenc fordítását innen szerezheted be:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Hiba"
IDS_QUICKHELP "Gyors súgó"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Számológép"
IDS_AUTHOR "Írta Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Informazioni su ReactOS Calc"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Calcolatrice ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Versione ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Scritto da Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Finestra di statistica"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Calc e` software libero rilasciato sotto licenza GNU GPL.\r\n\r\nE` possibile ottenere una copia del testo della licenza GNU GPL all'indirizzo:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nE` possibile ottenere una traduzione del testo della licenza GNU GPL all'indirizzo:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Errore"
IDS_QUICKHELP "Guida rapida"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Calcolatrice ReactOS"
IDS_AUTHOR "Scritto da Carlo Bramini"
END
/* Categorie per le conversioni */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 電卓について"
FONT 9, "MS UI Gothic"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS 電卓", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Version ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Written by Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistics box"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS 電卓はGNU GPLライセンスの元で提供されるフリーソフトウェアです。\r\n\r\nこちらでGNU GPLライセンスのコピーを得ることができます:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nこちらでGNU GPLライセンスの翻訳を得ることができます:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "エラー"
IDS_QUICKHELP "クイックヘルプ"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS 電卓"
IDS_AUTHOR "Written by Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -8,7 +8,7 @@ IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 계산기"
MENU IDR_MENU_SCIENTIFIC_1
FONT 9, "MS Shell Dlg", 0, 0, 0x1
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "", IDC_STATIC, 5 ,14, 141, 20
CONTROL "Hex", IDC_RADIO_HEX, "Button", BS_AUTORADIOBUTTON, 8, 21, 30, 10
@@ -156,7 +156,7 @@ IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 계산기"
MENU IDR_MENU_STANDARD
FONT 9, "MS Shell Dlg", 0, 0, 0x1
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
PUSHBUTTON "C", IDC_BUTTON_CANC, 123, 23, 41, 18, BS_CENTER | BS_VCENTER |
BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
@@ -221,7 +221,7 @@ IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 계산기 정보"
MENU IDR_MENU_STANDARD
FONT 9, "MS Shell Dlg"
FONT 8, "MS Shell Dlg"
BEGIN
PUSHBUTTON "Convert", IDC_BUTTON_CONVERT, 35, 105, 76, 17
COMBOBOX IDC_COMBO_CATEGORY, 5, 31, 140, 168, CBS_DROPDOWNLIST | WS_VSCROLL |
@@ -292,10 +292,26 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 계산기 정보"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS 계산기", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "버젼 ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Carlo Bramini에 의해 쓰여짐", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistics box"
FONT 9, "MS Shell Dlg"
FONT 8, "MS Shell Dlg"
BEGIN
LISTBOX IDC_LIST_STAT, 4, 4, 156, 40, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "RET", IDC_BUTTON_RET, 4, 48, 36, 16
@@ -399,17 +415,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Calc is free software released under GNU GPL license.\r\n\r\nYou can get a copy of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nYou can also get a translation of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "에러"
IDS_QUICKHELP "빠른 도움말"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS 계산기"
IDS_AUTHOR "Carlo Bramini에 의해 쓰여짐"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Over ReactOS Rekenmachine"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Rekenmachine", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Versie", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Geschreven door: Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistiek-venster"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "De ReactOS Rekenmachine is free software gepubliceerd onder de GNU GPL licentie.\r\n\r\nU kan een kopie van GNU GPL licentie hier bezichtigen:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nU kan ook een vertaling van de GNU GPL licentie hier bezichtigen:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Fout"
IDS_QUICKHELP "Snelle hulp"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Rekenmachine"
IDS_AUTHOR "Geschreven door: Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Om ReactOS Kalkulator"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Kalkulator", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Versjon ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Laget av Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "statistikk boks"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Kalkulator er gratis programvare utgitt under GNU GPL lisensen.\r\n\r\nDu kan få en kopi av GNU GPL lisensen her:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nDu kan også få en oversettelse av GNU GPL lisensen her:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Feil"
IDS_QUICKHELP "Rask hjelp"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Kalkulator"
IDS_AUTHOR "Laget av Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -299,6 +299,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "O Kalkulatorze ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Kalkulator ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Wersja ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Autorstwa: Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statystyka"
@@ -406,17 +422,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Kalkulator ReactOS jest darmowym programem, publikowanym zgodnie z licencją GNU GPL.\r\n\r\nMożesz otrzymać kopię licencji GNU GPL tutaj:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nTłumaczenie licencji GNU GPL znajdziesz tutaj:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Błąd"
IDS_QUICKHELP "Szybka pomoc"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Kalkulator ReactOS"
IDS_AUTHOR "Autorstwa: Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -292,6 +292,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sobre Calc ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Calcuadora ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Versão ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Escrita por Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Caixa de estatísticas"
@@ -399,17 +415,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Calculadora ReactOS é um software livre lançado sobre a licença GNU GPL.\r\nVocê pode adquirir uma cópia da licença GNU GPL no endereço abaixo:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nVocê também pode adquirir uma tradução da licença GNU GPL no endereço abaixo:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Erro"
IDS_QUICKHELP "Ajuda rápida"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Calcuadora ReactOS"
IDS_AUTHOR "Escrita por Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -1,8 +1,4 @@
/*
* Translators: Petru Dimitriu (petrimetri at gmail dot com)
* Ștefan Fulea (stefan dot fulea at mail dot md)
*/
/* Ștefan Fulea (stefan dot fulea at mail dot md) */
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
/* Dialogs */
@@ -295,6 +291,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Despre Minicalculator"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "Î&nchide", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Minicalculator ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Versiune ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Scris de Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistici"
@@ -334,7 +346,7 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Grupează &cifrele", IDM_VIEW_GROUP, CHECKED
END
POPUP "Aj&utor"
POPUP "&?"
BEGIN
MENUITEM "&Manual…", IDM_HELP_HELP
MENUITEM SEPARATOR
@@ -367,7 +379,7 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Grupează &cifrele", IDM_VIEW_GROUP, CHECKED
END
POPUP "Aj&utor"
POPUP "&?"
BEGIN
MENUITEM "&Manual…", IDM_HELP_HELP
MENUITEM SEPARATOR
@@ -390,7 +402,7 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "Grupează &cifre", IDM_VIEW_GROUP, CHECKED
END
POPUP "Aj&utor"
POPUP "&?"
BEGIN
MENUITEM "&Manual…", IDM_HELP_HELP
MENUITEM SEPARATOR
@@ -402,17 +414,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Această aplicație este publică; fiind permisă modificarea și/sau (re)distribuția sa în termenii Licenței Publice Generale GNU publicată de Free Software Foundation; sau versiunea 2 a Licenței, sau (la alegere) a oricărei versiuni ulterioare.\r\n\r\nAceastă aplicație este distribuită doar în speranța de a fi utilă, FĂRĂ însă NICI O GARANȚIE; nici măcar cu garanția implicită a VANDABILITĂȚII sau a UTILITĂȚII ÎNTR-UN SCOP ANUME. Pentru mai multe detalii consultați Licența Publică Generală GNU.\r\n\r\nPuteți vedea această licență aici:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nDe asemenea puteți consulta traduceri neoficiale ale acestei licențe aici:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Eroare"
IDS_QUICKHELP "Manual"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Minicalculator ReactOS"
IDS_AUTHOR "Scris de Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "О программе"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Калькулятор ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Версия ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Автор: Карло Брамини", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Статистика"
@@ -307,89 +323,89 @@ END
IDR_MENU_SCIENTIFIC_1 MENU
BEGIN
POPUP "&Правка"
POPUP "Правка"
BEGIN
MENUITEM "&Копировать\tCTRL-C", IDM_EDIT_COPY
MENUITEM "Вст&авить\tCTRL-V", IDM_EDIT_PASTE
MENUITEM "Копировать\tCTRL-C", IDM_EDIT_COPY
MENUITEM "Вставить\tCTRL-V", IDM_EDIT_PASTE
END
POPUP "В&ид"
POPUP "Вид"
BEGIN
MENUITEM "&Обычный", IDM_VIEW_STANDARD
MENUITEM "&Инженерный", IDM_VIEW_SCIENTIFIC
MENUITEM "П&еревод величин", IDM_VIEW_CONVERSION
MENUITEM "Обычный", IDM_VIEW_STANDARD
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразование", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "&Десятичный\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "&Восьмеричный\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "Двои&чный\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM "Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "Десятичный\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "Восьмеричный\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "Двоичный\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM SEPARATOR
MENUITEM "&Градусы\tF2", IDM_VIEW_DEG, CHECKED
MENUITEM "Радиа&ны\tF3", IDM_VIEW_RAD, CHECKED
MENUITEM "Гр&ады\tF4", IDM_VIEW_GRAD, CHECKED
MENUITEM "Градусы\tF2", IDM_VIEW_DEG, CHECKED
MENUITEM "Радианы\tF3", IDM_VIEW_RAD, CHECKED
MENUITEM "Грады\tF4", IDM_VIEW_GRAD, CHECKED
MENUITEM SEPARATOR
MENUITEM "Группировать &цифры", IDM_VIEW_GROUP, CHECKED
MENUITEM "Количество цифр в группе", IDM_VIEW_GROUP, CHECKED
END
POPUP "&Справка"
POPUP "Справка"
BEGIN
MENUITEM "&Вызов справки", IDM_HELP_HELP
MENUITEM "Вызов справки", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&О программе", IDM_HELP_ABOUT
MENUITEM "О программе", IDM_HELP_ABOUT
END
END
IDR_MENU_SCIENTIFIC_2 MENU
BEGIN
POPUP "&Правка"
POPUP "Правка"
BEGIN
MENUITEM "&Копировать\tCTRL-C", IDM_EDIT_COPY
MENUITEM "Вст&авить\tCTRL-V", IDM_EDIT_PASTE
MENUITEM "Копировать\tCTRL-C", IDM_EDIT_COPY
MENUITEM "Вставить\tCTRL-V", IDM_EDIT_PASTE
END
POPUP "В&ид"
POPUP "Вид"
BEGIN
MENUITEM "&Обычный", IDM_VIEW_STANDARD
MENUITEM "&Инженерный", IDM_VIEW_SCIENTIFIC
MENUITEM "П&еревод величин", IDM_VIEW_CONVERSION
MENUITEM "Обычный", IDM_VIEW_STANDARD
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразование", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "&Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "&Десятичный\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "&Восьмеричный\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "Двои&чный\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM "Шестнадцатеричный\tF5", IDM_VIEW_HEX, CHECKED
MENUITEM "Десятичный\tF6", IDM_VIEW_DEC, CHECKED
MENUITEM "Восьмеричный\tF7", IDM_VIEW_OCT, CHECKED
MENUITEM "Двоичный\tF8", IDM_VIEW_BIN, CHECKED
MENUITEM SEPARATOR
MENUITEM "&8 байт\tF12", IDM_VIEW_QWORD, CHECKED
MENUITEM "&4 байт\tF2", IDM_VIEW_DWORD, CHECKED
MENUITEM "&2 байт\tF3", IDM_VIEW_WORD, CHECKED
MENUITEM "&1 байт\tF4", IDM_VIEW_BYTE, CHECKED
MENUITEM "8 байт\tF12", IDM_VIEW_QWORD, CHECKED
MENUITEM "4 байт\tF2", IDM_VIEW_DWORD, CHECKED
MENUITEM "2 байт\tF3", IDM_VIEW_WORD, CHECKED
MENUITEM "1 байт\tF4", IDM_VIEW_BYTE, CHECKED
MENUITEM SEPARATOR
MENUITEM "Группировать &цифры", IDM_VIEW_GROUP, CHECKED
MENUITEM "Количество цифр в группе", IDM_VIEW_GROUP, CHECKED
END
POPUP "&Справка"
POPUP "Справка"
BEGIN
MENUITEM "&Вызов справки", IDM_HELP_HELP
MENUITEM "Вызов справки", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&О программе", IDM_HELP_ABOUT
MENUITEM "О программе", IDM_HELP_ABOUT
END
END
IDR_MENU_STANDARD MENU
BEGIN
POPUP "&Правка"
POPUP "Правка"
BEGIN
MENUITEM "&Копировать\tCTRL-C", IDM_EDIT_COPY
MENUITEM "Вст&авить\tCTRL-V", IDM_EDIT_PASTE
MENUITEM "Копировать\tCTRL-C", IDM_EDIT_COPY
MENUITEM "Вставить\tCTRL-V", IDM_EDIT_PASTE
END
POPUP "В&ид"
POPUP "Вид"
BEGIN
MENUITEM "&Обычный", IDM_VIEW_STANDARD
MENUITEM "&Инженерный", IDM_VIEW_SCIENTIFIC
MENUITEM "П&еревод величин", IDM_VIEW_CONVERSION
MENUITEM "Обычный", IDM_VIEW_STANDARD
MENUITEM "Научный", IDM_VIEW_SCIENTIFIC
MENUITEM "Преобразование", IDM_VIEW_CONVERSION
MENUITEM SEPARATOR
MENUITEM "Группировать &цифры", IDM_VIEW_GROUP, CHECKED
MENUITEM "Количество цифр в группе", IDM_VIEW_GROUP, CHECKED
END
POPUP "&Справка"
POPUP "Справка"
BEGIN
MENUITEM "&Вызов справки", IDM_HELP_HELP
MENUITEM "Вызов справки", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&О программе", IDM_HELP_ABOUT
MENUITEM "О программе", IDM_HELP_ABOUT
END
END
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Калькулятор ReactOS - свободное программное обеспечение, распространяющееся по лицензии GNU GPL.\r\n\r\nВы можете получить копию лицензии GNU GPL здесь:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nОзнакомиться c переводом лицензии GNU GPL можно здесь:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Ошибка"
IDS_QUICKHELP "Быстрая справка"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Калькулятор ReactOS"
IDS_AUTHOR "Автор: Карло Брамини"
END
/* Types of conversion */
STRINGTABLE
BEGIN
@@ -526,7 +536,7 @@ END
STRINGTABLE
BEGIN
IDS_LENGTH_ANGSTROMS "ангстрем"
IDS_LENGTH_ASTRONOMICAL_UNITS "астрономическая единица"
IDS_LENGTH_ASTRONOMICAL_UNITS "астрономическая еденица"
IDS_LENGTH_BARLEYCORNS "барлейкорн"
IDS_LENGTH_CENTIMETERS "сантиметр"
IDS_LENGTH_CHAINS_UK "чейн (британский)"
@@ -611,7 +621,7 @@ STRINGTABLE
BEGIN
IDS_TIME_DAYS "день"
IDS_TIME_HOURS "час"
IDS_TIME_NANOSECONDS "наносекунда"
IDS_TIME_NANOSECONDS "Nanoseconds"
IDS_TIME_MICROSECONDS "микросекунда"
IDS_TIME_MILLISECONDS "миллисекунда"
IDS_TIME_MINUTES "минута"

View File

@@ -297,6 +297,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Čo je kalkulačka systému ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Kalkulačka systému ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Verzia ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Napísal Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Štatistika"
@@ -404,17 +420,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Kalkulačka systému ReactOS je voľný softvér vydaný pod licenciou GNU GPL.\r\n\r\nKópiu licencie GNU GPL môžete získať tu:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nRovnako môžete získať preklad licencie GNU GPL tu:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Chyba"
IDS_QUICKHELP "Rýchla pomoc"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Kalkulačka systému ReactOS"
IDS_AUTHOR "Napísal Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -294,6 +294,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Informacione mbi Makine Llogaritje ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Makine Llogaritje", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Versioni ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "krijuar nga Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Kutia e Statistikave"
@@ -401,17 +417,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Makina Llogaritese ReactOS eshte program falas i lanquar nen liçensen GNU GPL.\r\n\r\nJu mund te merrni nje kopje te liçenses se GNU CPL ketu:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nJu gjithashtu mund te merrni e liçenses se GNU GPL ketu:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Error"
IDS_QUICKHELP "Ndihmë e shpejtë"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Makine Llogaritje"
IDS_AUTHOR "krijuar nga Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -1,6 +1,6 @@
/*
* PROJECT: ReactOS CALC
* FILE: base/applications/calc/lang/sv-SE.rc
* FILE: base\applications\calc\lang\sv-SE.rc
* PURPOSE: Swedish resource file
* Translation: Jaix Bly
*/
@@ -297,6 +297,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Om ReactOS Kalkylator"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS Kalkylator", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Version ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Skriven av Carlo Bramini, Övers.: Jaix Bly", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Statistik box"
@@ -404,17 +420,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Kalkylator är gratis programvara utgivet under GNU GPL licensen.\r\n\r\nDu kan få en kopia av GNU GPL licensen här:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nDu kan också få en översättning av GNU GPL lisensen här:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Fel"
IDS_QUICKHELP "Snabb hjälp"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS Kalkylator"
IDS_AUTHOR "Skriven av Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -290,6 +290,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "เกี่ยวกับ ReactOS Calc"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "ตกลง", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "เครื่องคิดเลข ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "รุ่น ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Written by Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "กล่องสถานะ"
@@ -397,17 +413,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS Calc is free software released under GNU GPL license.\r\n\r\nYou can get a copy of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nYou can also get a translation of GNU GPL license here:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "ผิดพลาด"
IDS_QUICKHELP "สิ่งนี้คืออะไร ?"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "เครื่องคิดเลข ReactOS"
IDS_AUTHOR "Written by Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -1,4 +1,4 @@
/* TRANSLATOR: 2013, 2014, 2016 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
/* TRANSLATOR: 2013, 2014 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
@@ -292,6 +292,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hesap Makinesi Üzerine"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "Tamam", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Hesap Makinesi", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Sürüm: ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Carlo Bramini eliyle yapılmıştır.", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sayımlama Penceresi"
@@ -311,8 +327,8 @@ IDR_MENU_SCIENTIFIC_1 MENU
BEGIN
POPUP "&Düzen"
BEGIN
MENUITEM "&Çoğalt\tDenetim+C", IDM_EDIT_COPY
MENUITEM "&Yapıştır\tDenetim+V", IDM_EDIT_PASTE
MENUITEM "&Çoğalt\tCtrl+C", IDM_EDIT_COPY
MENUITEM "&Yapıştır\tCtrl+V", IDM_EDIT_PASTE
END
POPUP "&Görünüm"
BEGIN
@@ -335,7 +351,7 @@ BEGIN
BEGIN
MENUITEM "&Yardım Konuları", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&ReactOS Hesap Makinesi Üzerine...", IDM_HELP_ABOUT
MENUITEM "&Üzerine...", IDM_HELP_ABOUT
END
END
@@ -343,8 +359,8 @@ IDR_MENU_SCIENTIFIC_2 MENU
BEGIN
POPUP "&Düzen"
BEGIN
MENUITEM "&Çoğalt\tDenetim+C", IDM_EDIT_COPY
MENUITEM "&Yapıştır\tDenetim+V", IDM_EDIT_PASTE
MENUITEM "&Çoğalt\tCtrl+C", IDM_EDIT_COPY
MENUITEM "&Yapıştır\tCtrl+V", IDM_EDIT_PASTE
END
POPUP "&Görünüm"
BEGIN
@@ -368,7 +384,7 @@ BEGIN
BEGIN
MENUITEM "&Yardım Konuları", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&ReactOS Hesap Makinesi Üzerine...", IDM_HELP_ABOUT
MENUITEM "&Üzerine...", IDM_HELP_ABOUT
END
END
@@ -376,8 +392,8 @@ IDR_MENU_STANDARD MENU
BEGIN
POPUP "&Düzen"
BEGIN
MENUITEM "&Çoğalt\tDenetim+C", IDM_EDIT_COPY
MENUITEM "&Yapıştır\tDenetim+V", IDM_EDIT_PASTE
MENUITEM "&Çoğalt\tCtrl+C", IDM_EDIT_COPY
MENUITEM "&Yapıştır\tCtrl+V", IDM_EDIT_PASTE
END
POPUP "&Görünüm"
BEGIN
@@ -391,7 +407,7 @@ BEGIN
BEGIN
MENUITEM "&Yardım Konuları", IDM_HELP_HELP
MENUITEM SEPARATOR
MENUITEM "&ReactOS Hesap Makinesi Üzerine...", IDM_HELP_ABOUT
MENUITEM "&Üzerine...", IDM_HELP_ABOUT
END
END
@@ -399,17 +415,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Hesap Makinesi, GNU GPL ruhsatıyla yayımlanan bir özgür yazılımdır.\r\n\r\nGNU GPL ruhsatının bir kopyasını şuradan elde edebilirsiniz:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nBir de GNU GPL ruhsatının bir çevirisini şuradan elde edebilirsiniz:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Yanlışlık"
IDS_QUICKHELP "Hızlı Yardım"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Hesap Makinesi"
IDS_AUTHOR "Carlo Bramini eliyle yapılmıştır."
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -298,6 +298,22 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Про Калькулятор ReactOS"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "Калькулятор ReactOS", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "Версія ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "Написав Карло Браміні", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Статистика"
@@ -405,17 +421,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "Калькулятор ReactOS - вільне програмне забезпечення, випущене за ліцензією GNU GPL.\r\n\r\nВи можете отримати копію ліцензії GNU GPL тут:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nВи можете також отримати переклад ліцензії GNU GPL тут:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "Помилка"
IDS_QUICKHELP "Швидка довідка"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "Калькулятор ReactOS"
IDS_AUTHOR "Написав Карло Браміні"
END
/* Types of conversion */
STRINGTABLE
BEGIN

View File

@@ -8,7 +8,7 @@ IDD_DIALOG_SCIENTIFIC DIALOGEX 0, 0, 316, 163
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 计算器"
MENU IDR_MENU_SCIENTIFIC_1
FONT 9, "MS Shell Dlg", 0, 0, 0x1
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "", IDC_STATIC, 5 ,14, 141, 20
CONTROL "Hex", IDC_RADIO_HEX, "Button", BS_AUTORADIOBUTTON, 8, 21, 30, 10
@@ -156,7 +156,7 @@ IDD_DIALOG_STANDARD DIALOGEX 0, 0, 169, 128
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 计算器"
MENU IDR_MENU_STANDARD
FONT 9, "MS Shell Dlg", 0, 0, 0x1
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
PUSHBUTTON "C", IDC_BUTTON_CANC, 123, 23, 41, 18, BS_CENTER | BS_VCENTER |
BS_NOTIFY | BS_OWNERDRAW | WS_TABSTOP
@@ -221,7 +221,7 @@ IDD_DIALOG_CONVERSION DIALOGEX 0, 0, 320, 130
STYLE DS_SHELLFONT | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ReactOS 计算器"
MENU IDR_MENU_STANDARD
FONT 9, "MS Shell Dlg"
FONT 8, "MS Shell Dlg"
BEGIN
PUSHBUTTON "转换", IDC_BUTTON_CONVERT, 35, 105, 76, 17
COMBOBOX IDC_COMBO_CATEGORY, 5, 31, 140, 168, CBS_DROPDOWNLIST | WS_VSCROLL |
@@ -292,10 +292,26 @@ BEGIN
DEFPUSHBUTTON "", IDC_BUTTON_FOCUS, 0, 0, 5, 5, NOT WS_VISIBLE
END
IDD_DIALOG_ABOUT DIALOGEX 0, 0, 264, 169
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "关于 ReactOS 计算器"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "确定", IDOK, 105, 148, 52, 16
CONTROL IDB_BITMAP_ROS, IDC_STATIC, "Static", SS_BITMAP | SS_CENTERIMAGE |
SS_REALSIZEIMAGE | WS_BORDER, 4, 4, 104, 48
LTEXT "ReactOS 计算器", IDC_STATIC, 120, 12, 132, 8, SS_CENTERIMAGE
LTEXT "版本 ", IDC_TEXT_VERSION, 120, 20, 132, 8, SS_CENTERIMAGE
LTEXT "作者 Carlo Bramini", IDC_STATIC, 120, 32, 132, 8, SS_CENTERIMAGE
GROUPBOX "", IDC_STATIC, 112, 0, 148, 52
GROUPBOX "", IDC_STATIC, 5, 56, 256, 88
EDITTEXT IDC_EDIT_LICENSE, 12, 68, 240, 68, ES_MULTILINE | ES_READONLY | WS_VSCROLL
END
IDD_DIALOG_STAT DIALOGEX 0, 0, 163, 85
STYLE DS_SHELLFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "统计框"
FONT 9, "MS Shell Dlg"
FONT 8, "MS Shell Dlg"
BEGIN
LISTBOX IDC_LIST_STAT, 4, 4, 156, 40, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "返回", IDC_BUTTON_RET, 4, 48, 36, 16
@@ -399,17 +415,11 @@ END
STRINGTABLE
BEGIN
IDS_STRING_LICENSE "ReactOS 计算器是在 GNU GPL 协议下发行的自由软件。\r\n\r\n你可以从这儿取得一份 GNU GPL 协议的副本:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\n你也可以从这儿取得其翻译\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_MATH_ERROR "错误"
IDS_QUICKHELP "快速帮助"
END
/* About */
STRINGTABLE
BEGIN
IDS_CALC_NAME "ReactOS 计算器"
IDS_AUTHOR "作者 Carlo Bramini"
END
/* Types of conversion */
STRINGTABLE
BEGIN

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -1,16 +1,17 @@
#pragma once
#define IDS_CALC_NAME 1
#define IDS_STRING_LICENSE 1
#define IDS_MATH_ERROR 2
#define IDS_QUICKHELP 3
#define IDS_AUTHOR 4
#define IDD_DIALOG_SCIENTIFIC 101
#define IDD_DIALOG_STANDARD 102
#define IDD_DIALOG_ABOUT 103
#define IDD_DIALOG_STAT 104
#define IDD_DIALOG_CONVERSION 105
#define IDR_MENU_SCIENTIFIC_1 106
#define IDR_MENU_SCIENTIFIC_2 107
#define IDR_MENU_STANDARD 108
#define IDB_BITMAP_ROS 109
#define IDI_CALC_BIG 110
#define IDI_CALC_SMALL 111
#define IDC_RADIO_HEX 1002
@@ -87,6 +88,7 @@
#define IDC_TEXT_OUTPUT 1074
#define IDC_TEXT_PARENT 1075
#define IDC_TEXT_MEMORY 1076
#define IDC_EDIT_LICENSE 1078
#define IDC_LIST_STAT 1079
#define IDC_BUTTON_RET 1080
#define IDC_BUTTON_LOAD 1081
@@ -96,6 +98,7 @@
#define IDC_BUTTON_SQRT 1085
#define IDC_BUTTON_PERCENT 1086
#define IDC_BUTTON_CONVERT 1087
#define IDC_TEXT_VERSION 1088
#define IDC_BUTTON_FOCUS 1089
#define IDC_COMBO_CATEGORY 1090
#define IDC_COMBO_FROM 1091

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Calc
* LICENSE: LGPL - See COPYING.LIB in the top level directory
* FILE: base/applications/calc/resource.rc
* FILE: base/applications/calcs/resource.rc
* PURPOSE: Global resource file
*/
@@ -14,6 +14,10 @@
#define IDC_STATIC -1
#endif
#ifndef DS_SHELLFONT
#define DS_SHELLFONT DS_SETFONT|DS_FIXEDSYS
#endif
/* Common resources */
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
@@ -22,6 +26,9 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDI_CALC_BIG ICON "res/calc.ico"
IDI_CALC_SMALL ICON "res/calc_sm.ico"
/* Bitmaps */
IDB_BITMAP_ROS BITMAP "res/ROS_logo.bmp"
#include <reactos/manifest_exe.rc>
/* UTF-8 */

View File

@@ -314,7 +314,7 @@ void run_operator(calc_node_t *result,
calc.is_nan = TRUE;
} else {
operator_list[operation].op_i(&dc, &da, &db);
/* apply final limiter to result */
/* apply final limitator to result */
apply_int_mask(&dc);
}

View File

@@ -300,7 +300,7 @@ void run_operator(calc_node_t *result,
operator_list[operation].op_f(&result->number, &a->number, &b->number);
} else {
operator_list[operation].op_i(&result->number, &a->number, &b->number);
/* apply final limiter to result */
/* apply final limitator to result */
apply_int_mask(&result->number);
}
}

View File

@@ -11,7 +11,7 @@ void prepare_rpn_result_2(calc_number_t *rpn, TCHAR *buffer, int size, int base)
break;
case IDC_RADIO_DEC:
/*
* Modified from 17 to 16 for fixing this bug:
* Modifed from 17 to 16 for fixing this bug:
* 14+14+6.3+6.3= 40.5999999 instead of 40.6
* So, it's probably better to leave the least
* significant digit out of the display.
@@ -25,7 +25,7 @@ void prepare_rpn_result_2(calc_number_t *rpn, TCHAR *buffer, int size, int base)
TCHAR *ptr, *dst;
ptr = buffer + _stprintf(buffer, TEXT("%#*.*f"), width, ((MAX_LD_WIDTH-width-1)>=0) ? MAX_LD_WIDTH-width-1 : 0, rpn->f);
/* format string ensures there is a '.': */
/* format sring ensures there is a '.': */
dst = _tcschr(buffer, TEXT('.'));
while (--ptr > dst)
if (*ptr != TEXT('0'))

View File

@@ -34,7 +34,7 @@
* Corrected precision underflow/overflow when working with trigonometric functions.
* cbrt() function is not used if compiling into ReactOS build system.
* Resources are moved into /res directory.
* Added new (partial) support for other languages: bulgarian, spanish, german, dutch, polish, russian, slovak, ukrainian.
* Added new (partial) support for other languages: bulgarian, spanish, german, dutch, polish, russian, slovak, ukraianian.
* Decimal precision of number with standard layout has been limited to 16 digits because the output display is smaller here (GMP version only).
* Fixed buffer overflow with function update_lcd_display().
* The decimal point is now preserved when switching to temporary scientific notation.

View File

@@ -3,7 +3,6 @@
#include <winbase.h>
#include <wingdi.h>
#include <winreg.h>
#include <shellapi.h>
#define HTMLHELP_PATH(_pt) TEXT("%systemroot%\\Help\\calc.chm::") TEXT(_pt)
@@ -212,8 +211,8 @@ static const function_table_t function_table[] = {
{ IDC_BUTTON_DMS, MODIFIER_INV, 1, rpn_dec2dms, rpn_dms2dec, NULL, NULL },
{ IDC_BUTTON_FE, 0, 1, run_fe, NULL, NULL, NULL },
{ IDC_BUTTON_DAT, 0, 1, run_dat_sta, NULL, NULL, NULL, },
{ IDC_BUTTON_MP, MODIFIER_INV|NO_CHAIN, 1, run_mp, run_mm, NULL, NULL, },
{ IDC_BUTTON_MS, MODIFIER_INV|NO_CHAIN, 1, run_ms, run_mw, NULL, NULL, },
{ IDC_BUTTON_MP, MODIFIER_INV, 1, run_mp, run_mm, NULL, NULL, },
{ IDC_BUTTON_MS, MODIFIER_INV, 1, run_ms, run_mw, NULL, NULL, },
{ IDC_BUTTON_CANC, NO_CHAIN, 0, run_canc, NULL, NULL, NULL, },
{ IDC_BUTTON_RIGHTPAR, NO_CHAIN, 1, run_rpar, NULL, NULL, NULL, },
{ IDC_BUTTON_LEFTPAR, NO_CHAIN, 0, run_lpar, NULL, NULL, NULL, },
@@ -435,7 +434,7 @@ KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
static void update_lcd_display(HWND hwnd)
{
/*
* multiply size of calc.buffer by 2 because it may
* muliply size of calc.buffer by 2 because it may
* happen that separator is used between each digit.
* Also added little additional space for dot and '\0'.
*/
@@ -933,18 +932,15 @@ static INT_PTR CALLBACK DlgStatProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
return FALSE;
}
static BOOL idm_2_idc(int idm, WPARAM *pIdc)
static WPARAM idm_2_idc(int idm)
{
int x;
for (x=0; x<SIZEOF(upd); x++) {
if (upd[x].idm == idm)
{
*pIdc = (WPARAM)(upd[x].idc);
return TRUE;
}
break;
}
return FALSE;
return (WPARAM)(upd[x].idc);
}
static void CopyMemToClipboard(void *ptr)
@@ -1342,63 +1338,48 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
SetFocus(GetDlgItem(hWnd, IDC_BUTTON_FOCUS));
switch (LOWORD(wp)) {
case IDM_HELP_ABOUT:
{
TCHAR infotitle[100];
TCHAR infotext[200];
LoadString(calc.hInstance, IDS_CALC_NAME, infotitle, SIZEOF(infotitle));
LoadString(calc.hInstance, IDS_AUTHOR, infotext, SIZEOF(infotext));
ShellAbout(hWnd, infotitle, infotext, (HICON)LoadIcon(calc.hInstance, MAKEINTRESOURCE(IDI_CALC_BIG)));
DialogBox(calc.hInstance,MAKEINTRESOURCE(IDD_DIALOG_ABOUT), hWnd, AboutDlgProc);
return TRUE;
}
case IDM_HELP_HELP:
#ifndef DISABLE_HTMLHELP_SUPPORT
HtmlHelp(hWnd, HTMLHELP_PATH("/general_information.htm"), HH_DISPLAY_TOPIC, (DWORD_PTR)NULL);
#endif
return TRUE;
case IDM_VIEW_STANDARD:
if (calc.layout != CALC_LAYOUT_STANDARD)
{
calc.layout = CALC_LAYOUT_STANDARD;
calc.action = IDM_VIEW_STANDARD;
DestroyWindow(hWnd);
save_config();
calc.layout = CALC_LAYOUT_STANDARD;
calc.action = IDM_VIEW_STANDARD;
DestroyWindow(hWnd);
save_config();
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_STANDARD,
MF_BYCOMMAND);
}
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_STANDARD,
MF_BYCOMMAND);
return TRUE;
case IDM_VIEW_SCIENTIFIC:
if (calc.layout != CALC_LAYOUT_SCIENTIFIC)
{
calc.layout = CALC_LAYOUT_SCIENTIFIC;
calc.action = IDM_VIEW_SCIENTIFIC;
DestroyWindow(hWnd);
save_config();
calc.layout = CALC_LAYOUT_SCIENTIFIC;
calc.action = IDM_VIEW_SCIENTIFIC;
DestroyWindow(hWnd);
save_config();
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_SCIENTIFIC,
MF_BYCOMMAND);
}
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_SCIENTIFIC,
MF_BYCOMMAND);
return TRUE;
case IDM_VIEW_CONVERSION:
if (calc.layout != CALC_LAYOUT_CONVERSION)
{
calc.layout = CALC_LAYOUT_CONVERSION;
calc.action = IDM_VIEW_CONVERSION;
DestroyWindow(hWnd);
save_config();
calc.layout = CALC_LAYOUT_CONVERSION;
calc.action = IDM_VIEW_CONVERSION;
DestroyWindow(hWnd);
save_config();
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_CONVERSION,
MF_BYCOMMAND);
}
CheckMenuRadioItem(GetMenu(hWnd),
IDM_VIEW_STANDARD,
IDM_VIEW_CONVERSION,
IDM_VIEW_CONVERSION,
MF_BYCOMMAND);
return TRUE;
case IDM_VIEW_HEX:
case IDM_VIEW_DEC:
@@ -1411,15 +1392,8 @@ static INT_PTR CALLBACK DlgMainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
case IDM_VIEW_DWORD:
case IDM_VIEW_WORD:
case IDM_VIEW_BYTE:
{
WPARAM idc;
if(idm_2_idc(LOWORD(wp), &idc))
{
SendMessage(hWnd, WM_COMMAND, idc, 0);
return TRUE;
}
return FALSE;
}
SendMessage(hWnd, WM_COMMAND, idm_2_idc(LOWORD(wp)), 0);
return TRUE;
case IDM_EDIT_COPY:
handle_copy_command(hWnd);
return TRUE;

View File

@@ -7,7 +7,6 @@ list(APPEND SOURCE
settings.c
precomp.h)
add_rc_deps(charmap.rc ${CMAKE_CURRENT_SOURCE_DIR}/res/charmap.ico)
add_executable(charmap ${SOURCE} charmap.rc)
set_module_type(charmap win32gui UNICODE)
add_importlibs(charmap advapi32 user32 gdi32 comctl32 msvcrt kernel32)

View File

@@ -12,8 +12,6 @@
#include <commctrl.h>
#include <richedit.h>
#define REMOVE_ADVANCED
#define ID_ABOUT 0x1
HINSTANCE hInstance;
@@ -24,10 +22,6 @@ HICON hSmIcon;
HICON hBgIcon;
SETTINGS Settings;
/* GetUName prototype */
typedef int (WINAPI * GETUNAME)(WORD wCharCode, LPWSTR lpbuf);
GETUNAME GetUName;
/* Font-enumeration callback */
static
int
@@ -243,7 +237,7 @@ AddCharToSelection(HWND hDlg, WCHAR ch)
SendMessage(hText, WM_CHAR, (WPARAM)ch, 0);
}
#ifndef REMOVE_ADVANCED
static
void
UpdateSettings(HWND hDlg)
@@ -251,38 +245,20 @@ UpdateSettings(HWND hDlg)
if (hDlg == hCharmapDlg)
{
Settings.IsAdvancedView =
SendDlgItemMessage(hDlg, IDC_CHECK_ADVANCED, BM_GETCHECK, 0, 0);
SendDlgItemMessage(hDlg, IDC_CHECK_ADVANCED, BM_GETCHECK, 0, 0);
}
if (hDlg == hAdvancedDlg)
{
}
}
#endif
VOID
UpdateStatusBar(WCHAR wch)
{
WCHAR buff[MAX_PATH];
WCHAR szDesc[MAX_PATH];
if (GetUName)
{
GetUName(wch, szDesc);
wsprintfW(buff, L"U+%04X: %s", wch, szDesc);
SendMessageW(hStatusWnd, SB_SETTEXT, 0, (LPARAM)buff);
}
}
static
void
ChangeView(HWND hWnd)
{
RECT rcCharmap;
#ifndef REMOVE_ADVANCED
RECT rcAdvanced;
#endif
RECT rcPanelExt;
RECT rcPanelInt;
RECT rcStatus;
@@ -292,9 +268,7 @@ ChangeView(HWND hWnd)
UINT DeskTopWidth, DeskTopHeight;
GetClientRect(hCharmapDlg, &rcCharmap);
#ifndef REMOVE_ADVANCED
GetClientRect(hAdvancedDlg, &rcAdvanced);
#endif
GetWindowRect(hWnd, &rcPanelExt);
GetClientRect(hWnd, &rcPanelInt);
GetClientRect(hStatusWnd, &rcStatus);
@@ -306,19 +280,19 @@ ChangeView(HWND hWnd)
DeY = (rcPanelExt.bottom - rcPanelExt.top) - rcPanelInt.bottom;
MoveWindow(hCharmapDlg, 0, 0, rcCharmap.right, rcCharmap.bottom, FALSE);
#ifndef REMOVE_ADVANCED
MoveWindow(hAdvancedDlg, 0, rcCharmap.bottom, rcAdvanced.right, rcAdvanced.bottom, FALSE);
ShowWindow(hAdvancedDlg, (Settings.IsAdvancedView) ? SW_SHOW : SW_HIDE);
#endif
xPos = rcPanelExt.left;
yPos = rcPanelExt.top;
Width = DeX + rcCharmap.right;
Height = DeY + rcCharmap.bottom + rcStatus.bottom;
#ifndef REMOVE_ADVANCED
if (Settings.IsAdvancedView)
Height += rcAdvanced.bottom;
#endif
if ((xPos + Width) > DeskTopWidth)
xPos += DeskTopWidth - (xPos + Width);
@@ -344,9 +318,6 @@ CharMapDlgProc(HWND hDlg,
case WM_INITDIALOG:
{
DWORD evMask;
#ifdef REMOVE_ADVANCED
HWND hAdv;
#endif
FillFontStyleComboList(GetDlgItem(hDlg,
IDC_FONTCOMBO));
@@ -357,10 +328,7 @@ CharMapDlgProc(HWND hDlg,
evMask = SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_GETEVENTMASK, 0, 0);
evMask |= ENM_CHANGE;
SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_SETEVENTMASK, 0, (LPARAM)evMask);
#ifdef REMOVE_ADVANCED
hAdv = GetDlgItem(hDlg, IDC_CHECK_ADVANCED);
ShowWindow(hAdv, SW_HIDE);
#endif
return TRUE;
}
@@ -402,12 +370,11 @@ CharMapDlgProc(HWND hDlg,
case IDC_COPY:
CopyCharacters(hDlg);
break;
#ifndef REMOVE_ADVANCED
case IDC_CHECK_ADVANCED:
UpdateSettings(hDlg);
ChangeView(GetParent(hDlg));
break;
#endif
}
}
break;
@@ -418,7 +385,7 @@ CharMapDlgProc(HWND hDlg,
return FALSE;
}
#ifndef REMOVE_ADVANCED
static
INT_PTR
CALLBACK
@@ -438,7 +405,7 @@ AdvancedDlgProc(HWND hDlg,
return FALSE;
}
#endif
static int
OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
@@ -449,12 +416,12 @@ OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam)
MAKEINTRESOURCE(IDD_CHARMAP),
hWnd,
CharMapDlgProc);
#ifndef REMOVE_ADVANCED
hAdvancedDlg = CreateDialog(hInstance,
MAKEINTRESOURCE(IDD_ADVANCED),
hWnd,
AdvancedDlgProc);
#endif
MAKEINTRESOURCE(IDD_ADVANCED),
hWnd,
AdvancedDlgProc);
hStatusWnd = CreateWindow(STATUSCLASSNAME,
NULL,
WS_CHILD | WS_VISIBLE,
@@ -589,7 +556,6 @@ wWinMain(HINSTANCE hInst,
INT Ret = 1;
HMODULE hRichEd20;
MSG Msg;
HINSTANCE hGetUName = NULL;
hInstance = hInst;
@@ -597,18 +563,6 @@ wWinMain(HINSTANCE hInst,
iccx.dwICC = ICC_TAB_CLASSES;
InitCommonControlsEx(&iccx);
/* Loading the GetUName function */
hGetUName = LoadLibraryW(L"getuname.dll");
if (hGetUName != NULL)
{
GetUName = (GETUNAME) GetProcAddress(hGetUName, "GetUName");
if (GetUName == NULL)
{
FreeLibrary(hGetUName);
hGetUName = NULL;
}
}
if (RegisterMapClasses(hInstance))
{
hRichEd20 = LoadLibraryW(L"RICHED20.DLL");
@@ -634,8 +588,5 @@ wWinMain(HINSTANCE hInst,
UnregisterMapClasses(hInstance);
}
if (hGetUName != NULL)
FreeLibrary(hGetUName);
return Ret;
}

View File

@@ -4,18 +4,18 @@ IDD_CHARMAP DIALOGEX 6, 6, 292, 224
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_CHILD | WS_VISIBLE
BEGIN
LTEXT "&Font:", IDC_STATIC, 6, 7, 24, 9
LTEXT "Font:", IDC_STATIC, 6, 7, 24, 9
COMBOBOX IDC_FONTCOMBO, 36, 5, 210, 210, WS_CHILD | WS_VISIBLE |
WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT | CBS_HASSTRINGS
PUSHBUTTON "&Help", IDC_CMHELP, 249, 5, 35, 13
PUSHBUTTON "Help", IDC_CMHELP, 249, 5, 35, 13
CONTROL "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP |
WS_VSCROLL, 20, 22, 266, 156
LTEXT "Ch&aracters to copy:", IDC_STATIC, 6, 188, 66, 9
LTEXT "Characters to copy:", IDC_STATIC, 6, 188, 66, 9
CONTROL "", IDC_TEXTBOX, RICHEDIT_CLASS, ES_AUTOHSCROLL | WS_BORDER |
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
DEFPUSHBUTTON "&Select", IDC_SELECT, 194, 186, 44, 13
PUSHBUTTON "&Copy", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
CONTROL "Ad&vanced view", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
DEFPUSHBUTTON "Select", IDC_SELECT, 194, 186, 44, 13
PUSHBUTTON "Copy", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
CONTROL "Advanced view", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
WS_TABSTOP, 8, 208, 95, 10
END
@@ -23,14 +23,14 @@ IDD_ADVANCED DIALOGEX 0, 0, 292, 64
STYLE DS_SHELLFONT | WS_CHILD
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Charse&t:", IDC_STATIC, 8, 8, 48, 8
LTEXT "Charset:", IDC_STATIC, 8, 8, 48, 8
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "&Group by:", IDC_STATIC, 8, 28, 50, 8
LTEXT "Group by:", IDC_STATIC, 8, 28, 50, 8
COMBOBOX IDC_COMBO_GROUPBY, 72, 24, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Sea&rch", IDC_BUTTON_SEARCH, 200, 44, 50, 14
PUSHBUTTON "Search", IDC_BUTTON_SEARCH, 200, 44, 50, 14
EDITTEXT IDC_EDIT_SEARCH, 72, 44, 116, 14, ES_AUTOHSCROLL
LTEXT "S&earch for:", IDC_STATIC, 8, 48, 42, 8
LTEXT "&Unicode:", IDC_STATIC, 200, 8, 30, 8
LTEXT "Search for:", IDC_STATIC, 8, 48, 42, 8
LTEXT "Unicode:", IDC_STATIC, 200, 8, 30, 8
EDITTEXT IDC_EDIT_UNICODE, 236, 4, 28, 12, ES_AUTOHSCROLL
END
@@ -40,7 +40,7 @@ FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "Character Map v0.1\nCopyright (C) 2007 Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 150, 36
PUSHBUTTON "&Close", IDOK, 75, 162, 44, 15
PUSHBUTTON "Close", IDOK, 75, 162, 44, 15
ICON IDI_ICON, IDC_STATIC, 10, 10, 7, 30
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 194, 107, WS_VISIBLE | WS_VSCROLL |
WS_TABSTOP | ES_READONLY | ES_MULTILINE

View File

@@ -21,7 +21,7 @@ END
IDD_ADVANCED DIALOGEX 0, 0, 292, 64
STYLE DS_SHELLFONT | WS_CHILD
FONT 9, "MS UI Gothic"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Charset:", IDC_STATIC, 8, 8, 48, 8
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP

View File

@@ -5,7 +5,7 @@
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
IDD_CHARMAP DIALOGEX 6, 6, 292, 224
FONT 9, "MS Shell Dlg", 0, 0
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_CHILD | WS_VISIBLE
BEGIN
LTEXT "글꼴:", IDC_STATIC, 6, 7, 24, 9
@@ -25,7 +25,7 @@ END
IDD_ADVANCED DIALOGEX 0, 0, 292, 64
STYLE DS_SHELLFONT | WS_CHILD
FONT 9, "MS Shell Dlg"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Charset:", IDC_STATIC, 8, 8, 48, 8
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@@ -40,7 +40,7 @@ END
IDD_ABOUTBOX DIALOGEX 22, 16, 210, 182
CAPTION "문자표에 대하여"
FONT 9, "MS Shell Dlg", 0, 0
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "Character Map v0.1\nCopyright (C) 2007 Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 150, 36

View File

@@ -19,7 +19,7 @@ BEGIN
LTEXT "C&aractere de copiat:", IDC_STATIC, 6, 188, 66, 9
CONTROL "", IDC_TEXTBOX, RICHEDIT_CLASS, ES_AUTOHSCROLL | WS_BORDER |
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
DEFPUSHBUTTON "S&electează", IDC_SELECT, 194, 186, 44, 13
DEFPUSHBUTTON "&Selectează", IDC_SELECT, 194, 186, 44, 13
PUSHBUTTON "&Copiază", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
CONTROL "Mod a&vansat", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
WS_TABSTOP, 8, 208, 95, 10
@@ -33,7 +33,7 @@ BEGIN
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "&Grupare după:", IDC_STATIC, 8, 28, 50, 8
COMBOBOX IDC_COMBO_GROUPBY, 72, 24, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Caută", IDC_BUTTON_SEARCH, 200, 44, 50, 14
PUSHBUTTON "Cau&tă", IDC_BUTTON_SEARCH, 200, 44, 50, 14
EDITTEXT IDC_EDIT_SEARCH, 72, 44, 116, 14, ES_AUTOHSCROLL
LTEXT "Căuta&re:", IDC_STATIC, 8, 48, 42, 8
LTEXT "&Unicode:", IDC_STATIC, 200, 8, 30, 8
@@ -45,7 +45,7 @@ CAPTION "Despre"
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "Hartă de caractere v0.1\nDrept de autor (C) 2007 Ged Murphy (gedmurphy@reactos.org)\nTraducere de Ștefan Fulea (stefan.fulea@mail.md)", IDC_STATIC, 48, 7, 210, 36
LTEXT "Hartă a caracterelor v0.1\nDrept de autor (C) 2007 Ged Murphy (gedmurphy@reactos.org)\nTraducere de Ștefan Fulea (stefan.fulea@mail.md)", IDC_STATIC, 48, 7, 210, 36
PUSHBUTTON "Î&nchide", IDOK, 105, 162, 44, 15
ICON IDI_ICON, IDC_STATIC, 10, 10, 7, 30
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 254, 107, WS_VISIBLE | WS_VSCROLL |
@@ -56,5 +56,5 @@ STRINGTABLE
BEGIN
IDS_LICENSE "Această aplicație este publică; fiind permisă modificarea și/sau (re)distribuția sa în termenii Licenței Publice Generale GNU publicată de Free Software Foundation; sau versiunea 2 a Licenței, sau (la alegere) a oricărei versiuni ulterioare.\r\n\r\nAceastă aplicație este distribuită doar în speranța de a fi utilă, FĂRĂ însă NICI O GARANȚIE; nici măcar cu garanția implicită a VANDABILITĂȚII sau a UTILITĂȚII ÎNTR-UN SCOP ANUME. Pentru mai multe detalii consultați Licența Publică Generală GNU.\r\n\r\nPuteți vedea această licență aici:\r\nhttp://www.gnu.org/licenses/gpl.html\r\n\r\nDe asemenea puteți consulta traduceri neoficiale ale acestei licențe aici:\r\nhttp://www.gnu.org/licenses/translations.html"
IDS_ABOUT "&Despre…"
IDS_TITLE "Hartă de caractere"
IDS_TITLE "Hartă a caracterelor"
END

View File

@@ -6,33 +6,33 @@ IDD_CHARMAP DIALOGEX 6, 6, 292, 224
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_CHILD | WS_VISIBLE
BEGIN
LTEXT "&Шрифт:", IDC_STATIC, 6, 7, 27, 9
LTEXT "Шрифт:", IDC_STATIC, 6, 7, 27, 9
COMBOBOX IDC_FONTCOMBO, 36, 5, 210, 210, WS_CHILD | WS_VISIBLE |
WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT | CBS_HASSTRINGS
PUSHBUTTON "&Справка", IDC_CMHELP, 249, 5, 35, 13
PUSHBUTTON "Справка", IDC_CMHELP, 249, 5, 35, 13
CONTROL "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP |
WS_VSCROLL, 20, 22, 266, 156
LTEXT "Д&ля копирования:", IDC_STATIC, 6, 188, 95, 9
LTEXT "Для копирования:", IDC_STATIC, 6, 188, 95, 9
CONTROL "", IDC_TEXTBOX, RICHEDIT_CLASS, ES_AUTOHSCROLL | WS_BORDER |
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
DEFPUSHBUTTON "&Выбрать", IDC_SELECT, 194, 186, 44, 13
PUSHBUTTON "&Копировать", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
CONTROL "&Дополнительные параметры", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
WS_TABSTOP, 8, 208, 110, 10
DEFPUSHBUTTON "Выбрать", IDC_SELECT, 194, 186, 44, 13
PUSHBUTTON "Копировать", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
CONTROL "Дополнительные параметры", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
WS_TABSTOP, 8, 208, 95, 10
END
IDD_ADVANCED DIALOGEX 0, 0, 292, 64
STYLE DS_SHELLFONT | WS_CHILD
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "&Набор символов:", IDC_STATIC, 8, 8, 55, 8
LTEXT "Набор символов:", IDC_STATIC, 8, 8, 55, 8
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
LTEXT "&Группировка:", IDC_STATIC, 8, 28, 50, 8
LTEXT "Группировка:", IDC_STATIC, 8, 28, 50, 8
COMBOBOX IDC_COMBO_GROUPBY, 72, 24, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Найти", IDC_BUTTON_SEARCH, 200, 44, 50, 14
EDITTEXT IDC_EDIT_SEARCH, 72, 44, 116, 14, ES_AUTOHSCROLL
LTEXT "П&оиск:", IDC_STATIC, 8, 48, 42, 8
LTEXT "&Юникод:", IDC_STATIC, 200, 8, 30, 8
LTEXT "Поиск:", IDC_STATIC, 8, 48, 42, 8
LTEXT "Юникод:", IDC_STATIC, 200, 8, 30, 8
EDITTEXT IDC_EDIT_UNICODE, 236, 4, 28, 12, ES_AUTOHSCROLL
END
@@ -42,7 +42,7 @@ FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "Таблица символов v0.1\nCopyright (C) 2007 Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 150, 36
PUSHBUTTON "&Закрыть", IDOK, 75, 162, 44, 15
PUSHBUTTON "Закрыть", IDOK, 75, 162, 44, 15
ICON IDI_ICON, IDC_STATIC, 10, 10, 7, 30
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 194, 107, WS_VISIBLE | WS_VSCROLL |
WS_TABSTOP | ES_READONLY | ES_MULTILINE

View File

@@ -9,7 +9,7 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
IDD_CHARMAP DIALOGEX 6, 6, 292, 224
FONT 9, "MS Shell Dlg", 0, 0
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_CHILD | WS_VISIBLE
BEGIN
LTEXT "字体:", IDC_STATIC, 6, 7, 24, 9
@@ -29,7 +29,7 @@ END
IDD_ADVANCED DIALOGEX 0, 0, 292, 64
STYLE DS_SHELLFONT | WS_CHILD
FONT 9, "MS Shell Dlg"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "字符集:", IDC_STATIC, 8, 8, 48, 8
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@@ -44,7 +44,7 @@ END
IDD_ABOUTBOX DIALOGEX 22, 16, 210, 182
CAPTION "关于字符映射表"
FONT 9, "MS Shell Dlg", 0, 0
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "字符映射表 v0.1\nCopyright (C) 2007 Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 150, 36

View File

@@ -9,7 +9,7 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
IDD_CHARMAP DIALOGEX 6, 6, 292, 224
FONT 9, "MS Shell Dlg", 0, 0
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_CHILD | WS_VISIBLE
BEGIN
LTEXT "字體:", IDC_STATIC, 6, 7, 24, 9
@@ -29,7 +29,7 @@ END
IDD_ADVANCED DIALOGEX 0, 0, 292, 64
STYLE DS_SHELLFONT | WS_CHILD
FONT 9, "MS Shell Dlg"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "字元集:", IDC_STATIC, 8, 8, 48, 8
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@@ -44,7 +44,7 @@ END
IDD_ABOUTBOX DIALOGEX 22, 16, 210, 182
CAPTION "關於字元對應表"
FONT 9, "MS Shell Dlg", 0, 0
FONT 8, "MS Shell Dlg", 0, 0
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
BEGIN
LTEXT "字元對應表 v0.1\nCopyright (C) 2007 Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 150, 36

View File

@@ -140,7 +140,6 @@ LrgCellWndProc(HWND hwnd,
EndPaint(hwnd,
&ps);
UpdateStatusBar(infoPtr->pActiveCell->ch);
break;
}

View File

@@ -16,6 +16,14 @@ static const WCHAR szLrgCellWndClass[] = L"LrgCellWnd";
#define MAX_ROWS (0xFFFF / XCELLS) + 1 - YCELLS
static
VOID
TagFontToCell(PCELL pCell,
WCHAR ch)
{
pCell->ch = ch;
}
static
VOID
@@ -99,40 +107,33 @@ FillGrid(PMAP infoPtr,
INT x, y;
RECT rc;
PCELL Cell;
INT i, added;
hOldFont = SelectObject(ps->hdc,
infoPtr->hFont);
i = XCELLS * infoPtr->iYStart;
added = 0;
for (y = 0; y < YCELLS; y++)
for (x = 0; x < XCELLS; x++)
{
ch = (WCHAR)infoPtr->ValidGlyphs[i];
Cell = &infoPtr->Cells[y][x];
if (IntersectRect(&rc,
&ps->rcPaint,
&Cell->CellExt))
if (!IntersectRect(&rc,
&ps->rcPaint,
&Cell->CellExt))
{
Cell->ch = ch;
DrawTextW(ps->hdc,
&ch,
1,
&Cell->CellInt,
DT_CENTER | DT_VCENTER | DT_SINGLELINE);
added++;
continue;
}
i++;
ch = (WCHAR)i;
ch = (WCHAR)((XCELLS * (y + infoPtr->iYStart)) + x);
TagFontToCell(Cell, ch);
DrawTextW(ps->hdc,
&ch,
1,
&Cell->CellInt,
DT_CENTER | DT_VCENTER | DT_SINGLELINE);
}
SelectObject(ps->hdc,
hOldFont);
}
@@ -212,9 +213,6 @@ SetFont(PMAP infoPtr,
LPWSTR lpFontName)
{
HDC hdc;
WCHAR ch[MAX_GLYPHS];
WORD out[MAX_GLYPHS];
DWORD i, j;
/* Destroy Zoom window, since it was created with older font */
DestroyWindow(infoPtr->hLrgWnd);
@@ -227,7 +225,9 @@ SetFont(PMAP infoPtr,
sizeof(LOGFONTW));
hdc = GetDC(infoPtr->hMapWnd);
infoPtr->CurrentFont.lfHeight = GetDeviceCaps(hdc, LOGPIXELSY) / 5;
infoPtr->CurrentFont.lfHeight = GetDeviceCaps(hdc,
LOGPIXELSY) / 5;
ReleaseDC(infoPtr->hMapWnd, hdc);
infoPtr->CurrentFont.lfCharSet = DEFAULT_CHARSET;
wcsncpy(infoPtr->CurrentFont.lfFaceName,
@@ -240,43 +240,12 @@ SetFont(PMAP infoPtr,
NULL,
TRUE);
infoPtr->pActiveCell = &infoPtr->Cells[0][0];
// Get all the valid glyphs in this font
SelectObject(hdc, infoPtr->hFont);
for (i = 0; i < MAX_GLYPHS; i++)
ch[i] = (WCHAR)i;
if (GetGlyphIndicesW(hdc,
ch,
MAX_GLYPHS,
out,
GGI_MARK_NONEXISTING_GLYPHS) != GDI_ERROR)
/* Test if zoom window must be reopened */
if (infoPtr->pActiveCell != NULL &&
infoPtr->pActiveCell->bLarge)
{
j = 0;
for (i = 0; i < MAX_GLYPHS; i++)
{
if (out[i] != 0xffff)
{
infoPtr->ValidGlyphs[j] = ch[i];
j++;
}
}
infoPtr->NumValidGlyphs = j;
CreateLargeCell(infoPtr);
}
ReleaseDC(infoPtr->hMapWnd, hdc);
infoPtr->NumRows = infoPtr->NumValidGlyphs / XCELLS;
if (infoPtr->NumValidGlyphs % XCELLS)
infoPtr->NumRows += 1;
infoPtr->NumRows = (infoPtr->NumRows > YCELLS) ? infoPtr->NumRows - YCELLS : 0;
SetScrollRange(infoPtr->hMapWnd, SB_VERT, 0, infoPtr->NumRows, FALSE);
SetScrollPos(infoPtr->hMapWnd, SB_VERT, 0, TRUE);
infoPtr->iYStart = 0;
}
@@ -410,7 +379,8 @@ OnCreate(PMAP infoPtr,
SetGrid(infoPtr);
SetScrollPos(infoPtr->hParent, SB_VERT, 0, TRUE);
SetScrollRange(hwnd, SB_VERT, 0, MAX_ROWS, FALSE);
SetScrollPos(hwnd, SB_VERT, 0, TRUE);
Ret = TRUE;
}
@@ -454,8 +424,8 @@ OnVScroll(PMAP infoPtr,
break;
}
infoPtr->iYStart = max(0, infoPtr->iYStart);
infoPtr->iYStart = min(infoPtr->iYStart, infoPtr->NumRows);
infoPtr->iYStart = max(0,
min(infoPtr->iYStart, MAX_ROWS));
iYDiff = iOldYStart - infoPtr->iYStart;
if (iYDiff)
@@ -517,7 +487,7 @@ OnPaint(PMAP infoPtr,
{
return;
}
ps.hdc = (HDC)wParam;
hdc = (HDC)wParam;
}
else
{

View File

@@ -7,13 +7,10 @@
#include <winuser.h>
#include <wingdi.h>
#include "resource.h"
#define SIZEOF(_v) (sizeof(_v) / sizeof(*_v))
#define MAX_GLYPHS 65536
#define XCELLS 20
#define YCELLS 10
#define XLARGE 45
@@ -47,11 +44,6 @@ typedef struct _MAP
HFONT hFont;
LOGFONTW CurrentFont;
INT iYStart;
INT NumRows;
USHORT ValidGlyphs[MAX_GLYPHS];
USHORT NumValidGlyphs;
} MAP, *PMAP;
typedef struct {
@@ -74,7 +66,6 @@ BOOL RegisterMapClasses(HINSTANCE hInstance);
VOID UnregisterMapClasses(HINSTANCE hInstance);
/* charmap.c */
VOID UpdateStatusBar(WCHAR wch);
extern VOID ChangeMapFont(HWND hDlg);
/* settings.c */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -58,7 +58,7 @@ extern void LoadSettings(void)
if (RegOpenKeyEx(HKEY_CURRENT_USER, g_szGeneralRegKey, 0, KEY_READ, &hKey) == ERROR_SUCCESS)
{
TCHAR szBuffer[MAX_PATH];
DWORD dwAdvancedChecked;
DWORD dwAdvanChecked;
unsigned long type = REG_DWORD, size = 1024;
/* Restore last selected font */
@@ -89,9 +89,9 @@ extern void LoadSettings(void)
}
}
RegQueryValueEx(hKey, _T("Advanced"), NULL, &type, (LPBYTE)&dwAdvancedChecked, &size);
RegQueryValueEx(hKey, _T("Advanced"), NULL, &type, (LPBYTE)&dwAdvanChecked, &size);
if(dwAdvancedChecked == TRUE)
if(dwAdvanChecked == TRUE)
SendDlgItemMessage(hCharmapDlg, IDC_CHECK_ADVANCED, BM_CLICK, MF_CHECKED, 0);
RegCloseKey(hKey);
@@ -114,24 +114,27 @@ extern void SaveSettings(void)
{
HKEY hKey = NULL;
if (RegCreateKeyEx(HKEY_CURRENT_USER, g_szGeneralRegKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, NULL, &hKey, NULL) == ERROR_SUCCESS)
if (RegCreateKey(HKEY_CURRENT_USER, g_szGeneralRegKey, &hKey) == ERROR_SUCCESS)
{
TCHAR szBuffer[MAX_PATH];
if (RegOpenKeyEx(HKEY_CURRENT_USER, g_szGeneralRegKey, 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)
{
TCHAR szBuffer[MAX_PATH];
hWnd = GetDlgItem(hCharmapDlg, IDC_FONTCOMBO);
ComboBox_GetText(hWnd, szBuffer, MAX_PATH);
hWnd = GetDlgItem(hCharmapDlg, IDC_FONTCOMBO);
ComboBox_GetText(hWnd, szBuffer, MAX_PATH);
if(*szBuffer != '\0')
RegSetValueEx(hKey, _T("Font"), 0, REG_SZ, (LPBYTE) szBuffer, (DWORD) MAX_PATH);
if(*szBuffer != '\0')
RegSetValueEx(hKey, _T("Font"), 0, REG_SZ, (LPBYTE) szBuffer, (DWORD) MAX_PATH);
hWnd = GetDlgItem(hCharmapDlg, IDC_COMBO_CHARSET);
ComboBox_GetText(hWnd, szBuffer, MAX_PATH);
hWnd = GetDlgItem(hCharmapDlg, IDC_COMBO_CHARSET);
ComboBox_GetText(hWnd, szBuffer, MAX_PATH);
if(*szBuffer != '\0')
RegSetValueEx(hKey, _T("CodePage"), 0, REG_SZ, (LPBYTE) szBuffer, (DWORD) MAX_PATH);
if(*szBuffer != '\0')
RegSetValueEx(hKey, _T("CodePage"), 0, REG_SZ, (LPBYTE) szBuffer, (DWORD) MAX_PATH);
RegSetValueEx(hKey, _T("Advanced"), 0, REG_DWORD, (LPBYTE)&Settings.IsAdvancedView, (DWORD) sizeof(DWORD));
RegSetValueEx(hKey, _T("Advanced"), 0, REG_DWORD, (LPBYTE)&Settings.IsAdvancedView, (DWORD) sizeof(DWORD));
RegCloseKey(hKey);
RegCloseKey(hKey);
}
}
}

View File

@@ -1,27 +0,0 @@
PROJECT(CHARMAP)
set_cpp(WITH_RTTI WITH_RUNTIME WITH_EXCEPTIONS)
if(NOT MSVC)
# HACK: this should be enabled globally!
add_compile_flags_language("-std=c++11" "CXX")
endif()
include_directories(
${REACTOS_SOURCE_DIR}/sdk/lib/atl
includes)
list(APPEND SOURCE
precomp.h
MainWindow.cpp
)
add_library(charmap SHARED
${SOURCE}
charmap.rc)
set_module_type(charmap win32gui UNICODE)
target_link_libraries(charmap uuid atlnew wine)
add_importlibs(charmap advapi32 user32 gdi32 comctl32 version msvcrt kernel32 ole32 uxtheme ntdll)
add_pch(charmap precomp.h SOURCE)
add_cd_file(TARGET charmap DESTINATION reactos/system32 FOR all)

View File

@@ -1,94 +0,0 @@
/*
* PROJECT: ReactOS Character Map
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/charmap/cell.cpp
* PURPOSE: Class for each individual cell
* COPYRIGHT: Copyright 2015 Ged Murphy <gedmurphy@reactos.org>
*/
#include "precomp.h"
#include "Cell.h"
/* DATA *****************************************************/
/* PUBLIC METHODS **********************************************/
CCell::CCell(
_In_ HWND hParent
) :
CCell(hParent, RECT{0})
{
}
CCell::CCell(
_In_ HWND hParent,
_In_ RECT& CellCoordinates
) :
m_hParent(hParent),
m_CellCoordinates(CellCoordinates),
m_Char(L'*'),
m_bHasFocus(false),
m_bIsLarge(false)
{
}
CCell::~CCell()
{
}
bool
CCell::OnPaint(_In_ PAINTSTRUCT &PaintStruct)
{
// Check if this cell is in our paint region
BOOL NeedsPaint; RECT rect;
NeedsPaint = IntersectRect(&rect,
&PaintStruct.rcPaint,
&m_CellCoordinates);
if (NeedsPaint == FALSE)
return false;
// Draw the cell border
BOOL b = Rectangle(PaintStruct.hdc,
m_CellCoordinates.left,
m_CellCoordinates.top,
m_CellCoordinates.right,
m_CellCoordinates.bottom);
// Calculate an internal drawing canvas for the cell
RECT Internal;
CopyRect(&Internal, &m_CellCoordinates);
InflateRect(&Internal, -1, -1);
// Check if this cell has focus
if (m_bHasFocus)
{
// Draw the smaller cell to make it look selected
Rectangle(PaintStruct.hdc,
Internal.left,
Internal.top,
Internal.right,
Internal.bottom);
}
int Success;
Success = DrawTextW(PaintStruct.hdc,
&m_Char,
1,
&Internal,
DT_CENTER | DT_VCENTER | DT_SINGLELINE);
return (Success != 0);
}
void
CCell::SetCellCoordinates(
_In_ RECT& Coordinates
)
{
m_CellCoordinates = Coordinates;
}

View File

@@ -1,37 +0,0 @@
#pragma once
class CCell
{
private:
HWND m_hParent;
RECT m_CellCoordinates;
bool m_bHasFocus;
bool m_bIsLarge;
WCHAR m_Char;
public:
CCell(
_In_ HWND hParent
);
CCell(
_In_ HWND hParent,
_In_ RECT& CellLocation
);
~CCell();
LPRECT GetCellCoordinates() { return &m_CellCoordinates; }
void SetFocus(_In_ bool HasFocus) { m_bHasFocus = HasFocus; }
WCHAR GetChar() { return m_Char; }
void SetChar(_In_ WCHAR ch) { m_Char = ch; }
bool OnPaint(
_In_ PAINTSTRUCT &PaintStruct
);
void SetCellCoordinates(
_In_ RECT& Coordinates
);
};

View File

@@ -1,523 +0,0 @@
/*
* PROJECT: ReactOS Character Map
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/charmap/GridView.cpp
* PURPOSE: Class for for the window which contains the font matrix
* COPYRIGHT: Copyright 2015 Ged Murphy <gedmurphy@reactos.org>
*/
#include "precomp.h"
#include "GridView.h"
#include "Cell.h"
/* DATA *****************************************************/
extern HINSTANCE g_hInstance;
/* PUBLIC METHODS **********************************************/
CGridView::CGridView() :
m_xNumCells(20),
m_yNumCells(10),
m_ScrollPosition(0),
m_NumRows(0)
{
m_szMapWndClass = L"CharGridWClass";
}
CGridView::~CGridView()
{
}
bool
CGridView::Create(
_In_ HWND hParent
)
{
WNDCLASSW wc = { 0 };
wc.style = CS_DBLCLKS;
wc.lpfnWndProc = MapWndProc;
wc.cbWndExtra = sizeof(CGridView *);
wc.hInstance = g_hInstance;
wc.hCursor = LoadCursorW(NULL, (LPWSTR)IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = m_szMapWndClass;
if (RegisterClassW(&wc))
{
m_hwnd = CreateWindowExW(0,
m_szMapWndClass,
NULL,
WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL,
0,0,0,0,
hParent,
NULL,
g_hInstance,
this);
}
return !!(m_hwnd != NULL);
}
bool
CGridView::SetFont(
_In_ CAtlString& FontName
)
{
// Create a temporary container for the new font
CurrentFont NewFont = { 0 };
NewFont.FontName = FontName;
// Get the DC for the full grid window
HDC hdc;
hdc = GetDC(m_hwnd);
if (hdc == NULL) return false;
// Setup the logfont structure
NewFont.Font.lfHeight = 0; // This is set in WM_SIZE
NewFont.Font.lfCharSet = DEFAULT_CHARSET;
StringCchCopyW(NewFont.Font.lfFaceName, LF_FACESIZE, FontName);
// Get a handle to the new font
NewFont.hFont = CreateFontIndirectW(&NewFont.Font);
if (NewFont.hFont == NULL)
{
ReleaseDC(m_hwnd, hdc);
return false;
}
// Setup an array of all possible non-BMP indices
WCHAR ch[MAX_GLYPHS];
for (int i = 0; i < MAX_GLYPHS; i++)
ch[i] = (WCHAR)i;
HFONT hOldFont;
hOldFont = (HFONT)SelectObject(hdc, NewFont.hFont);
// Translate all the indices into glyphs
WORD out[MAX_GLYPHS];
DWORD Status;
Status = GetGlyphIndicesW(hdc,
ch,
MAX_GLYPHS,
out,
GGI_MARK_NONEXISTING_GLYPHS);
ReleaseDC(m_hwnd, hdc);
if (Status == GDI_ERROR)
{
SelectObject(hdc, hOldFont);
return false;
}
// Loop all the glyphs looking for valid ones
// and store those in our font data
int j = 0;
for (int i = 0; i < MAX_GLYPHS; i++)
{
if (out[i] != 0xffff)
{
NewFont.ValidGlyphs[j] = ch[i];
j++;
}
}
NewFont.NumValidGlyphs = j;
// Calculate the number of rows required to hold all glyphs
m_NumRows = NewFont.NumValidGlyphs / m_xNumCells;
if (NewFont.NumValidGlyphs % m_xNumCells)
m_NumRows += 1;
// Set the scrollbar in relation to the rows
SetScrollRange(m_hwnd, SB_VERT, 0, m_NumRows - m_yNumCells, FALSE);
// We're done, update the current font
m_CurrentFont = NewFont;
// We changed the font, we'll need to repaint the whole window
InvalidateRect(m_hwnd,
NULL,
TRUE);
return true;
}
/* PRIVATE METHODS **********************************************/
bool
CGridView::UpdateCellCoordinates(
)
{
// Go through all the cells and calculate
// their coordinates within the grid
for (int y = 0; y < m_yNumCells; y++)
for (int x = 0; x < m_xNumCells; x++)
{
RECT CellCoordinates;
CellCoordinates.left = x * m_CellSize.cx;
CellCoordinates.top = y * m_CellSize.cy;
CellCoordinates.right = (x + 1) * m_CellSize.cx + 1;
CellCoordinates.bottom = (y + 1) * m_CellSize.cy + 1;
m_Cells[y][x]->SetCellCoordinates(CellCoordinates);
}
return true;
}
LRESULT
CGridView::OnCreate(
_In_ HWND hwnd,
_In_ HWND hParent
)
{
m_hwnd = hwnd;
m_hParent = hParent;
// C++ doesn't allow : "CCells ***C = new CCell***[x * y]"
// so we have to build the 2d array up manually
m_Cells = new CCell**[m_yNumCells]; // rows
for (int i = 0; i < m_yNumCells; i++)
m_Cells[i] = new CCell*[m_xNumCells]; // columns
for (int y = 0; y < m_yNumCells; y++)
for (int x = 0; x < m_xNumCells; x++)
{
m_Cells[y][x] = new CCell(m_hwnd);
}
// Give the first cell focus
SetCellFocus(m_Cells[0][0]);
return 0;
}
LRESULT
CGridView::OnSize(
_In_ INT Width,
_In_ INT Height
)
{
// Get the client area of the main dialog
RECT ParentRect;
GetClientRect(m_hParent, &ParentRect);
// Calculate the grid size using the parent
m_ClientCoordinates.left = ParentRect.left + 25;
m_ClientCoordinates.top = ParentRect.top + 50;
m_ClientCoordinates.right = ParentRect.right - m_ClientCoordinates.left - 10;
m_ClientCoordinates.bottom = ParentRect.bottom - m_ClientCoordinates.top - 70;
// Resize the grid window
SetWindowPos(m_hwnd,
NULL,
m_ClientCoordinates.left,
m_ClientCoordinates.top,
m_ClientCoordinates.right,
m_ClientCoordinates.bottom,
SWP_NOZORDER | SWP_SHOWWINDOW);
// Get the client area we can draw on. The position we set above includes
// a scrollbar which we obviously can't draw on. GetClientRect gives us
// the size without the scroll, and it's more efficient than getting the
// scroll metrics and calculating the size from that
RECT ClientRect;
GetClientRect(m_hwnd, &ClientRect);
m_CellSize.cx = ClientRect.right / m_xNumCells;
m_CellSize.cy = ClientRect.bottom / m_yNumCells;
// Let all the cells know about their new coords
UpdateCellCoordinates();
// We scale the font size up or down depending on the cell size
if (m_CurrentFont.hFont)
{
// Delete the existing font
DeleteObject(m_CurrentFont.hFont);
HDC hdc;
hdc = GetDC(m_hwnd);
if (hdc)
{
// Update the font size with respect to the cell size
m_CurrentFont.Font.lfHeight = (m_CellSize.cy - 5);
m_CurrentFont.hFont = CreateFontIndirectW(&m_CurrentFont.Font);
ReleaseDC(m_hwnd, hdc);
}
}
// Redraw the whole grid
InvalidateRect(m_hwnd, &ClientRect, TRUE);
return 0;
}
VOID
CGridView::OnVScroll(_In_ INT Value,
_In_ INT Pos)
{
INT PrevScrollPosition = m_ScrollPosition;
switch (Value)
{
case SB_LINEUP:
m_ScrollPosition -= 1;
break;
case SB_LINEDOWN:
m_ScrollPosition += 1;
break;
case SB_PAGEUP:
m_ScrollPosition -= m_yNumCells;
break;
case SB_PAGEDOWN:
m_ScrollPosition += m_yNumCells;
break;
case SB_THUMBTRACK:
m_ScrollPosition = Pos;
break;
default:
break;
}
// Make sure we don't scroll past row 0 or max rows
m_ScrollPosition = max(0, m_ScrollPosition);
m_ScrollPosition = min(m_ScrollPosition, m_NumRows);
// Check if there's a difference from the previous position
INT ScrollDiff;
ScrollDiff = PrevScrollPosition - m_ScrollPosition;
if (ScrollDiff)
{
// Set the new scrollbar position in the scroll box
SetScrollPos(m_hwnd,
SB_VERT,
m_ScrollPosition,
TRUE);
// Check if the scrollbar has moved more than the
// number of visible rows (draged or paged)
if (abs(ScrollDiff) < m_yNumCells)
{
RECT rect;
GetClientRect(m_hwnd, &rect);
// Scroll the visible cells which remain within the grid
// and invalidate any new ones which appear from the top / bottom
ScrollWindowEx(m_hwnd,
0,
ScrollDiff * m_CellSize.cy,
&rect,
&rect,
NULL,
NULL,
SW_INVALIDATE);
}
else
{
// All the cells need to be redrawn
InvalidateRect(m_hwnd,
NULL,
TRUE);
}
}
}
LRESULT
CGridView::OnPaint(
_In_opt_ HDC hdc
)
{
PAINTSTRUCT PaintStruct = { 0 };
HDC LocalHdc = NULL;
BOOL bSuccess = FALSE;
// Check if we were passed a DC
if (hdc == NULL)
{
// We weren't, let's get one
LocalHdc = BeginPaint(m_hwnd, &PaintStruct);
if (LocalHdc) bSuccess = TRUE;
}
else
{
// Use the existing DC and just get the region to paint
bSuccess = GetUpdateRect(m_hwnd,
&PaintStruct.rcPaint,
TRUE);
if (bSuccess)
{
// Update the struct with the DC we were passed
PaintStruct.hdc = (HDC)hdc;
}
}
// Make sure we have a valid DC
if (bSuccess)
{
// Paint the grid and chars
DrawGrid(&PaintStruct);
if (LocalHdc)
{
EndPaint(m_hwnd, &PaintStruct);
}
}
return 0;
}
LRESULT
CALLBACK
CGridView::MapWndProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
CGridView *This;
LRESULT RetCode = 0;
// Get the object pointer from window context
This = (CGridView *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
if (This == NULL)
{
// Check that this isn't a create message
if (uMsg != WM_CREATE)
{
// Don't handle null info pointer
goto HandleDefaultMessage;
}
}
switch (uMsg)
{
case WM_CREATE:
{
// Get the object pointer from the create param
This = (CGridView *)((LPCREATESTRUCT)lParam)->lpCreateParams;
// Store the pointer in the window's global user data
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)This);
This->OnCreate(hwnd, ((LPCREATESTRUCTW)lParam)->hwndParent);
break;
}
case WM_SIZE:
{
INT Width, Height;
Width = LOWORD(lParam);
Height = HIWORD(lParam);
This->OnSize(Width, Height);
break;
}
case WM_VSCROLL:
{
INT Value, Pos;
Value = LOWORD(wParam);
Pos = HIWORD(wParam);
This->OnVScroll(Value, Pos);
break;
}
case WM_PAINT:
{
This->OnPaint((HDC)wParam);
break;
}
case WM_DESTROY:
{
This->DeleteCells();
break;
}
default:
{
HandleDefaultMessage:
RetCode = DefWindowProcW(hwnd, uMsg, wParam, lParam);
break;
}
}
return RetCode;
}
void
CGridView::DrawGrid(
_In_ LPPAINTSTRUCT PaintStruct
)
{
// Calculate which glyph to start at based on scroll position
int i;
i = m_xNumCells * m_ScrollPosition;
// Make sure we have the correct font on the DC
HFONT hOldFont;
hOldFont = (HFONT)SelectFont(PaintStruct->hdc,
m_CurrentFont.hFont);
// Traverse all the cells
for (int y = 0; y < m_yNumCells; y++)
for (int x = 0; x < m_xNumCells; x++)
{
// Update the glyph for this cell
WCHAR ch = (WCHAR)m_CurrentFont.ValidGlyphs[i];
m_Cells[y][x]->SetChar(ch);
// Tell it to paint itself
m_Cells[y][x]->OnPaint(*PaintStruct);
i++;
}
SelectObject(PaintStruct->hdc, hOldFont);
}
void
CGridView::DeleteCells()
{
if (m_Cells == nullptr)
return;
// Free cells withing the 2d array
for (int i = 0; i < m_yNumCells; i++)
delete[] m_Cells[i];
delete[] m_Cells;
m_Cells = nullptr;
}
void
CGridView::SetCellFocus(
_In_ CCell* NewActiveCell
)
{
if (m_ActiveCell)
{
// Remove focus from any existing cell
m_ActiveCell->SetFocus(false);
InvalidateRect(m_hwnd, m_ActiveCell->GetCellCoordinates(), TRUE);
}
// Set the new active cell and give it focus
m_ActiveCell = NewActiveCell;
m_ActiveCell->SetFocus(true);
}

View File

@@ -1,92 +0,0 @@
#pragma once
#include "Cell.h"
#define MAX_GLYPHS 0xFFFF
struct CurrentFont
{
CAtlStringW FontName;
LOGFONTW Font;
HFONT hFont;
USHORT ValidGlyphs[MAX_GLYPHS];
USHORT NumValidGlyphs;
};
class CGridView
{
private:
CAtlStringW m_szMapWndClass;
HWND m_hwnd;
HWND m_hParent;
int m_xNumCells;
int m_yNumCells;
RECT m_ClientCoordinates;
SIZE m_CellSize;
CCell*** m_Cells; // *m_Cells[][];
CCell *m_ActiveCell;
INT m_ScrollPosition;
int m_NumRows;
CurrentFont m_CurrentFont;
public:
CGridView();
~CGridView();
bool Create(
_In_ HWND hParent
);
bool SetFont(
_In_ CAtlString& FontName
);
HWND GetHwnd() { return m_hwnd; }
private:
static LRESULT
CALLBACK
MapWndProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
LRESULT OnCreate(
_In_ HWND hwnd,
_In_ HWND hParent
);
LRESULT OnSize(
_In_ INT Width,
_In_ INT Height
);
VOID OnVScroll(
_In_ INT Value,
_In_ INT Pos
);
LRESULT OnPaint(
_In_opt_ HDC hdc
);
bool UpdateCellCoordinates(
);
void DrawGrid(
_In_ LPPAINTSTRUCT PaintStruct
);
void DeleteCells();
void SetCellFocus(
_In_ CCell* NewActiveCell
);
};

View File

@@ -1,537 +0,0 @@
/*
* PROJECT: ReactOS Character Map
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/charmap/MainWindow.cpp
* PURPOSE: Implements the main dialog window
* COPYRIGHT: Copyright 2015 Ged Murphy <gedmurphy@reactos.org>
*/
#include "precomp.h"
#include "MainWindow.h"
/* DATA *****************************************************/
#define ID_ABOUT 0x1
HINSTANCE g_hInstance = NULL;
/* PUBLIC METHODS **********************************************/
CCharMapWindow::CCharMapWindow(void) :
m_hMainWnd(NULL),
m_hStatusBar(NULL),
m_CmdShow(0),
m_hRichEd(NULL),
m_GridView(nullptr)
{
m_GridView = new CGridView();
}
CCharMapWindow::~CCharMapWindow(void)
{
}
bool
CCharMapWindow::Create(_In_ HINSTANCE hInst,
_In_ int nCmdShow)
{
INITCOMMONCONTROLSEX icex;
CAtlStringW szAppName;
int Ret = 1;
// Store the instance
g_hInstance = hInst;
m_CmdShow = nCmdShow;
// 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_TITLE))
{
// Initialize the main window
if (Initialize(szAppName, nCmdShow))
{
// Run the application
Ret = Run();
// Uninitialize the main window
Uninitialize();
}
}
return (Ret == 0);
}
/* PRIVATE METHODS **********************************************/
bool
CCharMapWindow::Initialize(_In_z_ LPCTSTR lpCaption,
_In_ int nCmdShow)
{
// The dialog has a rich edit text box
m_hRichEd = LoadLibraryW(L"riched20.DLL");
if (m_hRichEd == NULL) return false;
return !!(CreateDialogParamW(g_hInstance,
MAKEINTRESOURCE(IDD_CHARMAP),
NULL,
DialogProc,
(LPARAM)this));
}
void
CCharMapWindow::Uninitialize(void)
{
if (m_hRichEd)
FreeLibrary(m_hRichEd);
}
int
CCharMapWindow::Run(void)
{
MSG Msg;
// Pump the message queue
while (GetMessageW(&Msg, NULL, 0, 0) != 0)
{
TranslateMessage(&Msg);
DispatchMessageW(&Msg);
}
return 0;
}
void
CCharMapWindow::UpdateStatusBar(_In_ bool InMenuLoop)
{
SendMessageW(m_hStatusBar,
SB_SIMPLE,
(WPARAM)InMenuLoop,
0);
}
bool
CCharMapWindow::CreateStatusBar(void)
{
int StatWidths[] = { 110, -1 }; // widths of status bar
bool bRet = FALSE;
// Create the status bar
m_hStatusBar = CreateWindowExW(0,
STATUSCLASSNAME,
NULL,
WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP,
0, 0, 0, 0,
m_hMainWnd,
(HMENU)IDD_STATUSBAR,
g_hInstance,
NULL);
if (m_hStatusBar)
{
// Create the sections
bRet = (SendMessageW(m_hStatusBar,
SB_SETPARTS,
sizeof(StatWidths) / sizeof(int),
(LPARAM)StatWidths) != 0);
// Set the status bar for multiple parts output
SendMessage(m_hStatusBar, SB_SIMPLE, (WPARAM)FALSE, (LPARAM)0);
}
return bRet;
}
bool
CCharMapWindow::StatusBarLoadString(_In_ HWND hStatusBar,
_In_ INT PartId,
_In_ HINSTANCE hInstance,
_In_ UINT uID)
{
CAtlStringW szMessage;
bool bRet = false;
// Load the string from the resource
if (szMessage.LoadStringW(hInstance, uID))
{
// Display it on the status bar
bRet = (SendMessageW(hStatusBar,
SB_SETTEXT,
(WPARAM)PartId,
(LPARAM)szMessage.GetBuffer()) != 0);
}
return bRet;
}
BOOL
CCharMapWindow::OnCreate(_In_ HWND hDlg)
{
m_hMainWnd = hDlg;
if (!CreateStatusBar())
return FALSE;
if (!m_GridView->Create(hDlg))
return FALSE;
// Load an 'about' option into the system menu
HMENU hSysMenu;
hSysMenu = GetSystemMenu(m_hMainWnd, FALSE);
if (hSysMenu != NULL)
{
CAtlStringW AboutText;
if (AboutText.LoadStringW(IDS_ABOUT))
{
AppendMenuW(hSysMenu, MF_SEPARATOR, 0, NULL);
AppendMenuW(hSysMenu, MF_STRING, ID_ABOUT, AboutText);
}
}
// Add all the fonts to the
if (!CreateFontComboBox())
return FALSE;
ChangeMapFont();
// Configure Richedit control for sending notification changes.
DWORD evMask;
evMask = SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_GETEVENTMASK, 0, 0);
evMask |= ENM_CHANGE;
SendDlgItemMessage(hDlg, IDC_TEXTBOX, EM_SETEVENTMASK, 0, (LPARAM)evMask);
// Display the window according to the user request
ShowWindow(m_hMainWnd, m_CmdShow);
return TRUE;
}
BOOL
CCharMapWindow::OnSize(
_In_ WPARAM wParam
)
{
RECT rcClient, rcStatus;
INT lvHeight, iStatusHeight;
// Resize the status bar
SendMessage(m_hStatusBar, WM_SIZE, 0, 0);
// Get the statusbar rect and save the height
GetWindowRect(m_hStatusBar, &rcStatus);
iStatusHeight = rcStatus.bottom - rcStatus.top;
// Get the full client rect
GetClientRect(m_hMainWnd, &rcClient);
// Calculate the remaining height for the gridview
lvHeight = rcClient.bottom - iStatusHeight;
// Resize the grid view
SendMessageW(m_GridView->GetHwnd(), WM_SIZE, wParam, 0);
return TRUE;
}
BOOL
CCharMapWindow::OnNotify(_In_ LPARAM lParam)
{
LPNMHDR NmHdr = (LPNMHDR)lParam;
LRESULT Ret = 0;
switch (NmHdr->code)
{
case NM_RCLICK:
{
break;
}
case NM_DBLCLK:
case NM_RETURN:
{
break;
}
}
return Ret;
}
BOOL
CCharMapWindow::OnContext(_In_ LPARAM lParam)
{
return 0;// m_GridView->OnContextMenu(lParam);
}
BOOL
CCharMapWindow::OnCommand(_In_ WPARAM wParam,
_In_ LPARAM /*lParam*/)
{
LRESULT RetCode = 0;
WORD Msg;
// Get the message
Msg = LOWORD(wParam);
switch (Msg)
{
case IDC_CHECK_ADVANCED:
break;
case IDC_FONTCOMBO:
if (HIWORD(wParam) == CBN_SELCHANGE)
{
ChangeMapFont();
}
break;
default:
// We didn't handle it
RetCode = -1;
break;
}
return RetCode;
}
BOOL
CCharMapWindow::OnDestroy(void)
{
// Clear the user data pointer
SetWindowLongPtr(m_hMainWnd, GWLP_USERDATA, 0);
// Break the message loop
PostQuitMessage(0);
return TRUE;
}
INT_PTR CALLBACK
CCharMapWindow::DialogProc(
_In_ HWND hwndDlg,
_In_ UINT Msg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
)
{
CCharMapWindow *This;
LRESULT RetCode = 0;
// Get the object pointer from window context
This = (CCharMapWindow *)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
if (This == NULL)
{
// Check that this isn't a create message
if (Msg != WM_INITDIALOG)
{
// Don't handle null info pointer
return FALSE;
}
}
switch (Msg)
{
case WM_INITDIALOG:
{
// Get the object pointer from the create param
This = (CCharMapWindow *)lParam;
// Store the pointer in the window's global user data
SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)This);
// Call the create handler
return This->OnCreate(hwndDlg);
}
case WM_SIZE:
{
return This->OnSize(wParam);
}
case WM_NOTIFY:
{
return This->OnNotify(lParam);
}
case WM_CONTEXTMENU:
{
return This->OnContext(lParam);
}
case WM_COMMAND:
{
return This->OnCommand(wParam, lParam);
}
case WM_SYSCOMMAND:
switch (wParam)
{
case ID_ABOUT:
// Apportion blame
MessageBoxW(This->m_hMainWnd,
L"ReactOS Character Map\r\nCopyright Ged Murphy 2015",
L"About",
MB_OK | MB_APPLMODAL);
break;
}
break;
case WM_ENTERMENULOOP:
{
This->UpdateStatusBar(true);
return TRUE;
}
case WM_EXITMENULOOP:
{
This->UpdateStatusBar(false);
return TRUE;
}
case WM_CLOSE:
{
// Destroy the main window
return DestroyWindow(hwndDlg);
}
case WM_DESTROY:
{
// Call the destroy handler
return This->OnDestroy();
}
}
return FALSE;
}
struct EnumFontParams
{
CCharMapWindow *This;
HWND hCombo;
};
int
CALLBACK
CCharMapWindow::EnumDisplayFont(ENUMLOGFONTEXW *lpelfe,
NEWTEXTMETRICEXW *lpntme,
DWORD FontType,
LPARAM lParam)
{
EnumFontParams *Params = (EnumFontParams *)lParam;
LPWSTR pszName = lpelfe->elfLogFont.lfFaceName;
/* Skip rotated font */
if (pszName[0] == L'@') return 1;
/* make sure font doesn't already exist in our list */
if (SendMessageW(Params->hCombo,
CB_FINDSTRINGEXACT,
0,
(LPARAM)pszName) == CB_ERR)
{
INT idx;
idx = (INT)SendMessageW(Params->hCombo,
CB_ADDSTRING,
0,
(LPARAM)pszName);
/* record the font's attributes (Fixedwidth and Truetype) */
BOOL fFixed = (lpelfe->elfLogFont.lfPitchAndFamily & FIXED_PITCH) ? TRUE : FALSE;
BOOL fTrueType = (lpelfe->elfLogFont.lfOutPrecision == OUT_STROKE_PRECIS) ? TRUE : FALSE;
/* store this information in the list-item's userdata area */
SendMessageW(Params->hCombo,
CB_SETITEMDATA,
idx,
MAKEWPARAM(fFixed, fTrueType));
}
return 1;
}
bool
CCharMapWindow::CreateFontComboBox()
{
HWND hCombo;
hCombo = GetDlgItem(m_hMainWnd, IDC_FONTCOMBO);
NONCLIENTMETRICSW NonClientMetrics;
NonClientMetrics.cbSize = sizeof(NONCLIENTMETRICSW);
SystemParametersInfoW(SPI_GETNONCLIENTMETRICS,
sizeof(NONCLIENTMETRICSW),
&NonClientMetrics,
0);
// Get a handle to the font
HFONT GuiFont;
GuiFont = CreateFontIndirectW(&NonClientMetrics.lfMessageFont);
// Set the font used in the combo box
SendMessageW(hCombo,
WM_SETFONT,
(WPARAM)GuiFont,
0);
// Set the fonts which we want to enumerate
LOGFONTW FontsToEnum;
ZeroMemory(&FontsToEnum, sizeof(LOGFONTW));
FontsToEnum.lfCharSet = DEFAULT_CHARSET;
// Set the params we want to pass to the callback
EnumFontParams Params;
Params.This = this;
Params.hCombo = hCombo;
// Get a DC for combo box
HDC hdc;
hdc = GetDC(hCombo);
// Enumerate all the fonts
int ret;
ret = EnumFontFamiliesExW(hdc,
&FontsToEnum,
(FONTENUMPROCW)EnumDisplayFont,
(LPARAM)&Params,
0);
ReleaseDC(hCombo, hdc);
DeleteObject(GuiFont);
// Select the first item in the list
SendMessageW(hCombo,
CB_SETCURSEL,
0,
0);
return (ret == 1);
}
bool
CCharMapWindow::ChangeMapFont(
)
{
HWND hCombo;
hCombo = GetDlgItem(m_hMainWnd, IDC_FONTCOMBO);
INT Length;
Length = GetWindowTextLengthW(hCombo);
if (!Length) return false;
CAtlStringW FontName;
FontName.Preallocate(Length);
SendMessageW(hCombo,
WM_GETTEXT,
FontName.GetAllocLength(),
(LPARAM)FontName.GetBuffer());
return m_GridView->SetFont(FontName);
}

View File

@@ -1,84 +0,0 @@
#pragma once
#include "GridView.h"
class CCharMapWindow
{
HWND m_hMainWnd;
HWND m_hStatusBar;
int m_CmdShow;
HMODULE m_hRichEd;
CGridView *m_GridView;
public:
CCharMapWindow(void);
~CCharMapWindow(void);
bool Create(
_In_ HINSTANCE hInst,
_In_ int nCmdShow
);
private:
static INT_PTR CALLBACK DialogProc(
_In_ HWND hwndDlg,
_In_ UINT uMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
bool Initialize(
_In_z_ LPCTSTR lpCaption,
_In_ int nCmdShow
);
int Run();
void Uninitialize(void);
BOOL OnCreate(
_In_ HWND hwnd
);
BOOL OnDestroy(void);
BOOL OnSize(void);
BOOL OnNotify(
_In_ LPARAM lParam
);
BOOL OnContext(
_In_ LPARAM lParam
);
BOOL OnCommand(
_In_ WPARAM wParam,
LPARAM lParam
);
bool CreateStatusBar(void);
bool StatusBarLoadString(
_In_ HWND hStatusBar,
_In_ INT PartId,
_In_ HINSTANCE hInstance,
_In_ UINT uID
);
void UpdateStatusBar(
_In_ bool InMenuLoop
);
static int CALLBACK
EnumDisplayFont(
ENUMLOGFONTEXW *lpelfe,
NEWTEXTMETRICEXW *lpntme,
DWORD FontType,
LPARAM lParam
);
bool CreateFontComboBox(
);
bool ChangeMapFont(
);
};

View File

@@ -1,19 +0,0 @@
/*
* PROJECT: ReactOS Character Map
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/charmap/charmap.cpp
* COPYRIGHT: Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
*/
#include "precomp.h"
#include "MainWindow.h"
int WINAPI
wWinMain(HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nCmdShow)
{
CCharMapWindow CharMap;
return CharMap.Create(hThisInstance, nCmdShow);
}

View File

@@ -1,101 +0,0 @@
#include <windef.h>
#include <winuser.h>
#include <richedit.h>
#include "resource.h"
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDI_ICON ICON "res/charmap.ico"
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Character Map"
#define REACTOS_STR_INTERNAL_NAME "charmap"
#define REACTOS_STR_ORIGINAL_FILENAME "charmap.exe"
//#include <reactos/version.rc>
//#include <reactos/manifest_exe.rc>
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_BG_BG
#include "lang/bg-BG.rc"
#endif
#ifdef LANGUAGE_CA_ES
#include "lang/ca-ES.rc"
#endif
#ifdef LANGUAGE_CS_CZ
#include "lang/cs-CZ.rc"
#endif
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif
#ifdef LANGUAGE_EL_GR
#include "lang/el-GR.rc"
#endif
#ifdef LANGUAGE_ES_ES
#include "lang/es-ES.rc"
#endif
#ifdef LANGUAGE_FR_FR
#include "lang/fr-FR.rc"
#endif
#ifdef LANGUAGE_HE_IL
#include "lang/he-IL.rc"
#endif
#ifdef LANGUAGE_ID_ID
#include "lang/id-ID.rc"
#endif
#ifdef LANGUAGE_IT_IT
#include "lang/it-IT.rc"
#endif
#ifdef LANGUAGE_JA_JP
#include "lang/ja-JP.rc"
#endif
#ifdef LANGUAGE_KO_KR
#include "lang/ko-KR.rc"
#endif
#ifdef LANGUAGE_LT_LT
#include "lang/lt-LT.rc"
#endif
#ifdef LANGUAGE_NL_NL
#include "lang/nl-NL.rc"
#endif
#ifdef LANGUAGE_NB_NO
#include "lang/no-NO.rc"
#endif
#ifdef LANGUAGE_PL_PL
#include "lang/pl-PL.rc"
#endif
#ifdef LANGUAGE_PT_BR
#include "lang/pt-BR.rc"
#endif
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif
#ifdef LANGUAGE_RU_RU
#include "lang/ru-RU.rc"
#endif
#ifdef LANGUAGE_SK_SK
#include "lang/sk-SK.rc"
#endif
#ifdef LANGUAGE_SQ_AL
#include "lang/sq-AL.rc"
#endif
#ifdef LANGUAGE_SV_SE
#include "lang/sv-SE.rc"
#endif
#ifdef LANGUAGE_TR_TR
#include "lang/tr-TR.rc"
#endif
#ifdef LANGUAGE_UK_UA
#include "lang/uk-UA.rc"
#endif
#ifdef LANGUAGE_ZH_CN
#include "lang/zh-CN.rc"
#endif
#ifdef LANGUAGE_ZH_TW
#include "lang/zh-TW.rc"
#endif

View File

@@ -1,22 +0,0 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
IDD_CHARMAP DIALOGEX 6, 6, 290, 224
FONT 8, "MS Shell Dlg", 0, 0
STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_SIZEBOX
CAPTION "ReactOS Character Map"
BEGIN
LTEXT "Font:", IDC_STATIC, 6, 7, 24, 9
COMBOBOX IDC_FONTCOMBO, 28, 5, 150, 210, WS_CHILD | WS_VISIBLE |
WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT | CBS_HASSTRINGS
LTEXT "Characters to copy:", IDC_STATIC, 6, 188, 66, 9
CONTROL "", IDC_TEXTBOX, RICHEDIT_CLASS, ES_AUTOHSCROLL | WS_BORDER |
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
DEFPUSHBUTTON "Select", IDC_SELECT, 194, 186, 44, 13
PUSHBUTTON "Copy", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
END
STRINGTABLE
BEGIN
IDS_ABOUT "A&bout..."
IDS_TITLE "Character Map"
END

View File

@@ -1,35 +0,0 @@
/* TRANSLATOR: 2015 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
IDD_CHARMAP DIALOGEX 6, 6, 292, 224
FONT 8, "MS Shell Dlg", 0, 0
STYLE WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CAPTION "ReactOS Damga Eşlemi"
BEGIN
LTEXT "Yazı Tipi:", IDC_STATIC, 6, 7, 24, 9
COMBOBOX IDC_FONTCOMBO, 36, 5, 210, 210, WS_CHILD | WS_VISIBLE |
WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT | CBS_HASSTRINGS
LTEXT "Çoğaltılacak Damgalar:", IDC_STATIC, 6, 188, 66, 9
CONTROL "", IDC_TEXTBOX, RICHEDIT_CLASS, ES_AUTOHSCROLL | WS_BORDER |
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
DEFPUSHBUTTON "Seç", IDC_SELECT, 194, 186, 44, 13
PUSHBUTTON "Çoğalt", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
//CONTROL "Gelişmiş Görünüm", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
// WS_TABSTOP, 8, 208, 95, 10
//LTEXT "Damga Öbeği:", IDC_STATIC, 8, 8, 48, 8
//COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
//LTEXT "Takımla:", IDC_STATIC, 8, 28, 50, 8
//COMBOBOX IDC_COMBO_GROUPBY, 72, 24, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
//PUSHBUTTON "Ara", IDC_BUTTON_SEARCH, 200, 44, 50, 14
//EDITTEXT IDC_EDIT_SEARCH, 72, 44, 116, 14, ES_AUTOHSCROLL
//LTEXT "Ada Göre Ara:", IDC_STATIC, 8, 48, 42, 8
//LTEXT "Evrenlik Kod:", IDC_STATIC, 200, 8, 30, 8
//EDITTEXT IDC_EDIT_UNICODE, 236, 4, 28, 12, ES_AUTOHSCROLL
END
STRINGTABLE
BEGIN
IDS_ABOUT "&Üzerine..."
IDS_TITLE "Damga Eşlemi"
END

View File

@@ -1,54 +0,0 @@
//#pragma once
#ifndef __REACTOS__
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <windowsx.h>
#include <setupapi.h>
#include <cfgmgr32.h>
#include <commctrl.h>
#include <Uxtheme.h>
#include <richedit.h>
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
#include <tchar.h>
#include <atlbase.h>
#include <atlstr.h>
#include <atlcoll.h>
#include <strsafe.h>
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#include "resource.h"
#else
#include <string.h>
#include <wchar.h>
#include <tchar.h>
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
#include <wingdi.h>
#include <winnls.h>
#include <wincon.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <strsafe.h>
#include <commctrl.h>
#include <cfgmgr32.h>
#include <uxtheme.h>
#include <atlbase.h>
#include <atlstr.h>
#include <atlcoll.h>
//WINE_DEFAULT_DEBUG_CHANNEL(charmap);
#endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -1,30 +0,0 @@
#pragma once
#define IDC_STATIC -1
#define IDI_ICON 100
#define IDD_CHARMAP 200
#define IDD_ABOUTBOX 201
#define IDD_STATUSBAR 202
#define IDD_ADVANCED 203
#define IDC_FONTCOMBO 1001
#define IDC_CMHELP 1002
#define IDC_FONTMAP 1003
#define IDC_TEXTBOX 1004
#define IDC_SELECT 1005
#define IDC_COPY 1006
#define IDC_ADVVIEW 1007
#define IDC_DISPLAY 1008
#define IDC_LICENSE_EDIT 1009
#define IDC_COMBO_CHARSET 1010
#define IDC_COMBO_GROUPBY 1011
#define IDC_BUTTON_SEARCH 1012
#define IDC_EDIT_SEARCH 1013
#define IDC_EDIT_UNICODE 1014
#define IDC_CHECK_ADVANCED 1017
#define IDS_LICENSE 2010
#define IDS_ABOUT 2011
#define IDS_TITLE 2012

View File

@@ -1,14 +0,0 @@
list(APPEND SOURCE
clipbrd.c
cliputils.c
fileutils.c
scrollutils.c
winutils.c
precomp.h)
add_executable(clipbrd ${SOURCE} clipbrd.rc)
add_pch(clipbrd precomp.h SOURCE)
set_module_type(clipbrd win32gui UNICODE)
add_importlibs(clipbrd hhctrl user32 gdi32 comdlg32 shell32 msvcrt kernel32)
add_cd_file(TARGET clipbrd DESTINATION reactos/system32 FOR all)

View File

@@ -1,597 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Clipboard Viewer
* FILE: base/applications/clipbrd/clipbrd.c
* PURPOSE: Provides a view of the contents of the ReactOS clipboard.
* PROGRAMMERS: Ricardo Hanke
*/
#include "precomp.h"
static const WCHAR szClassName[] = L"ClipBookWClass";
CLIPBOARD_GLOBALS Globals;
SCROLLSTATE Scrollstate;
static void UpdateLinesToScroll(void)
{
UINT uLinesToScroll;
if (!SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &uLinesToScroll, 0))
{
Globals.uLinesToScroll = 3;
}
else
{
Globals.uLinesToScroll = uLinesToScroll;
}
}
static void SaveClipboardToFile(void)
{
OPENFILENAMEW sfn;
WCHAR szFileName[MAX_PATH];
WCHAR szFilterMask[MAX_STRING_LEN + 10];
LPWSTR c;
ZeroMemory(&szFilterMask, sizeof(szFilterMask));
c = szFilterMask + LoadStringW(Globals.hInstance, STRING_FORMAT_NT, szFilterMask, MAX_STRING_LEN) + 1;
wcscpy(c, L"*.clp");
ZeroMemory(&szFileName, sizeof(szFileName));
ZeroMemory(&sfn, sizeof(sfn));
sfn.lStructSize = sizeof(sfn);
sfn.hwndOwner = Globals.hMainWnd;
sfn.hInstance = Globals.hInstance;
sfn.lpstrFilter = szFilterMask;
sfn.lpstrFile = szFileName;
sfn.nMaxFile = ARRAYSIZE(szFileName);
sfn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
sfn.lpstrDefExt = L"clp";
if (!GetSaveFileNameW(&sfn))
return;
if (!OpenClipboard(Globals.hMainWnd))
{
ShowLastWin32Error(Globals.hMainWnd);
return;
}
WriteClipboardFile(szFileName, CLIP_FMT_NT /* CLIP_FMT_31 */);
CloseClipboard();
}
static void LoadClipboardDataFromFile(LPWSTR lpszFileName)
{
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance,
STRING_DELETE_MSG, STRING_DELETE_TITLE,
MB_ICONWARNING | MB_YESNO) != IDYES)
{
return;
}
if (!OpenClipboard(Globals.hMainWnd))
{
ShowLastWin32Error(Globals.hMainWnd);
return;
}
EmptyClipboard();
ReadClipboardFile(lpszFileName);
CloseClipboard();
}
static void LoadClipboardFromFile(void)
{
OPENFILENAMEW ofn;
WCHAR szFileName[MAX_PATH];
WCHAR szFilterMask[MAX_STRING_LEN + 10];
LPWSTR c;
ZeroMemory(&szFilterMask, sizeof(szFilterMask));
c = szFilterMask + LoadStringW(Globals.hInstance, STRING_FORMAT_GEN, szFilterMask, MAX_STRING_LEN) + 1;
wcscpy(c, L"*.clp");
ZeroMemory(&szFileName, sizeof(szFileName));
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = Globals.hMainWnd;
ofn.hInstance = Globals.hInstance;
ofn.lpstrFilter = szFilterMask;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = ARRAYSIZE(szFileName);
ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
if (!GetOpenFileNameW(&ofn))
return;
LoadClipboardDataFromFile(szFileName);
}
static void LoadClipboardFromDrop(HDROP hDrop)
{
WCHAR szFileName[MAX_PATH];
DragQueryFileW(hDrop, 0, szFileName, ARRAYSIZE(szFileName));
DragFinish(hDrop);
LoadClipboardDataFromFile(szFileName);
}
static void SetDisplayFormat(UINT uFormat)
{
CheckMenuItem(Globals.hMenu, Globals.uCheckedItem, MF_BYCOMMAND | MF_UNCHECKED);
Globals.uCheckedItem = uFormat + CMD_AUTOMATIC;
CheckMenuItem(Globals.hMenu, Globals.uCheckedItem, MF_BYCOMMAND | MF_CHECKED);
if (uFormat == 0)
{
Globals.uDisplayFormat = GetAutomaticClipboardFormat();
}
else
{
Globals.uDisplayFormat = uFormat;
}
if (Globals.hDspBmp)
{
DeleteObject(Globals.hDspBmp);
}
ZeroMemory(&Scrollstate, sizeof(Scrollstate));
UpdateWindowScrollState(Globals.hMainWnd, Globals.hDspBmp, &Scrollstate);
InvalidateRect(Globals.hMainWnd, NULL, TRUE);
}
static void InitMenuPopup(HMENU hMenu, LPARAM index)
{
if ((GetMenuItemID(hMenu, 0) == CMD_DELETE) || (GetMenuItemID(hMenu, 1) == CMD_SAVE_AS))
{
if (CountClipboardFormats() == 0)
{
EnableMenuItem(hMenu, CMD_DELETE, MF_GRAYED);
EnableMenuItem(hMenu, CMD_SAVE_AS, MF_GRAYED);
}
else
{
EnableMenuItem(hMenu, CMD_DELETE, MF_ENABLED);
EnableMenuItem(hMenu, CMD_SAVE_AS, MF_ENABLED);
}
}
DrawMenuBar(Globals.hMainWnd);
}
static void UpdateDisplayMenu(void)
{
UINT uFormat;
WCHAR szFormatName[MAX_FMT_NAME_LEN + 1];
HMENU hMenu;
hMenu = GetSubMenu(Globals.hMenu, DISPLAY_MENU_POS);
while (GetMenuItemCount(hMenu) > 1)
{
DeleteMenu(hMenu, 1, MF_BYPOSITION);
}
if (CountClipboardFormats() == 0)
return;
if (!OpenClipboard(Globals.hMainWnd))
return;
AppendMenuW(hMenu, MF_SEPARATOR, 0, NULL);
uFormat = EnumClipboardFormats(0);
while (uFormat)
{
RetrieveClipboardFormatName(Globals.hInstance, uFormat, TRUE, szFormatName, ARRAYSIZE(szFormatName));
if (!IsClipboardFormatSupported(uFormat))
{
AppendMenuW(hMenu, MF_STRING | MF_GRAYED, 0, szFormatName);
}
else
{
AppendMenuW(hMenu, MF_STRING, CMD_AUTOMATIC + uFormat, szFormatName);
}
uFormat = EnumClipboardFormats(uFormat);
}
CloseClipboard();
}
static int ClipboardCommandHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (LOWORD(wParam))
{
case CMD_OPEN:
{
LoadClipboardFromFile();
break;
}
case CMD_SAVE_AS:
{
SaveClipboardToFile();
break;
}
case CMD_EXIT:
{
PostMessageW(Globals.hMainWnd, WM_CLOSE, 0, 0);
break;
}
case CMD_DELETE:
{
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance,
STRING_DELETE_MSG, STRING_DELETE_TITLE,
MB_ICONWARNING | MB_YESNO) != IDYES)
{
break;
}
DeleteClipboardContent();
break;
}
case CMD_AUTOMATIC:
{
SetDisplayFormat(0);
break;
}
case CMD_HELP:
{
HtmlHelpW(Globals.hMainWnd, L"clipbrd.chm", 0, 0);
break;
}
case CMD_ABOUT:
{
HICON hIcon;
WCHAR szTitle[MAX_STRING_LEN];
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIPBRD_ICON));
LoadStringW(Globals.hInstance, STRING_CLIPBOARD, szTitle, ARRAYSIZE(szTitle));
ShellAboutW(Globals.hMainWnd, szTitle, NULL, hIcon);
DeleteObject(hIcon);
break;
}
default:
{
break;
}
}
return 0;
}
static void ClipboardPaintHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rc;
if (!OpenClipboard(Globals.hMainWnd))
return;
hdc = BeginPaint(hWnd, &ps);
GetClientRect(hWnd, &rc);
switch (Globals.uDisplayFormat)
{
case CF_NONE:
{
break;
}
case CF_UNICODETEXT:
{
DrawTextFromClipboard(hdc, &rc, DT_LEFT | DT_NOPREFIX);
break;
}
case CF_BITMAP:
{
BitBltFromClipboard(hdc, rc.left, rc.top, rc.right, rc.bottom, 0, 0, SRCCOPY);
break;
}
case CF_DIB:
{
SetDIBitsToDeviceFromClipboard(CF_DIB, hdc, rc.left, rc.top, 0, 0, 0, DIB_RGB_COLORS);
break;
}
case CF_DIBV5:
{
SetDIBitsToDeviceFromClipboard(CF_DIBV5, hdc, rc.left, rc.top, 0, 0, 0, DIB_RGB_COLORS);
break;
}
case CF_METAFILEPICT:
{
PlayMetaFileFromClipboard(hdc, &rc);
break;
}
case CF_ENHMETAFILE:
{
PlayEnhMetaFileFromClipboard(hdc, &rc);
break;
}
default:
{
DrawTextFromResource(Globals.hInstance, ERROR_UNSUPPORTED_FORMAT, hdc, &rc, DT_CENTER | DT_WORDBREAK | DT_NOPREFIX);
break;
}
}
EndPaint(hWnd, &ps);
CloseClipboard();
}
static LRESULT WINAPI MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_CREATE:
{
Globals.hMenu = GetMenu(hWnd);
Globals.hWndNext = SetClipboardViewer(hWnd);
UpdateDisplayMenu();
SetDisplayFormat(0);
break;
}
case WM_CLOSE:
{
DestroyWindow(hWnd);
break;
}
case WM_DESTROY:
{
ChangeClipboardChain(hWnd, Globals.hWndNext);
PostQuitMessage(0);
break;
}
case WM_PAINT:
{
ClipboardPaintHandler(hWnd, uMsg, wParam, lParam);
break;
}
case WM_KEYDOWN:
{
HandleKeyboardScrollEvents(hWnd, uMsg, wParam, lParam);
break;
}
case WM_MOUSEWHEEL:
{
HandleMouseScrollEvents(hWnd, uMsg, wParam, lParam, &Scrollstate);
break;
}
case WM_HSCROLL:
{
HandleHorizontalScrollEvents(hWnd, uMsg, wParam, lParam, &Scrollstate);
break;
}
case WM_VSCROLL:
{
HandleVerticalScrollEvents(hWnd, uMsg, wParam, lParam, &Scrollstate);
break;
}
case WM_SIZE:
{
UpdateWindowScrollState(hWnd, Globals.hDspBmp, &Scrollstate);
if ((Globals.uDisplayFormat == CF_METAFILEPICT) ||
(Globals.uDisplayFormat == CF_ENHMETAFILE) ||
(Globals.uDisplayFormat == CF_DSPENHMETAFILE) ||
(Globals.uDisplayFormat == CF_DSPMETAFILEPICT))
{
InvalidateRect(Globals.hMainWnd, NULL, FALSE);
}
else if (!IsClipboardFormatSupported(Globals.uDisplayFormat))
{
InvalidateRect(Globals.hMainWnd, NULL, TRUE);
}
break;
}
case WM_CHANGECBCHAIN:
{
if ((HWND)wParam == Globals.hWndNext)
{
Globals.hWndNext = (HWND)lParam;
}
else if (Globals.hWndNext != NULL)
{
SendMessageW(Globals.hWndNext, uMsg, wParam, lParam);
}
break;
}
case WM_DRAWCLIPBOARD:
{
UpdateDisplayMenu();
SetDisplayFormat(0);
SendMessageW(Globals.hWndNext, uMsg, wParam, lParam);
break;
}
case WM_COMMAND:
{
if ((LOWORD(wParam) > CMD_AUTOMATIC))
{
SetDisplayFormat(LOWORD(wParam) - CMD_AUTOMATIC);
}
else
{
ClipboardCommandHandler(hWnd, uMsg, wParam, lParam);
}
break;
}
case WM_INITMENUPOPUP:
{
InitMenuPopup((HMENU)wParam, lParam);
break;
}
case WM_DROPFILES:
{
LoadClipboardFromDrop((HDROP)wParam);
break;
}
case WM_QUERYNEWPALETTE:
{
if (RealizeClipboardPalette(hWnd) != GDI_ERROR)
{
InvalidateRect(hWnd, NULL, TRUE);
UpdateWindow(hWnd);
return TRUE;
}
return FALSE;
}
case WM_PALETTECHANGED:
{
if ((HWND)wParam != hWnd)
{
if (RealizeClipboardPalette(hWnd) != GDI_ERROR)
{
InvalidateRect(hWnd, NULL, TRUE);
UpdateWindow(hWnd);
}
}
break;
}
case WM_SYSCOLORCHANGE:
{
SetDisplayFormat(Globals.uDisplayFormat);
break;
}
case WM_SETTINGCHANGE:
{
if (wParam == SPI_SETWHEELSCROLLLINES)
{
UpdateLinesToScroll();
}
break;
}
default:
{
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
}
return 0;
}
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
MSG msg;
HACCEL hAccel;
HWND hPrevWindow;
WNDCLASSEXW wndclass;
WCHAR szBuffer[MAX_STRING_LEN];
hPrevWindow = FindWindowW(szClassName, NULL);
if (hPrevWindow)
{
BringWindowToFront(hPrevWindow);
return 0;
}
ZeroMemory(&Globals, sizeof(Globals));
Globals.hInstance = hInstance;
ZeroMemory(&wndclass, sizeof(wndclass));
wndclass.cbSize = sizeof(wndclass);
wndclass.lpfnWndProc = MainWndProc;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIPBRD_ICON));
wndclass.hCursor = LoadCursorW(0, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndclass.lpszMenuName = MAKEINTRESOURCEW(MAIN_MENU);
wndclass.lpszClassName = szClassName;
if (!RegisterClassExW(&wndclass))
{
ShowLastWin32Error(NULL);
return 0;
}
LoadStringW(hInstance, STRING_CLIPBOARD, szBuffer, ARRAYSIZE(szBuffer));
Globals.hMainWnd = CreateWindowExW(WS_EX_CLIENTEDGE | WS_EX_ACCEPTFILES,
szClassName,
szBuffer,
WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
Globals.hInstance,
NULL);
if (!Globals.hMainWnd)
{
ShowLastWin32Error(NULL);
return 0;
}
ShowWindow(Globals.hMainWnd, nCmdShow);
UpdateWindow(Globals.hMainWnd);
hAccel = LoadAcceleratorsW(Globals.hInstance, MAKEINTRESOURCEW(ID_ACCEL));
if (!hAccel)
{
ShowLastWin32Error(Globals.hMainWnd);
}
/* If the user provided a path to a clipboard data file, try to open it */
if (lpCmdLine != NULL && *lpCmdLine)
LoadClipboardDataFromFile(lpCmdLine);
UpdateLinesToScroll();
while (GetMessageW(&msg, 0, 0, 0))
{
if (!TranslateAcceleratorW(Globals.hMainWnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
if (Globals.hDspBmp)
{
DeleteObject(Globals.hDspBmp);
}
return (int)msg.wParam;
}

View File

@@ -1,48 +0,0 @@
#include <windef.h>
#include <winuser.h>
#include "resources.h"
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Clipboard Viewer"
#define REACTOS_STR_INTERNAL_NAME "clipbrd"
#define REACTOS_STR_ORIGINAL_FILENAME "clipbrd.exe"
#include <reactos/version.rc>
CLIPBRD_ICON ICON "res/clipbrd.ico"
CLPFILE_ICON ICON "res/clpfile.ico"
#include <reactos/manifest_exe.rc>
/* UTF-8 */
#pragma code_page(65001)
#ifdef LANGUAGE_CS_CZ
#include "lang/cs-CZ.rc"
#endif
#ifdef LANGUAGE_DE_DE
#include "lang/de-DE.rc"
#endif
#ifdef LANGUAGE_EN_US
#include "lang/en-US.rc"
#endif
#ifdef LANGUAGE_ES_ES
#include "lang/es-ES.rc"
#endif
#ifdef LANGUAGE_FR_FR
#include "lang/fr-FR.rc"
#endif
#ifdef LANGUAGE_RO_RO
#include "lang/ro-RO.rc"
#endif
#ifdef LANGUAGE_RU_RU
#include "lang/ru-RU.rc"
#endif
#ifdef LANGUAGE_TR_TR
#include "lang/tr-TR.rc"
#endif
#ifdef LANGUAGE_ZH_CN
#include "lang/zh-CN.rc"
#endif
#ifdef LANGUAGE_ZH_TW
#include "lang/zh-TW.rc"
#endif

View File

@@ -1,146 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Clipboard Viewer
* FILE: base/applications/clipbrd/cliputils.c
* PURPOSE: Clipboard helper functions.
* PROGRAMMERS: Ricardo Hanke
*/
#include "precomp.h"
static int
GetPredefinedClipboardFormatName(HINSTANCE hInstance,
UINT uFormat,
BOOL Unicode,
PVOID lpszFormat,
UINT cch)
{
static
struct FORMAT_NAME
{
UINT uFormat;
UINT uResID;
} uFormatList[] = {
/* Table sorted in increasing order of CF_xxx values, please keep it this way! */
{CF_TEXT , STRING_CF_TEXT }, // 1
{CF_BITMAP , STRING_CF_BITMAP }, // 2
{CF_METAFILEPICT, STRING_CF_METAFILEPICT}, // 3
{CF_SYLK , STRING_CF_SYLK }, // 4
{CF_DIF , STRING_CF_DIF }, // 5
{CF_TIFF , 0/*STRING_CF_TIFF*/ }, // 6
{CF_OEMTEXT , STRING_CF_OEMTEXT }, // 7
{CF_DIB , STRING_CF_DIB }, // 8
{CF_PALETTE , STRING_CF_PALETTE }, // 9
{CF_PENDATA , 0/*STRING_CF_PENDATA*/ }, // 10
{CF_RIFF , 0/*STRING_CF_RIFF*/ }, // 11
{CF_WAVE , 0/*STRING_CF_WAVE*/ }, // 12
{CF_UNICODETEXT , STRING_CF_UNICODETEXT }, // 13
{CF_ENHMETAFILE , STRING_CF_ENHMETAFILE }, // 14
#if(WINVER >= 0x0400)
{CF_HDROP , STRING_CF_HDROP }, // 15
{CF_LOCALE , STRING_CF_LOCALE }, // 16
#endif
#if(WINVER >= 0x0500)
{CF_DIBV5 , STRING_CF_DIBV5 }, // 17
#endif
};
switch (uFormat)
{
case CF_TEXT: case CF_BITMAP: case CF_METAFILEPICT:
case CF_SYLK: case CF_DIF: // case CF_TIFF:
case CF_OEMTEXT: case CF_DIB: case CF_PALETTE:
// case CF_PENDATA: // case CF_RIFF: // case CF_WAVE:
case CF_UNICODETEXT: case CF_ENHMETAFILE:
#if(WINVER >= 0x0400)
case CF_HDROP: case CF_LOCALE:
#endif
#if(WINVER >= 0x0500)
case CF_DIBV5:
#endif
{
if (Unicode)
return LoadStringW(hInstance, uFormatList[uFormat-1].uResID, (LPWSTR)lpszFormat, cch);
else
return LoadStringA(hInstance, uFormatList[uFormat-1].uResID, (LPSTR)lpszFormat, cch);
}
default:
{
return 0;
}
}
}
void
RetrieveClipboardFormatName(HINSTANCE hInstance,
UINT uFormat,
BOOL Unicode,
PVOID lpszFormat,
UINT cch)
{
if (!GetPredefinedClipboardFormatName(hInstance, uFormat, Unicode, lpszFormat, cch))
{
if (Unicode)
{
if (!GetClipboardFormatNameW(uFormat, (LPWSTR)lpszFormat, cch))
LoadStringW(hInstance, STRING_CF_UNKNOWN, (LPWSTR)lpszFormat, cch);
}
else
{
if (!GetClipboardFormatNameA(uFormat, (LPSTR)lpszFormat, cch))
LoadStringA(hInstance, STRING_CF_UNKNOWN, (LPSTR)lpszFormat, cch);
}
}
}
void DeleteClipboardContent(void)
{
if (!OpenClipboard(Globals.hMainWnd))
{
ShowLastWin32Error(Globals.hMainWnd);
return;
}
if (!EmptyClipboard())
{
ShowLastWin32Error(Globals.hMainWnd);
}
CloseClipboard();
}
UINT GetAutomaticClipboardFormat(void)
{
static UINT uFormatList[] = {
CF_UNICODETEXT,
CF_ENHMETAFILE,
CF_METAFILEPICT,
CF_DIBV5,
CF_DIB,
CF_BITMAP
};
return GetPriorityClipboardFormat(uFormatList, ARRAYSIZE(uFormatList));
}
BOOL IsClipboardFormatSupported(UINT uFormat)
{
switch (uFormat)
{
case CF_UNICODETEXT:
case CF_BITMAP:
case CF_ENHMETAFILE:
case CF_METAFILEPICT:
case CF_DIB:
case CF_DIBV5:
{
return TRUE;
}
default:
{
return FALSE;
}
}
}

View File

@@ -1,18 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Clipboard Viewer
* FILE: base/applications/clipbrd/cliputils.h
* PURPOSE: Clipboard helper functions.
* PROGRAMMERS: Ricardo Hanke
*/
void
RetrieveClipboardFormatName(HINSTANCE hInstance,
UINT uFormat,
BOOL Unicode,
PVOID lpszFormat,
UINT cch);
void DeleteClipboardContent(void);
UINT GetAutomaticClipboardFormat(void);
BOOL IsClipboardFormatSupported(UINT uFormat);

View File

@@ -1,592 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Clipboard Viewer
* FILE: base/applications/clipbrd/fileutils.c
* PURPOSE: Clipboard file format helper functions.
* PROGRAMMERS: Ricardo Hanke
* Hermes Belusca-Maito
*/
#include "precomp.h"
static HGLOBAL ClipboardReadMemoryBlock(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
{
HGLOBAL hData;
LPVOID lpData;
DWORD dwBytesRead;
hData = GlobalAlloc(GHND, dwLength);
if (!hData)
return NULL;
lpData = GlobalLock(hData);
if (!lpData)
{
GlobalFree(hData);
return NULL;
}
if (SetFilePointer(hFile, dwOffset, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
{
GlobalUnlock(hData);
GlobalFree(hData);
return NULL;
}
if (!ReadFile(hFile, lpData, dwLength, &dwBytesRead, NULL))
{
GlobalUnlock(hData);
GlobalFree(hData);
return NULL;
}
GlobalUnlock(hData);
return hData;
}
static BOOL ClipboardReadMemory(HANDLE hFile, DWORD dwFormat, DWORD dwOffset, DWORD dwLength, WORD FileIdentifier, PVOID lpFormatName)
{
HGLOBAL hData;
DWORD dwTemp = 0;
hData = ClipboardReadMemoryBlock(hFile, dwOffset, dwLength);
if (!hData)
return FALSE;
if ((dwFormat >= 0xC000) && (dwFormat <= 0xFFFF))
{
if (FileIdentifier == CLIP_FMT_31)
dwTemp = RegisterClipboardFormatA((LPCSTR)lpFormatName);
else if ((FileIdentifier == CLIP_FMT_NT) || (FileIdentifier == CLIP_FMT_BK))
dwTemp = RegisterClipboardFormatW((LPCWSTR)lpFormatName);
if (!dwTemp)
{
GlobalFree(hData);
return FALSE;
}
}
else
{
dwTemp = dwFormat;
}
if (!SetClipboardData(dwTemp, hData))
{
GlobalFree(hData);
return FALSE;
}
return TRUE;
}
static BOOL ClipboardWriteMemory(HANDLE hFile, DWORD dwFormat, DWORD dwOffset, PDWORD pdwLength)
{
HGLOBAL hData;
LPVOID lpData;
DWORD dwBytesWritten;
hData = GetClipboardData(dwFormat);
if (!hData)
return FALSE;
lpData = GlobalLock(hData);
if (!lpData)
return FALSE;
*pdwLength = GlobalSize(hData);
if (SetFilePointer(hFile, dwOffset, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
{
GlobalUnlock(hData);
return FALSE;
}
if (!WriteFile(hFile, lpData, *pdwLength, &dwBytesWritten, NULL))
{
GlobalUnlock(hData);
return FALSE;
}
GlobalUnlock(hData);
return TRUE;
}
static BOOL ClipboardReadPalette(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
{
LPLOGPALETTE lpPalette;
HPALETTE hPalette;
HGLOBAL hData;
hData = ClipboardReadMemoryBlock(hFile, dwOffset, dwLength);
if (!hData)
{
return FALSE;
}
lpPalette = GlobalLock(hData);
if (!lpPalette)
{
GlobalFree(hData);
return FALSE;
}
hPalette = CreatePalette(lpPalette);
if (!hPalette)
{
GlobalUnlock(hData);
GlobalFree(hData);
SetLastError(ERROR_OUTOFMEMORY);
return FALSE;
}
GlobalUnlock(hData);
GlobalFree(hData);
if (!SetClipboardData(CF_PALETTE, hPalette))
{
DeleteObject(hPalette);
return FALSE;
}
return TRUE;
}
static BOOL ClipboardReadMetafile(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
{
HMETAFILE hMf;
HGLOBAL hData;
LPVOID lpData;
hData = ClipboardReadMemoryBlock(hFile, dwOffset, dwLength);
if (!hData)
{
return FALSE;
}
lpData = GlobalLock(hData);
if (!lpData)
{
GlobalFree(hData);
return FALSE;
}
hMf = SetMetaFileBitsEx(dwLength, lpData);
GlobalUnlock(hData);
GlobalFree(hData);
if (!hMf)
{
SetLastError(ERROR_OUTOFMEMORY);
return FALSE;
}
if (!SetClipboardData(CF_METAFILEPICT, hMf))
{
DeleteMetaFile(hMf);
return FALSE;
}
return TRUE;
}
static BOOL ClipboardReadEnhMetafile(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
{
HENHMETAFILE hEmf;
HGLOBAL hData;
LPVOID lpData;
hData = ClipboardReadMemoryBlock(hFile, dwOffset, dwLength);
if (!hData)
{
return FALSE;
}
lpData = GlobalLock(hData);
if (!lpData)
{
GlobalFree(hData);
return FALSE;
}
hEmf = SetEnhMetaFileBits(dwLength, lpData);
GlobalUnlock(hData);
GlobalFree(hData);
if (!hEmf)
{
SetLastError(ERROR_OUTOFMEMORY);
return FALSE;
}
if (!SetClipboardData(CF_ENHMETAFILE, hEmf))
{
DeleteEnhMetaFile(hEmf);
return FALSE;
}
return TRUE;
}
static BOOL ClipboardReadBitmap(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
{
HGLOBAL hData;
HBITMAP hBitmap;
LPBITMAP lpBitmap;
hData = ClipboardReadMemoryBlock(hFile, dwOffset, dwLength);
if (!hData)
{
return FALSE;
}
lpBitmap = GlobalLock(hData);
if (!lpBitmap)
{
GlobalFree(hData);
return FALSE;
}
lpBitmap->bmBits = lpBitmap + sizeof(BITMAP) + 1;
hBitmap = CreateBitmapIndirect(lpBitmap);
GlobalUnlock(hData);
GlobalFree(hData);
if (!hBitmap)
{
SetLastError(ERROR_OUTOFMEMORY);
return FALSE;
}
if (!SetClipboardData(CF_BITMAP, hBitmap))
{
DeleteObject(hBitmap);
return FALSE;
}
return TRUE;
}
void ReadClipboardFile(LPCWSTR lpFileName)
{
CLIPFILEHEADER ClipFileHeader;
CLIPFORMATHEADER ClipFormatArray;
NTCLIPFILEHEADER NtClipFileHeader;
NTCLIPFORMATHEADER NtClipFormatArray;
PVOID pClipFileHeader;
PVOID pClipFormatArray;
DWORD SizeOfFileHeader, SizeOfFormatHeader;
WORD wFileIdentifier;
WORD wFormatCount;
DWORD dwFormatID;
DWORD dwLenData;
DWORD dwOffData;
PVOID szName;
HANDLE hFile;
DWORD dwBytesRead;
BOOL bResult;
int i;
/* Open the file for read access */
hFile = CreateFileW(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
/* Just read enough bytes to get the clipboard file format ID */
if (!ReadFile(hFile, &wFileIdentifier, sizeof(wFileIdentifier), &dwBytesRead, NULL))
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
/* Set data according to the clipboard file format ID */
switch (wFileIdentifier)
{
case CLIP_FMT_31:
SizeOfFileHeader = sizeof(CLIPFILEHEADER);
SizeOfFormatHeader = sizeof(CLIPFORMATHEADER);
pClipFileHeader = &ClipFileHeader;
pClipFormatArray = &ClipFormatArray;
break;
case CLIP_FMT_NT:
case CLIP_FMT_BK:
SizeOfFileHeader = sizeof(NTCLIPFILEHEADER);
SizeOfFormatHeader = sizeof(NTCLIPFORMATHEADER);
pClipFileHeader = &NtClipFileHeader;
pClipFormatArray = &NtClipFormatArray;
break;
default:
MessageBoxRes(Globals.hMainWnd, Globals.hInstance, ERROR_INVALID_FILE_FORMAT, 0, MB_ICONSTOP | MB_OK);
goto done;
}
/* Completely read the header */
SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
if (!ReadFile(hFile, pClipFileHeader, SizeOfFileHeader, &dwBytesRead, NULL) ||
dwBytesRead != SizeOfFileHeader)
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
/* Get header data */
switch (wFileIdentifier)
{
case CLIP_FMT_31:
assert(wFileIdentifier == ((CLIPFILEHEADER*)pClipFileHeader)->wFileIdentifier);
wFormatCount = ((CLIPFILEHEADER*)pClipFileHeader)->wFormatCount;
break;
case CLIP_FMT_NT:
case CLIP_FMT_BK:
assert(wFileIdentifier == ((NTCLIPFILEHEADER*)pClipFileHeader)->wFileIdentifier);
wFormatCount = ((NTCLIPFILEHEADER*)pClipFileHeader)->wFormatCount;
break;
}
/* Loop through the format data array */
for (i = 0; i < wFormatCount; i++)
{
if (SetFilePointer(hFile, SizeOfFileHeader + i * SizeOfFormatHeader, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
if (!ReadFile(hFile, pClipFormatArray, SizeOfFormatHeader, &dwBytesRead, NULL))
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
/* Get format data */
switch (wFileIdentifier)
{
case CLIP_FMT_31:
dwFormatID = ((CLIPFORMATHEADER*)pClipFormatArray)->dwFormatID;
dwLenData = ((CLIPFORMATHEADER*)pClipFormatArray)->dwLenData;
dwOffData = ((CLIPFORMATHEADER*)pClipFormatArray)->dwOffData;
szName = ((CLIPFORMATHEADER*)pClipFormatArray)->szName;
break;
case CLIP_FMT_NT:
case CLIP_FMT_BK:
dwFormatID = ((NTCLIPFORMATHEADER*)pClipFormatArray)->dwFormatID;
dwLenData = ((NTCLIPFORMATHEADER*)pClipFormatArray)->dwLenData;
dwOffData = ((NTCLIPFORMATHEADER*)pClipFormatArray)->dwOffData;
szName = ((NTCLIPFORMATHEADER*)pClipFormatArray)->szName;
break;
}
switch (dwFormatID)
{
case CF_OWNERDISPLAY:
{
break;
}
case CF_BITMAP:
case CF_DSPBITMAP:
{
bResult = ClipboardReadBitmap(hFile, dwOffData, dwLenData);
break;
}
case CF_METAFILEPICT:
case CF_DSPMETAFILEPICT:
{
bResult = ClipboardReadMetafile(hFile, dwOffData, dwLenData);
break;
}
case CF_ENHMETAFILE:
case CF_DSPENHMETAFILE:
{
bResult = ClipboardReadEnhMetafile(hFile, dwOffData, dwLenData);
break;
}
case CF_PALETTE:
{
bResult = ClipboardReadPalette(hFile, dwOffData, dwLenData);
break;
}
default:
{
if ((dwFormatID < CF_PRIVATEFIRST) || (dwFormatID > CF_PRIVATELAST))
{
bResult = ClipboardReadMemory(hFile, dwFormatID, dwOffData, dwLenData, wFileIdentifier, szName);
}
break;
}
}
if (!bResult)
ShowLastWin32Error(Globals.hMainWnd);
}
done:
if (hFile != INVALID_HANDLE_VALUE)
CloseHandle(hFile);
return;
}
void WriteClipboardFile(LPCWSTR lpFileName, WORD wFileIdentifier)
{
CLIPFILEHEADER ClipFileHeader;
CLIPFORMATHEADER ClipFormatArray;
NTCLIPFILEHEADER NtClipFileHeader;
NTCLIPFORMATHEADER NtClipFormatArray;
PVOID pClipFileHeader;
PVOID pClipFormatArray;
DWORD SizeOfFileHeader, SizeOfFormatHeader;
WORD wFormatCount;
DWORD dwFormatID;
DWORD dwLenData;
DWORD dwOffData;
// PVOID szName;
HANDLE hFile;
DWORD dwBytesWritten;
int i;
/* Create the file for write access */
hFile = CreateFileW(lpFileName, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
wFormatCount = CountClipboardFormats();
/* Select the file format and setup the header according to the clipboard file format ID */
switch (wFileIdentifier)
{
case CLIP_FMT_31:
SizeOfFileHeader = sizeof(CLIPFILEHEADER);
SizeOfFormatHeader = sizeof(CLIPFORMATHEADER);
pClipFileHeader = &ClipFileHeader;
pClipFormatArray = &ClipFormatArray;
ClipFileHeader.wFileIdentifier = CLIP_FMT_31; // wFileIdentifier
ClipFileHeader.wFormatCount = wFormatCount;
break;
case CLIP_FMT_NT:
case CLIP_FMT_BK:
SizeOfFileHeader = sizeof(NTCLIPFILEHEADER);
SizeOfFormatHeader = sizeof(NTCLIPFORMATHEADER);
pClipFileHeader = &NtClipFileHeader;
pClipFormatArray = &NtClipFormatArray;
NtClipFileHeader.wFileIdentifier = CLIP_FMT_NT; // wFileIdentifier
NtClipFileHeader.wFormatCount = wFormatCount;
break;
default:
MessageBoxRes(Globals.hMainWnd, Globals.hInstance, ERROR_INVALID_FILE_FORMAT, 0, MB_ICONSTOP | MB_OK);
goto done;
}
/* Write the header */
SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
if (!WriteFile(hFile, pClipFileHeader, SizeOfFileHeader, &dwBytesWritten, NULL) ||
dwBytesWritten != SizeOfFileHeader)
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
/* Compute where the data should start (after the file header and the format array) */
dwOffData = SizeOfFileHeader + wFormatCount * SizeOfFormatHeader;
/* Loop through each format and save the data */
i = 0;
dwFormatID = EnumClipboardFormats(0);
while (dwFormatID)
{
if (i >= wFormatCount)
{
/* Must never happen! */
assert(FALSE);
break;
}
/* Write the clipboard data at the specified offset, and retrieve its length */
if (!ClipboardWriteMemory(hFile, dwFormatID, dwOffData, &dwLenData))
goto Cont;
/* Write the format data header */
switch (wFileIdentifier)
{
case CLIP_FMT_31:
ZeroMemory(pClipFormatArray, sizeof(CLIPFORMATHEADER));
((CLIPFORMATHEADER*)pClipFormatArray)->dwFormatID = dwFormatID;
((CLIPFORMATHEADER*)pClipFormatArray)->dwLenData = dwLenData;
((CLIPFORMATHEADER*)pClipFormatArray)->dwOffData = dwOffData;
RetrieveClipboardFormatName(Globals.hInstance,
dwFormatID,
FALSE,
((CLIPFORMATHEADER*)pClipFormatArray)->szName,
ARRAYSIZE(((CLIPFORMATHEADER*)pClipFormatArray)->szName));
break;
case CLIP_FMT_NT:
case CLIP_FMT_BK:
ZeroMemory(pClipFormatArray, sizeof(NTCLIPFORMATHEADER));
((NTCLIPFORMATHEADER*)pClipFormatArray)->dwFormatID = dwFormatID;
((NTCLIPFORMATHEADER*)pClipFormatArray)->dwLenData = dwLenData;
((NTCLIPFORMATHEADER*)pClipFormatArray)->dwOffData = dwOffData;
RetrieveClipboardFormatName(Globals.hInstance,
dwFormatID,
TRUE,
((NTCLIPFORMATHEADER*)pClipFormatArray)->szName,
ARRAYSIZE(((NTCLIPFORMATHEADER*)pClipFormatArray)->szName));
break;
}
if (SetFilePointer(hFile, SizeOfFileHeader + i * SizeOfFormatHeader, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
if (!WriteFile(hFile, pClipFormatArray, SizeOfFormatHeader, &dwBytesWritten, NULL))
{
ShowLastWin32Error(Globals.hMainWnd);
goto done;
}
/* Adjust the offset for the next data stream */
dwOffData += dwLenData;
Cont:
i++;
dwFormatID = EnumClipboardFormats(dwFormatID);
}
done:
if (hFile != INVALID_HANDLE_VALUE)
CloseHandle(hFile);
return;
}

View File

@@ -1,52 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Clipboard Viewer
* FILE: base/applications/clipbrd/fileutils.h
* PURPOSE: Clipboard file format helper functions.
* PROGRAMMERS: Ricardo Hanke
* Hermes Belusca-Maito
*/
#define CLIP_FMT_31 0xC350
#define CLIP_FMT_NT 0xC351
#define CLIP_FMT_BK 0xC352
#define MAX_FMT_NAME_LEN 79
/*
* Win3.1 Clipboard File Format (default)
*/
#pragma pack(push, 1)
typedef struct _CLIPFILEHEADER
{
WORD wFileIdentifier;
WORD wFormatCount;
} CLIPFILEHEADER;
typedef struct _CLIPFORMATHEADER
{
WORD dwFormatID;
DWORD dwLenData;
DWORD dwOffData;
CHAR szName[MAX_FMT_NAME_LEN];
} CLIPFORMATHEADER;
#pragma pack(pop)
/*
* NT Clipboard File Format
*/
typedef struct _NTCLIPFILEHEADER
{
WORD wFileIdentifier;
WORD wFormatCount;
} NTCLIPFILEHEADER;
typedef struct _NTCLIPFORMATHEADER
{
DWORD dwFormatID;
DWORD dwLenData;
DWORD dwOffData;
WCHAR szName[MAX_FMT_NAME_LEN];
} NTCLIPFORMATHEADER;
void ReadClipboardFile(LPCWSTR lpFileName);
void WriteClipboardFile(LPCWSTR lpFileName, WORD wFileIdentifier);

View File

@@ -1,65 +0,0 @@
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Otevřít...", CMD_OPEN
MENUITEM "&Uložit jako...", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "&Konec", CMD_EXIT
END
POPUP "&Upravit"
BEGIN
MENUITEM "&Smazat\tDel", CMD_DELETE
END
POPUP "&Zobrazení"
BEGIN
MENUITEM "&Automaticky", CMD_AUTOMATIC
END
POPUP "&Nápověda"
BEGIN
MENUITEM "&Zobrazit nápovědu", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "&O programu", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Prohlížeč schránky"
STRING_CLIPFILE "Prvek schránky"
STRING_DELETE_MSG "Vymazat obsah stránky?"
STRING_DELETE_TITLE "Vymazat schránku"
STRING_FORMAT_NT "Soubory schránky systému ReactOS (*.clp)"
STRING_FORMAT_GEN "Soubory schránky (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Neznámý formát"
STRING_CF_TEXT "Text"
STRING_CF_BITMAP "Bitmapa"
STRING_CF_OEMTEXT "Text OEM"
STRING_CF_UNICODETEXT "Text Unicode"
STRING_CF_DIB "DIB bitmapa"
STRING_CF_LOCALE "Data znakové sady"
STRING_CF_ENHMETAFILE "Rožířený soubor Metafile"
STRING_CF_METAFILEPICT "Metafile"
STRING_CF_PALETTE "Barevná paleta"
STRING_CF_DIBV5 "DIB bitmapa (Verze 5)"
STRING_CF_SYLK "Symbolický odkaz"
STRING_CF_DIF "Formát výměny dat"
STRING_CF_HDROP "Data přetažení"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "Schránka obsahuje data ve formátu, který není možné zobrazit."
ERROR_INVALID_FILE_FORMAT "Vybraný soubor není platný soubor schránky."
END

View File

@@ -1,65 +0,0 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&Datei"
BEGIN
MENUITEM "Ö&ffnen...", CMD_OPEN
MENUITEM "Speichern &unter...", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "&Beenden", CMD_EXIT
END
POPUP "&Bearbeiten"
BEGIN
MENUITEM "&Löschen\tEntf", CMD_DELETE
END
POPUP "&Anzeige"
BEGIN
MENUITEM "&Automatisch", CMD_AUTOMATIC
END
POPUP "&Hilfe"
BEGIN
MENUITEM "&Hilfethemen", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "Inf&o", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Clipboard Viewer"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "Soll der Inhalt der Zwischenablage gelöscht werden?"
STRING_DELETE_TITLE "Zwischenablage löschen"
STRING_FORMAT_NT "Zwischenablagedateien für ReactOS (*.clp)"
STRING_FORMAT_GEN "Zwischenablagedateien (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Unbekanntes Format"
STRING_CF_TEXT "Text"
STRING_CF_BITMAP "Bitmap"
STRING_CF_OEMTEXT "OEM-Text"
STRING_CF_UNICODETEXT "Unicodetext"
STRING_CF_DIB "DIB-Bitmap"
STRING_CF_LOCALE "Gebietsschema"
STRING_CF_ENHMETAFILE "Erweiterte Metadatei"
STRING_CF_METAFILEPICT "Metadatei"
STRING_CF_PALETTE "Farbpalette"
STRING_CF_DIBV5 "DIB-Bitmap (Version 5)"
STRING_CF_SYLK "Symbolic Link Format"
STRING_CF_DIF "Data Interchange Format"
STRING_CF_HDROP "Drop-Daten"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "Die Daten in der Zwischenablage liegen in einem Format vor, welches nicht angezeigt werden kann."
ERROR_INVALID_FILE_FORMAT "Die ausgewählte Datei ist keine gültige Zwischenablagedatei."
END

View File

@@ -1,65 +0,0 @@
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Open...", CMD_OPEN
MENUITEM "Save &As...", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "E&xit", CMD_EXIT
END
POPUP "&Edit"
BEGIN
MENUITEM "&Delete\tDel", CMD_DELETE
END
POPUP "&Display"
BEGIN
MENUITEM "&Automatic", CMD_AUTOMATIC
END
POPUP "&Help"
BEGIN
MENUITEM "&Help Topics", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "&About", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Clipboard Viewer"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "Clear contents of the Clipboard?"
STRING_DELETE_TITLE "Clear Clipboard"
STRING_FORMAT_NT "Clipboard files for ReactOS (*.clp)"
STRING_FORMAT_GEN "Clipboard files (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Unknown Format"
STRING_CF_TEXT "Text"
STRING_CF_BITMAP "Bitmap"
STRING_CF_OEMTEXT "OEM Text"
STRING_CF_UNICODETEXT "Unicode Text"
STRING_CF_DIB "DIB Bitmap"
STRING_CF_LOCALE "Locale Data"
STRING_CF_ENHMETAFILE "Enhanced Metafile"
STRING_CF_METAFILEPICT "Metafile"
STRING_CF_PALETTE "Color Palette"
STRING_CF_DIBV5 "DIB Bitmap (Version 5)"
STRING_CF_SYLK "Symbolic Link Format"
STRING_CF_DIF "Data Interchange Format"
STRING_CF_HDROP "Drop Data"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "The Clipboard contains data in a format, that cannot be displayed."
ERROR_INVALID_FILE_FORMAT "The selected file is not a valid clipboard file."
END

View File

@@ -1,67 +0,0 @@
/* Spanish translation by Ismael Ferreras Morezuelas (Swyter) */
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&Archivo"
BEGIN
MENUITEM "&Abrir...", CMD_OPEN
MENUITEM "Guardar &como...", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "S&alir", CMD_EXIT
END
POPUP "&Edición"
BEGIN
MENUITEM "&Borrar\tDel", CMD_DELETE
END
POPUP "&Visualización"
BEGIN
MENUITEM "&Automática", CMD_AUTOMATIC
END
POPUP "A&yuda"
BEGIN
MENUITEM "&Temas de ayuda", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "&Acerca de", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Clipboard Viewer"
STRING_CLIPFILE "Clipboard Element"
STRING_DELETE_MSG "¿Borrar contenidos del Portapapeles?"
STRING_DELETE_TITLE "Vaciar Portapapeles"
STRING_FORMAT_NT "Archivos de Portapapeles de ReactOS (*.clp)"
STRING_FORMAT_GEN "Archivos de Portapapeles (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Formato desconocido"
STRING_CF_TEXT "Texto"
STRING_CF_BITMAP "Mapa de bits"
STRING_CF_OEMTEXT "Texto OEM"
STRING_CF_UNICODETEXT "Texto Unicode"
STRING_CF_DIB "Mapa de bits DIB"
STRING_CF_LOCALE "Dato de idiomas"
STRING_CF_ENHMETAFILE "Metarchivo mejorado"
STRING_CF_METAFILEPICT "Metarchivo"
STRING_CF_PALETTE "Paleta de color"
STRING_CF_DIBV5 "Mapa de bits DIB (versión 5)"
STRING_CF_SYLK "Formato de enlace simbólico"
STRING_CF_DIF "Formato de intercambio de datos"
STRING_CF_HDROP "Datos de arrastrar y soltar"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "El Portapapeles contiene datos en un formato que no es posible mostrar."
ERROR_INVALID_FILE_FORMAT "El archivo seleccionado no es un archivo del Portapapeles válido."
END

View File

@@ -1,65 +0,0 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&Fichier"
BEGIN
MENUITEM "&Ouvrir...", CMD_OPEN
MENUITEM "&Enregistrer sous...", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "&Quitter", CMD_EXIT
END
POPUP "&Edition"
BEGIN
MENUITEM "&Supprimer\tSuppr", CMD_DELETE
END
POPUP "Affic&hage"
BEGIN
MENUITEM "&Automatique", CMD_AUTOMATIC
END
POPUP "&Aide"
BEGIN
MENUITEM "&Rubriques d'aide", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "&À propos...", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Visionneuse du Presse-papiers"
STRING_CLIPFILE "Élément du Presse-papiers"
STRING_DELETE_MSG "Voulez-vous effacer le contenu du Presse-papiers ?"
STRING_DELETE_TITLE "Effacer le Presse-papiers"
STRING_FORMAT_NT "Fichiers du Presse-papiers ReactOS (*.clp)"
STRING_FORMAT_GEN "Fichiers du Presse-papiers (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Format inconnu"
STRING_CF_TEXT "Texte"
STRING_CF_BITMAP "Bitmap"
STRING_CF_OEMTEXT "Texte OEM"
STRING_CF_UNICODETEXT "Texte Unicode"
STRING_CF_DIB "DIB Bitmap"
STRING_CF_LOCALE "Locale Data"
STRING_CF_ENHMETAFILE "Enhanced Metafile"
STRING_CF_METAFILEPICT "Metafile"
STRING_CF_PALETTE "Color Palette"
STRING_CF_DIBV5 "DIB Bitmap (Version 5)"
STRING_CF_SYLK "Symbolic Link Format"
STRING_CF_DIF "Data Interchange Format"
STRING_CF_HDROP "Drop Data"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "Le Presse-papiers contient des données dans un format qui ne peut être affiché."
ERROR_INVALID_FILE_FORMAT "Le fichier sélectionné n'est pas un fichier valide du presse-papiers."
END

View File

@@ -1,66 +0,0 @@
/* Ștefan Fulea (stefan dot fulea at mail dot md) */
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&Fișier"
BEGIN
MENUITEM "&Deschidere…", CMD_OPEN
MENUITEM "Păst&rare ca…", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "I&eșire", CMD_EXIT
END
POPUP "&Editare"
BEGIN
MENUITEM "Șt&erge\tDel", CMD_DELETE
END
POPUP "&Afișare"
BEGIN
MENUITEM "&Automată", CMD_AUTOMATIC
END
POPUP "Aj&utor"
BEGIN
MENUITEM "&Manual…", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "&Despre…", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Inspector de Clipboard"
STRING_CLIPFILE "Element de Clipboard"
STRING_DELETE_MSG "Elimină conținutul din Clipboard?"
STRING_DELETE_TITLE "Curăță Clipboard"
STRING_FORMAT_NT "Fișiere clipboard pentru ReactOS (*.clp)"
STRING_FORMAT_GEN "Fișiere clipboard (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Format nespecificat"
STRING_CF_TEXT "Text"
STRING_CF_BITMAP "Bitmap"
STRING_CF_OEMTEXT "Text OEM"
STRING_CF_UNICODETEXT "Text unicode"
STRING_CF_DIB "Bitmap DIB"
STRING_CF_LOCALE "Date locale"
STRING_CF_ENHMETAFILE "Metafișier îmbunătățit"
STRING_CF_METAFILEPICT "Metafișier"
STRING_CF_PALETTE "Paletă de culori"
STRING_CF_DIBV5 "Bitmap DIB (versiune 5)"
STRING_CF_SYLK "Format de legătură simbolică"
STRING_CF_DIF "Format de transfer al datelor"
STRING_CF_HDROP "Abandon date"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "În clipboard sunt date într-un format care nu poate fi afișat."
ERROR_INVALID_FILE_FORMAT "Fișierul selectat nu e un fișier clipboard valid."
END

View File

@@ -1,65 +0,0 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
ID_ACCEL ACCELERATORS
BEGIN
VK_DELETE, CMD_DELETE, VIRTKEY
END
MAIN_MENU MENU
BEGIN
POPUP "&Файл"
BEGIN
MENUITEM "&Открыть...", CMD_OPEN
MENUITEM "Сохранить &как...", CMD_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "В&ыход", CMD_EXIT
END
POPUP "&Правка"
BEGIN
MENUITEM "&Удалить\tDel", CMD_DELETE
END
POPUP "&Вид"
BEGIN
MENUITEM "&Автоматически", CMD_AUTOMATIC
END
POPUP "&Справка"
BEGIN
MENUITEM "&Вызов справки", CMD_HELP
MENUITEM SEPARATOR
MENUITEM "&О программе", CMD_ABOUT
END
END
STRINGTABLE
BEGIN
STRING_CLIPBOARD "Просмотр буфера обмена"
STRING_CLIPFILE "Элемент буфера обмена"
STRING_DELETE_MSG "Очистить содержимое буфера обмена?"
STRING_DELETE_TITLE "Очистить буфер обмена"
STRING_FORMAT_NT "Файлы буфера обмена ReactOS (*.clp)"
STRING_FORMAT_GEN "Файлы буфера обмена (*.clp)"
END
STRINGTABLE
BEGIN
STRING_CF_UNKNOWN "Неизвестный формат"
STRING_CF_TEXT "Текст"
STRING_CF_BITMAP "Точечный рисунок"
STRING_CF_OEMTEXT "Текст в кодировке OEM"
STRING_CF_UNICODETEXT "Текст в кодировке Юникод"
STRING_CF_DIB "Аппаратно-независимый точечный рисунок (DIB)"
STRING_CF_LOCALE "Языковые данные"
STRING_CF_ENHMETAFILE "Расширенный метафайл"
STRING_CF_METAFILEPICT "Метафайл"
STRING_CF_PALETTE "Цветовая палитра"
STRING_CF_DIBV5 "Аппаратно-независимый точечный рисунок (DIB) (Версия 5)"
STRING_CF_SYLK "Формат символических ссылок"
STRING_CF_DIF "Формат обмена данными"
STRING_CF_HDROP "Очистить данные"
END
STRINGTABLE
BEGIN
ERROR_UNSUPPORTED_FORMAT "Буфер обмена содержит данные, которые невозможно отобразить."
ERROR_INVALID_FILE_FORMAT "Выбранный файл не является файлом буфера обмена."
END

Some files were not shown because too many files have changed in this diff Show More