mirror of
https://github.com/reactos/reactos
synced 2025-10-07 00:42:44 +02:00
Compare commits
12 Commits
ReactOS-0.
...
ReactOS-0.
Author | SHA1 | Date | |
---|---|---|---|
|
08db8fdd1f | ||
|
d3c5de2335 | ||
|
2904a2ade0 | ||
|
16c0d115da | ||
|
fd797a7054 | ||
|
d6b2d32c34 | ||
|
f14a0aa80f | ||
|
b8ff7aff51 | ||
|
ca05c5f9f2 | ||
|
347aa122c5 | ||
|
9bfbf0d4a0 | ||
|
bc632bd42c |
31
reactos/.hgeol
Normal file
31
reactos/.hgeol
Normal 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
|
@@ -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()
|
||||
|
@@ -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>
|
||||
|
2615
reactos/Doxyfile
2615
reactos/Doxyfile
File diff suppressed because it is too large
Load Diff
@@ -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/
|
||||
|
||||
|
@@ -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}")
|
||||
|
||||
|
@@ -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.
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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\
|
||||
|
@@ -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\
|
||||
|
@@ -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\
|
||||
|
@@ -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\
|
||||
|
@@ -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\
|
||||
|
@@ -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\
|
||||
|
@@ -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
|
@@ -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"
|
||||
|
||||
|
@@ -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()
|
||||
|
||||
|
33
reactos/base/applications/calc/about.c
Normal file
33
reactos/base/applications/calc/about.c
Normal 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;
|
||||
}
|
||||
|
@@ -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*/
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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 "минута"
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
BIN
reactos/base/applications/calc/res/ROS_logo.bmp
Normal file
BIN
reactos/base/applications/calc/res/ROS_logo.bmp
Normal file
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 |
@@ -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
|
||||
|
@@ -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 */
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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'))
|
||||
|
@@ -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.
|
||||
|
@@ -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;
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -140,7 +140,6 @@ LrgCellWndProc(HWND hwnd,
|
||||
EndPaint(hwnd,
|
||||
&ps);
|
||||
|
||||
UpdateStatusBar(infoPtr->pActiveCell->ch);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
{
|
||||
|
@@ -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 |
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
@@ -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;
|
||||
}
|
@@ -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
|
||||
);
|
||||
};
|
||||
|
@@ -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);
|
||||
}
|
@@ -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
|
||||
);
|
||||
};
|
||||
|
@@ -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);
|
||||
}
|
@@ -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(
|
||||
);
|
||||
};
|
@@ -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);
|
||||
}
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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 |
@@ -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
|
@@ -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)
|
@@ -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;
|
||||
}
|
@@ -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
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
@@ -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;
|
||||
}
|
@@ -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);
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
|
@@ -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
Reference in New Issue
Block a user