Compare commits

...

90 Commits

Author SHA1 Message Date
Joachim Henze
b09ee4e0a0 [TASKMGR] et-EE.rc is better this way and with less changes
to existing translations.
2023-10-06 12:15:39 +02:00
Joachim Henze
3c1eb7f920 [TASKMGR] fr-FR.rc Respect the french speciality
We verified Win7-en and Win2k3-en to behave as proposed in this PR (R for properties, P for priority).
But *french* Windows (I believe Hermes picture was from WinVista-fr or Win7-fr or Win10-fr maybe) does it differently.
2023-10-05 10:18:37 +02:00
Joachim Henze
1d31de59d1 [TASKMGR] *.rc: Fix accelerator collisions &Priority <-> &Properties
We had them in almost all languages.
Try to fix them in a uniform way:
&Priority
P&roperties

We introduced them during 0.4.15-dev'ing when
MENUITEM ID_PROCESS_PAGE_PROPERTIES
and
MENUITEM ID_PROCESS_PAGE_OPENFILELOCATION
were added.

Yes, I know that kind of stuff is hard to review. Not my fault.
I will PR anyway.

nl-NL.rc had another collision.
2023-10-03 21:14:18 +02:00
Joachim Henze
46b4b5581d [TASKMGR] Favor _countof(), no functional change intended (#5757)
Taskmgr used a mixture: Sometimes _countof(), sometimes ARRAYSIZE()
and sometimes it calculated the count plain by sizeof(var)/sizeof(TYPE).
Harmonize everywhere to _countof() as it is the shortest solution.

Fix some formatting sins, like placing comments before else-statement.
Shorten the length of some very long line
intentionally *without introducing additional linebreaks* !

Shorten vertical length of some functions to increase their chance to
fit on the screen without scrolling.

Fix wrong indentation level in TaskManagerWndProc().

*.rc: Remove superfluous and redundant comment in all langs

No functional change intended.
2023-10-03 21:00:10 +02:00
Timo Kreuzer
410b1030c0 [NTOS:KE/x64] Implement detection of more KF_* feature flags
- Detect KF_SSSE3, KF_SSE4_1, KF_SSE4_2, KF_RDRAND, KF_BRANCH, KF_SLAT, KF_GENUINE_INTEL, KF_AUTHENTICAMD, KF_ACNT2, KF_SMEP, KF_SMAP, KF_RDWRFSGSBASE, KF_XSAVEOPT, KF_XSAVES, KF_HUGEPAGE, KF_RDTSCP
2023-10-03 19:45:44 +03:00
Timo Kreuzer
1a7ab2fe68 [NTOS:KE/x64] Use structures for CPUID 2023-10-03 19:45:44 +03:00
Timo Kreuzer
6048ebeff9 [SDK] Add CPUID and MSR definitions for x86/x64
- Import definitions from edk2 (see https://github.com/tianocore/edk2/tree/master/MdePkg/Include/Register)
- Add additional unions as well as AMD SVM CPUID
2023-10-03 19:45:44 +03:00
Timo Kreuzer
70f6ed8ee3 [NTOS:KE/x64] Improve CPU feature detection
- Use 64 bit feature flags (with a hack in the PRCB)
- Improve setting up SharedUserData->ProcessorFeatures
2023-10-03 19:45:44 +03:00
Timo Kreuzer
47c1dcd023 [NDK] Update kernel feature bits constants
- Move them into architecture specific headers.
- Add missing constants based on https://www.geoffchappell.com/studies/windows/km/ntoskrnl/structs/kprcb/featurebits.htm
- Yes, they are 64 bits
2023-10-03 19:45:44 +03:00
Timo Kreuzer
b66441d581 [XDK] Add missing PF_* processor feature definitions 2023-10-03 19:45:44 +03:00
George Bișoc
50f367fa58 [NTOS:CM] Use COMPUTE_HASH_CHAR to compute the conv hash key
We have a dedicated macro definition for that so just use it.
2023-10-03 11:01:21 +02:00
Whindmar Saksit
34066e475a GetDetailsOf does not support column flags (#5755)
GetDetailsOf does not support the column flags used by CompareIDs.
As a side effect, also fixes LPARAM to UINT truncation on 64-bit.
2023-10-03 10:43:44 +02:00
Joachim Henze
6528ab8fcb [TASKMGR] de-DE.rc Update part 3
I spotted yet another flip:
translation of IDS_TAB_PFDELTA and IDS_TAB_VMSIZE were flipped.

I spotted that by toggling all columns off entirely
in the View-Options dialog where the columns can be selected
and then added only one column at a time. I did that for all options.

I do recommend translators of other langs to do the same test,
I was shocked about the amount of bugs I spotted for german.
And it is very subtle / easy to miss, if you enable/disable multiple columns
together!

Let's call it a day now!
2023-10-03 06:31:04 +02:00
Joachim Henze
65ce20896a [TASKMGR] *.rc Strip unused IDD_DEBUG_CHANNELS_DIALOG
This is an addendum to 0.4.15-dev-413-g ed7196d964

binary size shrinks slightly although that dlg was unused:
taskmgr.exe RosBEWin2.2.2 GCC8.4.0dbg  715.264 -> 708.608
2023-10-03 03:50:41 +02:00
Joachim Henze
142c35fcce [TASKMGR] de-DE.rc Update
GRAPH == 'Anzeige'. Addendum to last commit
2023-10-03 02:47:10 +02:00
Joachim Henze
e15d68ba5d [TASKMGR] de-DE German Update & bug-fixes
This fixes several issues:
- add a few missing translations, e.g. ID_PROCESS_PAGE_PROPERTIES & ID_PROCESS_PAGE_OPENFILELOCATION
- IDS_TAB_PEAKMEMUSAGE translation was flipped with IDS_TAB_MEMDELTA
- IDC_MEM_USAGE_FRAME had text truncation, fix that by structurally switching to "Speicher"
- waste less space for the listview headers in the Processes tab so user can display more columns conveniently without the headers unnecessarily being crippled to "..."
- Sync some controls sizes back to en-US in the performance tab
- Translation for ID_VIEW_CPUHISTORY_ONEGRAPHALL and ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU was swapped accidentally
- Strip comment lines in the end, which were outdated anyway
- avoid monsters that not even a german person can read like "Auslagerungsdateiauslastungs-Verlaufsanzeige" which is like "Donaudampfschifffahrtselektrizitätenhauptbetriebswerkbauunterbeamtengesellschaft"
2023-10-03 02:05:28 +02:00
Carl J. Bialorucki
3e46a8673d [EXPLORER][COMCTL32] Fix balloon tooltips and system pager alerts (#5559)
- [EXPLORER] Set maximum balloon width for notification area
- [COMCTL32] Fix balloon tooltip shape

- Limit balloon tooltips from extending past the edges of the monitor, not the edges of the work area.
- Instead of simply repositioning the main rectangle when the balloon is too far towards one edge of the screen,
  try flipping the balloon the other way. This is the same behavior as Windows Server 2003.
- Tweak some values used to draw the balloon tooltips to more closely follow the Windows balloon tooltip style.
- Removing trailing whitespace.
- While the new changes are guarded, consider cancelling our Wine sync for common controls.
  Our common controls are responsible for many graphical issues and lack of features throughout ReactOS.

CORE-19109
2023-10-03 01:08:45 +03:00
Stanislav Motylkov
f53be82158 [REACTOS] Revert badly formatted commits
This reverts commits ab1868c7bf and 1aa76275ac.
2023-10-03 01:00:07 +03:00
Carl J. Bialorucki
f744bb2994 [BROWSEUI] More settings and window refresh (#5584)
Adds the option to set the address edit box to use the display name or the full path. Also refreshes the window title and edit box in all open explorer windows when changing these settings using the folder options dialog.

## PROPOSED CHANGES ##
- Create a new CabinetStateSettings type that inherits from the CABINETSTATE type. This allows us to add additional cabinet state settings not exposed in the CABINETSTATE type as well as adding a Load() method to easily populate the cabinet state settings.

- Add a global cabinet state settings object. While most settings in browseui are stored independently in each shellbrowser window, cabinet state settings are global and apply to every shellbrowser window. This can be confirmed on Windows Server 2003 and Windows 7.

- When receiving the WM_SETTINGCHANGE window message from the folder options dialog, refresh the title of the window and the text in the address edit box. This is the same behavior as Windows Server 2003 and Windows 7.
Add a DWORD registry value to HKCU\...\Explorer\CabinetState\FullPathAddress to allow users to toggle this setting on or off in our folder options.

CORE-9277
2023-10-02 22:43:00 +02:00
Carl J. Bialorucki
1aa76275ac Fix balloon tooltip shape 2023-10-02 22:39:10 +02:00
Carl J. Bialorucki
ab1868c7bf Set maximum balloon width for notification area 2023-10-02 22:39:10 +02:00
Sarthak Roy
4ba8af9cae [CALC] Use pragma once for calc.h (#5754)
It's simpler and only needs to be included once at the beginning of the
header file. It generates an unique identifier for the file automatically,
so maintainers wouldn't need to choose unique names for the macros.
It will be helpful if any future refactoring takes place.

Signed-off-by: Sarthak Roy <sarthakroy2002@gmail.com>
2023-10-02 00:58:32 +03:00
George Bișoc
dd54cd32cf [NTDLL_WINETEST] Enable registry tests for KeyCachedInformation back 2023-10-01 20:06:03 +02:00
George Bișoc
c0ea1f96ef [NTOS:CM][DOCUMENTATION] Provide documentation for newly added functions 2023-10-01 20:06:03 +02:00
George Bișoc
f4de5ceb9e [NTOS:CM] Implement cache lookup and cleanup subkey information for cache consistency
During an open or create procedure of a registry key, the registry parser grabs
a key control block (KCB) from the parser object and uses its information to do the
necessary work in order to obtain a pointer to the newly created or opened registry key.

However, the registry parsers faces several issues. First, we don't do subkey cache cleaning
information against gathered KCBs so whenever we do a registry parse we end up with KCBs
that have cache inconsistencies. Moreover we don't do any locking of whatever KCB we
are grabing during a parse procedure.

=== PROPOSED CHANGES ===

* Implement CmpComputeHashValue and CmpLookInCache functions. With CmpComputeHashValue we can
compute the convkey hashes of each subkey in the path name of a key so we can lock them
with CmpBuildAndLockKcbArray. CmpLookInCache is a function that searches for the suitable
KCB in the cache. The factors that determine if a KCB is "suitable" are:

-- the currently found KCB in the hash list has the same levels as that of the
given KCB from the parse object;

-- The key names from the computed hash values match with the block name of
the KCB;

-- The currently found KCB is not deleted.

The KCB will be changed if the key path name points to a partial match name in
the cache. The KCB from the parse object will be used if we have a full match
of remaining levels.

* Add missing CMP_LOCK_HASHES_FOR_KCB flags on CmpCreateKeyControlBlock calls
that create KCBs during a parse procedure. Such lock has to be preserved until
we're done with the registry parsing.

* On CmpDoCreateChild, preserve the exclusive lock of the KCB when we are
enlisting the key body.

* On CmpDoCreate, make sure that the passed parent KCB is locked exclusively and
lock the hiver flusher as we don't want the flusher to kick in during a key
creation on the given hive. Cleanup the subkey info when we're creating a key
object. Also implement missing cleanup path codes. Furthermore, avoid key
object creation if the parent KCB is protected with a read-only switch.

* Soft rewrite the CmpDoOpen function, namely how we manage a direct open vs
create KCB on open scenario. When a KCB is found in cache avoid touching
the key node. If the symbolic link has been resolved (aka found) then lock
exclusively the symbolic KCB. Otherwise just give the cached KCB to the caller.

If it were for the caller to request a KCB creation, we must check the passed
KCB from the parser object is locked exclusively, unlike on the case above
the caller doesn't want to create a KCB because there's already one in the cache.
We don't want anybody to touch our KCB while we are still toying with it during
its birth. Furthermore, enlist the key body but mind the kind of lock it's been
used.

* On CmpCreateLinkNode, avoid creating a key object if the parent KCB is protected
with a read-only switch. In addition, add missing hive flusher locks for both
the target hive and its child. Cleanup the subkey information of the KCB when
creating a link node, this ensures our cached KCB data remains consistent.

* Do a direct open on CmpParseKey if no remaining subkey levels have been found
during hash computation and cache lookup, in this case the given KCB is the
block that points to the exact key. This happens when for example someone tried
to call RegOpenKeyExW but submitting NULL to the lpSubKey argument parameter.

CORE-10581
ROSTESTS-198
2023-10-01 20:06:02 +02:00
George Bișoc
8cb56e77a6 [NTOS:CM] Do not call CmpSecurityMethod when assigning a security descriptor
CmpSecurityMethod is a method used by the Object Manager and called by this
subsystem whenever a security operation has to be done against a key object.

As CmpSecurityMethod is a specific OB construct we should not make any direct
call attempts to CmpSecurityMethod, only OB is responsible for that. This fixes
a deadlock where CmpSecurityMethod acquires a push lock for exclusive access
even though such lock is already acquired by the same calling thread in
CmpDoCreateChild.
2023-10-01 20:06:02 +02:00
George Bișoc
7fd6f86803 [NTOS:CM] Do not acquire a KCB lock twice when deleting a key object
This prevents a deadlock in DelistKeyBodyFromKCB when we delete a key
object because of an access check failure during a open procedure of a
registry key, as we are already holding a lock against the target KCB of
the key body.
2023-10-01 20:06:02 +02:00
George Bișoc
697a52aa33 [NTOS:CM] Do not acquire the lock twice when the Object Manager calls CmpSecurityMethod
Whenever a security request is invoked into a key object, such as when requesting
information from its security descriptor, the Object Manager will execute
the CmpSecurityMethod method to do the job.

The problem is that CmpSecurityMethod is not aware if the key control block
of the key body already has a lock acquired which means the function will attempt
to acquire a lock again, leading to a deadlock. This happens if the same
calling thread locks the KCB but it also wants to acquire security information
with ObCheckObjectAccess in CmpDoOpen.

Windows has a hack in CmpSecurityMethod where the passed KCB pointer is ORed
with a bitfield mask to avoid locking in all cases. This is ugly because it negates
every thread to acquire a lock if at least one has it.
2023-10-01 20:06:02 +02:00
George Bișoc
08fcf0c58b [NTOS:CM] Implement locking/unlocking of KCBs in an array
The CmpUnLockKcbArray, CmpLockKcbArray and CmpBuildAndLockKcbArray routines
help us to lock KCBs within array so that information remains consistent when
we are doing a cache lookup during a parse procedure of the registry database.
2023-10-01 20:06:01 +02:00
George Bișoc
c6230ba255 [NTOS:CM] Add KCB array lock function prototypes & Other Stuff
Implement CmpBuildAndLockKcbArray and CmpUnLockKcbArray prototypes, we'll gonna need these
to do the locking/unlocking of KCBs stacked up in an array. In addition implement some CM
constructs specifically for cache lookup implementation (more at documentation remarks).

=== DOCUMENTATION REMARKS ===

CMP_SUBKEY_LEVELS_DEPTH_LIMIT -- This is the limit of up to 32 subkey levels
that the registry can permit. This is used in CmpComputeHashValue to ensure
that we don't compute more than the limit of subkeys we're allowed to.

CMP_KCBS_IN_ARRAY_LIMIT -- This is equal to CMP_SUBKEY_LEVELS_DEPTH_LIMIT
plus the addition by 2. This construct is used as a limit of KCB elements
the array can hold. 2 serves as an additional space for the array (one for
the root object and another one as extra space so we don't blow up the stack
array).

CMP_LOCK_KCB_ARRAY_EXCLUSIVE & CMP_LOCK_KCB_ARRAY_SHARED -- These flags are used exclusively
for CmpBuildAndLockKcbArray and CmpLockKcbArray. Their meaning are obvious.

CM_HASH_CACHE_STACK -- A structure used to store the hashes of KCBs for locking. It is named
"stack" because the way we store the hashes of KCBs is within an auxilliary "outer stack array".
2023-10-01 20:06:01 +02:00
George Bișoc
8a335a3141 [NTOS:CM] Implement the shared lock macro for use
CmpAcquireKcbLockSharedByKey can come in handy for use to lock KCBs by their convkey with a shared lock, specifically we would need this for cache lookup stuff.
2023-10-01 20:06:00 +02:00
George Bișoc
26fe3616fe [NTOS:CM] Implement COMPUTE_HASH_CHAR macro definition
Wrap the hash computation formula in a macro so that we don't have to copy
the logic over the places again and again.
2023-10-01 20:06:00 +02:00
George Bișoc
a4213d491d [NTOS:CM] Add surrounding parentheses to GET_HASH_INDEX definition 2023-10-01 20:05:57 +02:00
Timo Kreuzer
0e68e27ff6 [WINSPOOL] Add a number of missing NULL checks. 2023-10-01 13:05:51 +03:00
Timo Kreuzer
02df49ebd8 [WINSPOOL] Properly copy the DEVMODE in IntFixUpDevModeNames
Otherwise the size isn't set up correctly, leading to a crash.
Fixes crash in comdl32_winetest printdlg.
2023-10-01 13:05:51 +03:00
Joachim Henze
8c76870639 [NTOS:MM] Fix missing \n in unimplemented codepath DPRINT
We can hit that unimplemented code-path-line in NtQuerySection()
when browsing youtube.com with Chromium 49.
2023-09-30 19:06:30 +02:00
Katayama Hirofumi MZ
945ee4b2a4 [MSPAINT] Larger/smaller Rubber/AirBrush on Ctrl+Plus/Minus (#5740)
- Enable changing rubber/airbrush thickness by Ctrl+Plus / Ctrl+Minus
  key combination in TOOL_AIRBRUSH and TOOL_RUBBER.
CORE-19094
2023-09-28 21:54:32 +09:00
Katayama Hirofumi MZ
8a4787b384 [MSPAINT] Larger/smaller brush nib on Ctrl+Plus/Minus (#5739)
- Introduce the concept of "brush width" to the
  tools model.
- Enable changing the brush width by Ctrl+Plus/Minus
  key combination in TOOL_BRUSH.
- Re-define brush styles.
CORE-19094
2023-09-28 21:30:34 +09:00
Serge Gautherie
c84b5007d0 [NTOS:CM] Simplify CmpDelayAllocBucketLock code a bit (#5729)
- Remove duplicate CmpDelayAllocBucketLock definition.
- Remove an else.
2023-09-28 11:39:13 +02:00
Katayama Hirofumi MZ
f2a012240f [MSPAINT] Larger/smaller pen nib on Ctrl+Plus/Minus (#5738)
- Introduce the concept of pen width (not line width) to the tools model.
- Enable changing pen/line width by Ctrl+Plus/Minus key combination in TOOL_PEN,
  TOOL_LINE, TOOL_BEZIER, TOOL_RECT, TOOL_SHAPE, TOO_ELLIPSE, and
  TOOL_RRECT tools.
CORE-19094
2023-09-28 16:32:36 +09:00
Katayama Hirofumi MZ
cbc63d876c [MSPAINT] "Selection Clone" and "Selection Brush" (#5734)
- Stamp the image of the selection when the user clicks on
  the selection while holding down the Ctrl key.
- Draw the image of the selection continuously when the user
  starts dragging the selection while holding down the Shift key.
CORE-19094
2023-09-28 07:34:25 +09:00
Timo Kreuzer
03283371c1 [NTOS/Mm] Fix SWAPENTRY bit-check in MmCreatePageFileMapping
Test for the highest bit, not for bit 3 / 7.
2023-09-28 01:19:47 +03:00
Joachim Henze
058b746bbe [SHELL32] *.rc: AGAIN! Use 1996 as birth year in IDD_ABOUT for consistency
We do use the birth year 1996 instead of 1998
within our msgina pictures already,
and also within the [SDK] for autogenerated file-info.

Since SHELL32 IDD_ABOUT is used by many applications it makes sense to harmonize with that.

Was done already during 0.4.15-dev for SHELL32, but we have to do it again,
since some recent translation PRs to match the en-US.rc again.
2023-09-27 22:23:31 +02:00
Joachim Henze
29c0e23fd4 [MAZESCR] Avoid (DLGPROC) cast, fix a typo (#5694)
May help a bit with x64.

Co-authored-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
2023-09-27 17:37:44 +00:00
Joachim Henze
e69d2e8b89 [CMICONTROL] Fix MSVC 14.2 dbg x64 warning C4267 (#5696)
Can be observed on the buildbots:
2023-09-17T14:19:34.2051345Z [10663/14808] Building CXX object drivers\wdm\audio\drivers\CMIDriver\cmicontrol\CMakeFiles\cmicontrol.dir\main.cpp.obj
2023-09-17T14:19:34.2052611Z D:\a\reactos\reactos\src\drivers\wdm\audio\drivers\CMIDriver\cmicontrol\main.cpp(818): warning C4267: '=': conversion from 'size_t' to 'unsigned int', possible loss of data
2023-09-27 17:34:32 +00:00
Serge Gautherie
9ca88bef80 [NTOS:MM] Fix 'eanbled' typo in a comment (#5728) 2023-09-27 17:31:42 +00:00
Timo Kreuzer
8227c5d380 [NTOS] Implement support for opting out of NX policy
Fixes crash in ntdll_winetest info on x64.
2023-09-26 18:04:19 +03:00
Timo Kreuzer
6133cc016d [CRT/x64] Fix a bug in __C_specific_handler
Fixes crash of compiler_apitest pseh
2023-09-26 18:02:21 +03:00
Timo Kreuzer
cf4aa7ea9d [LSASRV] Fix usage of self-relative security descriptor in LsarQuerySecurityObject 2023-09-26 18:01:45 +03:00
Timo Kreuzer
5127433416 [SAMSRV] Fix usage of self-relative security descriptor in SamrQuerySecurityObject
Fixes crash of netapi32_winetest access
2023-09-26 18:01:45 +03:00
Timo Kreuzer
df053d4e43 [RTL] Improve usage of absolte vs self-relative security descriptors
- RtlpQuerySecurityDescriptor: Change argument type of first parameter from PISECURITY_DESCRIPTOR to PSECURITY_DESCRIPTOR, since it handles both absolute and self-relative SDs.
- RtlMakeSelfRelativeSD: rename first parameter from AbsoluteSD to SecurityDescriptor, since it handles both absolute and self-relative SDs.
- SepGetGroupFromDescriptor/SepGetOwnerFromDescriptor/SepGetDaclFromDescriptor/SepGetSaclFromDescriptor: Change parameter type from PVOID to PSECURITY_DESCRIPTOR for clarity.
2023-09-26 18:01:45 +03:00
Katayama Hirofumi MZ
389d04650f [MSPAINT] Restrict drawing direction on Shift key (#5726)
- While holding down the Shift key, drawing lines with the
  pen/brush is limited to either of 8 directions (horizontal/vertical/diagonal).
- s/abs/labs/
CORE-19094
2023-09-26 22:47:23 +09:00
Katayama Hirofumi MZ
d1e9fe13de [SHELL32][SDK] Implement SHTestTokenPrivilegeW (#5725)
and modify shell32.spec.
2023-09-26 07:36:07 +09:00
Doug Lyons
1b3eed58ca [SHELL32] Fix for shlexec.cpp regressions (#5282)
fixes CORE-18967 'Taskbar toolbar - Right click > Open folder fails'
by restoring the code-path we removed with the guilty 
0.4.15-dev-3847-g /9b716539182864bc077e362febcda74da50287ed 

and add test_sei_lpIDList to shell32:ShellExecuteEx apitest test to protect
that functionality on future attempts to simplify.
2023-09-24 20:35:28 +00:00
Katayama Hirofumi MZ
cc6e444ceb [SHELL32][SDK] Implement SHInvokePrivilegedFunctionW (#5718)
Add it to <undocshell.h>. Modify shell32.spec.
2023-09-24 07:11:38 +09:00
Timo Kreuzer
ed06c06dcb [NTOS:CM] Fix lock leak
Triggered by low available pool memory during kmtest ExPools.
2023-09-23 18:34:00 +03:00
Andrew Dent
aa84645bcc [THEMES] Optimize png for Lautus style (#5712)
Lossless optimization of new png Start button in Lautus style, original by @Splitwirez (ed134bf2, #5540).
Slimmed 464 bytes, ~20% saving. This png is encoded as a grayscale+alpha, so should be tested.
2023-09-23 15:54:39 +03:00
Timo Kreuzer
88808bad8a [RPCRT4] Fix x64 assembly code
movaps is a 128 bit aligned move, we need a 64 bit unaligned move, so use movsd.
Fixes a crash in oleaut32_winetest tmarshal.
Also add a comment about the use of movd instead of movq.
2023-09-23 11:06:24 +03:00
Katayama Hirofumi MZ
ed9973f876 [MSPAINT] Introduce Ctrl+Plus / Ctrl+Minus (#5717)
- Add Ctrl+Plus and Ctrl+Minus accelerators.
- Add IDM_CTRL_PLUS and IDM_CTRL_MINUS
  commands.
- Stretch the selection area on IDM_CTRL_PLUS
  and IDM_CTRL_MINUS actions.
CORE-19094
2023-09-23 09:26:11 +09:00
Katayama Hirofumi MZ
bbb33a6ed5 [MSPAINT] Don't show error message twice (#5715)
- Reduce display of error message on IDM_EDITCOPYTO and IDM_EDITPASTEFROM.
- Introduce LockBitmap/UnlockBitmap mechanism for ImageModel and SelectionModel.
CORE-19181, CORE-19182
2023-09-22 10:48:13 +09:00
Katayama Hirofumi MZ
98050f9139 [MSPAINT] Don't copy bits on resizing (#5716)
- Fix the graphical glitches on resizing and moving toolbars.
- Add SWP_NOCOPYBITS flag on positioning controls on resizing of main window.
CORE-19137
2023-09-22 07:35:03 +09:00
Timo Kreuzer
4661bc006d [WIN32K] Prevent dereferencing NULL pointer
Initialize a window's ThreadListEntry as an empty list on creation and only remove the window from the list on destruction, when the entry is not an empty list. Previously the window creation could fail before the list entry was initialized and the window would get destroyed after that, resulting in a NULL pointer dereference.
2023-09-21 23:45:31 +03:00
Timo Kreuzer
41c99aa60a [KERNEL32] Fix RaiseException to correctly copy the passed in parameters as ULONG_PTR
Fixes C++ exception handling on x64.
2023-09-21 21:33:47 +03:00
Katayama Hirofumi MZ
4407e0aefa [SHELL32][SDK] Implement SHOpenEffectiveToken and SHGetUserSessionId (#5713)
- Implement SHOpenEffectiveToken and
  SHGetUserSessionId functions.
- Add them to <undocshell.h>.
2023-09-21 22:44:20 +09:00
Hermès Bélusca-Maïto
4bdfee8e8b [NTOS:EX] Initialize ExpResourceTimeoutCount also via the "Session Manager/ResourceTimeoutCount" registry value (#4089)
For more details, see
http://systemmanager.ru/win2k_regestry.en/29859.htm
https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/102985#ResourceTimeoutCount_REG_DWORD
2023-09-21 13:33:28 +02:00
Hermès Bélusca-Maïto
56417bfb93 [RTL] Satisfy the RtlpTimeoutDisable condition when waiting for critical sections (#4089) 2023-09-21 13:33:28 +02:00
Hermès Bélusca-Maïto
dff55c9d33 [NTDLL][RTL] Move RtlpTimeoutDisable definition to the RTL (#4089) 2023-09-21 13:33:27 +02:00
Hermès Bélusca-Maïto
6f89a48349 [NTDLL:LDR] Fix process LoadConfig CS timeout conversion from ms to 100ns units (#4089)
For more details, see
https://forums.codeguru.com/showthread.php?370731-EnterCriticalSection-locking&p=1302399#post1302399
2023-09-21 13:33:26 +02:00
Hermès Bélusca-Maïto
b5c75ce506 [NTOS:EX] Minor header formatting. 2023-09-21 13:33:25 +02:00
Hermès Bélusca-Maïto
903a3dc622 [NTDLL][RTL] Fix english typo in (internal) function name. 2023-09-21 13:33:18 +02:00
Oleg Dubinskiy
f4d7cccd3c [DXGTHK] Export DriverEntry (#5607)
Export driver entry point function DriverEntry from our dxgthk.sys,
following Windows behaviur. It is exported on XP SP3 and Server 2003.
2023-09-21 14:25:21 +03:00
Katayama Hirofumi MZ
539123c62f [SHELL32] SHChangeRegistrationReceive just returns FALSE 2023-09-21 12:09:28 +09:00
Katayama Hirofumi MZ
29e1a41d07 [SHELL32][SDK] Implement SHGetShellStyleHInstance (#5707)
Co-authored-by: Oleg Dubinskiy <oleg.dubinskij30@gmail.com>
This PR supersedes PR #3851.
- Implement SHGetShellStyleHInstance function.
- Add SHGetShellStyleHInstance prototype to <shlobj.h>.
CORE-17707
2023-09-21 09:22:33 +09:00
Katayama Hirofumi MZ
6c55a3aa2a [SHELL32][SHELL32_APITEST][SDK] Implement Int64ToString (#5706)
- Implement Int64ToString and LargeIntegerToString functions.
- Add Int64ToString and LargeIntegerToString prototypes to <shellundoc.h>.
- Add Int64ToString testcase.
- I found a bug in GetNumberFormat.LeadingZero.

http://undoc.airesoft.co.uk/shell32.dll/Int64ToString.php
http://undoc.airesoft.co.uk/shell32.dll/LargeIntegerToString.php
2023-09-21 09:14:40 +09:00
Julio Carchi
4651faeaa2 [BOOTDATA] Add TEMP folder to livecd image (#5683)
Create the folder TEMP in X:\reactos so now we can match current livecd
environment variables TMP and TEMP
can be seen as a part of solving CORE-13041

The use-case for that is:
copying the livecd folder structure directly to writable media as USB sticks or memory cards,
will work then out-of-the-box without any other change.
2023-09-20 18:57:04 +00:00
Jose Carlos Jesus
02883d1c16 [SDK:RTL] RtlpCallQueryRegistryRoutine(): Correctly set SpareData and SpareLength (#5466)
SpareData and SpareLength need to be calculated correctly, as they are used
later in that function as well.
This allows to not overwrite Source UString when writing to Destination UString.

Fixes the problem described in the following JIRA issue, where services could
not start when installing ReactOS in a very-long-named directory.

CORE-18988
2023-09-20 18:06:06 +02:00
Katayama Hirofumi MZ
ebfec38cd1 [ATL][ATL_APITEST] Independent ReactOS ATL (RATL) support (#5657)
This is an attempt to make ReactOS ATL (RATL) independent.
https://github.com/katahiromz/RATL
CORE-19153
2023-09-20 12:02:33 +09:00
Johannes Thoma
490fbfb2c5 [DDK] wsk header: Add WSKAPI to exported functions. (#5687)
Names need decoration (stdcall) in order to be linked.

When using the wsk.h header functions exported therein should
be WSKAPI (which enforces the stdcall calling convention). Linking
would later fail because stdcall functions are named differently in
the object code.
2023-09-19 18:28:19 +03:00
Katayama Hirofumi MZ
8d74bc4b46 [ATL] CImage: Follow-up to #5702 (5da3ed6)
Fix the return value of CImage::Detach. CORE-19008
2023-09-20 00:04:45 +09:00
Katayama Hirofumi MZ
5da3ed638b [ATL] Fix CImage members (#5702)
- Delete m_ds and m_bm members from CImage.
- Add m_nWidth, m_nHeight, m_nPitch, m_nBPP,
  and m_pBits members.
CORE-19008
2023-09-19 22:19:03 +09:00
Katayama Hirofumi MZ
6911fab69a [COMDLG32] Implement CDM_SETDEFEXT (#5704)
- CDM_SETDEFEXT message handling was a 
  missing feature of COMDLG32.
- Make info->defext dynamic allocation.
- On CDM_SETDEFEXT handling, replace
  info->defext data.
CORE-15020
2023-09-19 22:17:48 +09:00
Katayama Hirofumi MZ
3fa90b539e [ATL] Default value of dwInitParam is zero instead of NULL (#5703)
Fix warnings when dwInitParam was omitted at CDialogImpl::Create and/or CDialogImpl::DoModal.
2023-09-19 17:28:33 +09:00
Katayama Hirofumi MZ
ff5ccb5948 [SHLWAPI][SHLWAPI_APITEST] Fix SHGetPerScreenResName (#5701)
Use HORZRES and VERTRES instead of SM_CXFULLSCREEN and SM_CYFULLSCREEN.
CORE-9283
2023-09-19 11:02:59 +09:00
Katayama Hirofumi MZ
08cc45eef9 [ATL_APITEST] atlconv: Disable corner case test of CWAEX 2023-09-19 10:45:46 +09:00
Justin Miller
6bbf09b6a5 [WINESYNC][SDK][DWMAPI] Import DWMAPI from WINE 8-14 (#5594) 2023-09-18 07:30:44 -07:00
Joachim Henze
0eecebb1cc [KBDLAYOUT] Avoid (DLGPROC) cast (#5698)
- Avoid DLGPROC-cast
- Bring header-section closer to our coding guidelines
- Strip inconsistent empty-lines
- Strip useless return at the end of void func

Co-authored-by: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
2023-09-18 11:48:33 +00:00
Katayama Hirofumi MZ
1da71e2519 [SHDOCVW][SHDOCVW_APITEST] Implement MRU List for Shell Bag, Part 6 (#5699)
Follow-up to #5691. Strengthen shdocvw_apitest
testcase. Fix CLSID_MruPidlList class.
CORE-9283
2023-09-18 20:13:29 +09:00
Joachim Henze
1e06be778b [IMAGELISTVIEWER] Avoid (DLGPROC) cast (#5697) 2023-09-18 10:22:59 +00:00
Joachim Henze
8a54e4c9f6 [TEMPLATES] Avoid (DLGPROC) casts
The type-system is supposed to be our friend, not our enemy.
I pushed this without PR, because the buildbots don't
build the templates by default. That requires
configure -DENABLE_ROSAPPS=1 -DENABLE_ROSAPPS_TEMPLATES=1
So no gain in running them. Greta Thunberg will appreciate the saved CPU-cycles to fight global warming.

I verified it locally to compile without warnings on GCC8.4.0dbg x86
and it follows the same pattern as
0.4.15-dev-6626-g 806da4421c
which passed all the bots successfully. Also the x64 ones.
2023-09-17 20:50:04 +02:00
Joachim Henze
806da4421c [CMICONTROL] Avoid (DLGPROC) cast (#5693)
Yes, might slightly improve with x64,
but that wasn't even my main motivation.
(DLGPROC)-casts are nonsense even for x86 actually.
2023-09-17 17:47:23 +00:00
195 changed files with 16233 additions and 1612 deletions

View File

@@ -1,5 +1,4 @@
#ifndef __CALC_H__
#define __CALC_H__
#pragma once
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
@@ -280,5 +279,3 @@ INT_PTR CALLBACK AboutDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);
void ConvExecute(HWND hWnd);
void ConvAdjust(HWND hWnd, int n_cat);
void ConvInit(HWND hWnd);
#endif /* __CALC_H__ */

View File

@@ -268,9 +268,18 @@ LRESULT CCanvasWindow::OnLRButtonDown(BOOL bLeftButton, UINT nMsg, WPARAM wParam
HITTEST hitSelection = SelectionHitTest(pt);
if (hitSelection != HIT_NONE)
{
selectionModel.m_nSelectionBrush = 0; // Selection Brush is OFF
if (bLeftButton)
{
CanvasToImage(pt);
if (::GetKeyState(VK_CONTROL) < 0) // Ctrl+Click is Selection Clone
{
imageModel.SelectionClone();
}
else if (::GetKeyState(VK_SHIFT) < 0) // Shift+Dragging is Selection Brush
{
selectionModel.m_nSelectionBrush = 1; // Selection Brush is ON
}
StartSelectionDrag(hitSelection, pt);
}
else
@@ -750,8 +759,8 @@ LRESULT CCanvasWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
VOID CCanvasWindow::cancelDrawing()
{
selectionModel.ClearColor();
selectionModel.ClearMask();
selectionModel.ClearColorImage();
selectionModel.ClearMaskImage();
m_hitSelection = HIT_NONE;
m_drawing = FALSE;
toolsModel.OnCancelDraw();
@@ -790,6 +799,12 @@ VOID CCanvasWindow::StartSelectionDrag(HITTEST hit, POINT ptImage)
VOID CCanvasWindow::SelectionDragging(POINT ptImage)
{
if (selectionModel.m_nSelectionBrush)
{
imageModel.SelectionClone(selectionModel.m_nSelectionBrush == 1);
selectionModel.m_nSelectionBrush = 2; // Selection Brush is ON and drawn
}
selectionModel.Dragging(m_hitSelection, ptImage);
Invalidate(FALSE);
}

View File

@@ -45,6 +45,7 @@ enum HITTEST // hit
BOOL zoomTo(int newZoom, int mouseX, int mouseY);
BOOL nearlyEqualPoints(INT x0, INT y0, INT x1, INT y1);
void updateStartAndLast(LONG x, LONG y);
void updateLast(LONG x, LONG y);
BOOL OpenMailer(HWND hWnd, LPCWSTR pszPathName);
#define DEG2RAD(degree) (((degree) * M_PI) / 180)
#define RAD2DEG(radian) ((LONG)(((radian) * 180) / M_PI))

View File

@@ -6,7 +6,6 @@
*/
#include "precomp.h"
#include <math.h>
INT g_fileSize = 0;
float g_xDpi = 96;
@@ -339,10 +338,6 @@ HBITMAP Rotate90DegreeBlt(HDC hDC1, INT cx, INT cy, BOOL bRight, BOOL bMono)
return hbm2;
}
#ifndef M_PI
#define M_PI 3.14159265
#endif
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical, BOOL bMono)
{
CWaitCursor waitCursor;

View File

@@ -17,6 +17,7 @@ Line(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, int thickness)
HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, color));
MoveToEx(hdc, x1, y1, NULL);
LineTo(hdc, x2, y2);
SetPixelV(hdc, x2, y2, color);
DeleteObject(SelectObject(hdc, oldPen));
}
@@ -115,7 +116,7 @@ Fill(HDC hdc, LONG x, LONG y, COLORREF color)
void
Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius)
{
LONG b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
LONG b = max(1, max(labs(x2 - x1), labs(y2 - y1)));
HBRUSH hbr = ::CreateSolidBrush(color);
for (LONG a = 0; a <= b; a++)
@@ -132,7 +133,7 @@ Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius)
void
Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius)
{
LONG b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
LONG b = max(1, max(labs(x2 - x1), labs(y2 - y1)));
for (LONG a = 0; a <= b; a++)
{
@@ -164,73 +165,66 @@ Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r)
}
void
Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style)
Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style, INT thickness)
{
HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
LONG a, b;
b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
switch (style)
if (thickness <= 1)
{
case 0:
for(a = 0; a <= b; a++)
Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
(x1 * (b - a) + x2 * a) / b + 4, (y1 * (b - a) + y2 * a) / b + 4);
break;
case 1:
for(a = 0; a <= b; a++)
Ellipse(hdc,
(x1 * (b - a) + x2 * a) / b - 2,
(y1 * (b - a) + y2 * a) / b - 2,
(x1 * (b - a) + x2 * a) / b + 2,
(y1 * (b - a) + y2 * a) / b + 2);
break;
case 2:
MoveToEx(hdc, x1, y1, NULL);
LineTo(hdc, x2, y2);
::SetPixelV(hdc, x2, y2, color);
break;
case 3:
for(a = 0; a <= b; a++)
Rectangle(hdc,
(x1 * (b - a) + x2 * a) / b - 4,
(y1 * (b - a) + y2 * a) / b - 4,
(x1 * (b - a) + x2 * a) / b + 4,
(y1 * (b - a) + y2 * a) / b + 4);
break;
case 4:
for(a = 0; a <= b; a++)
Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 2, (y1 * (b - a) + y2 * a) / b - 2,
(x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
break;
case 5:
for(a = 0; a <= b; a++)
Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
(x1 * (b - a) + x2 * a) / b + 1, (y1 * (b - a) + y2 * a) / b + 1);
break;
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
Line(hdc, x1, y1, x2, y2, color, thickness);
}
else
{
LONG a, b = max(1, max(labs(x2 - x1), labs(y2 - y1)));
switch ((BrushStyle)style)
{
POINT offsTop[] = {{3, -3}, {2, -2}, {0, 0},
{-4, -4}, {-2, -2}, {-1, 0}};
POINT offsBtm[] = {{-3, 3}, {-2, 2}, {-1, 1},
{3, 3}, {2, 2}, {0, 1}};
LONG idx = style - 6;
POINT pts[4];
pts[0].x = x1 + offsTop[idx].x;
pts[0].y = y1 + offsTop[idx].y;
pts[1].x = x1 + offsBtm[idx].x;
pts[1].y = y1 + offsBtm[idx].y;
pts[2].x = x2 + offsBtm[idx].x;
pts[2].y = y2 + offsBtm[idx].y;
pts[3].x = x2 + offsTop[idx].x;
pts[3].y = y2 + offsTop[idx].y;
Polygon(hdc, pts, 4);
break;
case BrushStyleRound:
for (a = 0; a <= b; a++)
{
Ellipse(hdc,
(x1 * (b - a) + x2 * a) / b - (thickness / 2),
(y1 * (b - a) + y2 * a) / b - (thickness / 2),
(x1 * (b - a) + x2 * a) / b + (thickness / 2),
(y1 * (b - a) + y2 * a) / b + (thickness / 2));
}
break;
case BrushStyleSquare:
for (a = 0; a <= b; a++)
{
Rectangle(hdc,
(x1 * (b - a) + x2 * a) / b - (thickness / 2),
(y1 * (b - a) + y2 * a) / b - (thickness / 2),
(x1 * (b - a) + x2 * a) / b + (thickness / 2),
(y1 * (b - a) + y2 * a) / b + (thickness / 2));
}
break;
case BrushStyleForeSlash:
case BrushStyleBackSlash:
{
POINT offsetTop, offsetBottom;
if ((BrushStyle)style == BrushStyleForeSlash)
{
offsetTop = { (thickness - 1) / 2, -(thickness - 1) / 2 };
offsetBottom = { -thickness / 2, thickness / 2 };
}
else
{
offsetTop = { -thickness / 2, -thickness / 2 };
offsetBottom = { (thickness - 1) / 2, (thickness - 1) / 2 };
}
POINT points[4] =
{
{ x1 + offsetTop.x, y1 + offsetTop.y },
{ x1 + offsetBottom.x, y1 + offsetBottom.y },
{ x2 + offsetBottom.x, y2 + offsetBottom.y },
{ x2 + offsetTop.x, y2 + offsetTop.y },
};
Polygon(hdc, points, _countof(points));
break;
}
}
}
DeleteObject(SelectObject(hdc, oldBrush));

View File

@@ -27,7 +27,7 @@ void Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF
void Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r);
void Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style);
void Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style, INT thickness);
void RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2);

View File

@@ -261,27 +261,54 @@ void ImageModel::Clamp(POINT& pt) const
HBITMAP ImageModel::CopyBitmap()
{
// NOTE: An app cannot select a bitmap into more than one device context at a time.
::SelectObject(m_hDrawingDC, m_hbmOld); // De-select
HBITMAP ret = CopyDIBImage(m_hBms[m_currInd]);
m_hbmOld = ::SelectObject(m_hDrawingDC, m_hBms[m_currInd]); // Re-select
HBITMAP hBitmap = LockBitmap();
HBITMAP ret = CopyDIBImage(hBitmap);
UnlockBitmap(hBitmap);
return ret;
}
BOOL ImageModel::IsBlackAndWhite()
{
::SelectObject(m_hDrawingDC, m_hbmOld); // De-select
BOOL bBlackAndWhite = IsBitmapBlackAndWhite(m_hBms[m_currInd]);
m_hbmOld = ::SelectObject(m_hDrawingDC, m_hBms[m_currInd]); // Re-select
HBITMAP hBitmap = LockBitmap();
BOOL bBlackAndWhite = IsBitmapBlackAndWhite(hBitmap);
UnlockBitmap(hBitmap);
return bBlackAndWhite;
}
void ImageModel::PushBlackAndWhite()
{
::SelectObject(m_hDrawingDC, m_hbmOld); // De-select
HBITMAP hNewBitmap = ConvertToBlackAndWhite(m_hBms[m_currInd]);
m_hbmOld = ::SelectObject(m_hDrawingDC, m_hBms[m_currInd]); // Re-select
HBITMAP hBitmap = LockBitmap();
HBITMAP hNewBitmap = ConvertToBlackAndWhite(hBitmap);
UnlockBitmap(hBitmap);
if (hNewBitmap)
PushImageForUndo(hNewBitmap);
}
HBITMAP ImageModel::LockBitmap()
{
// NOTE: An app cannot select a bitmap into more than one device context at a time.
::SelectObject(m_hDrawingDC, m_hbmOld); // De-select
HBITMAP hbmLocked = m_hBms[m_currInd];
m_hBms[m_currInd] = NULL;
return hbmLocked;
}
void ImageModel::UnlockBitmap(HBITMAP hbmLocked)
{
m_hBms[m_currInd] = hbmLocked;
m_hbmOld = ::SelectObject(m_hDrawingDC, hbmLocked); // Re-select
}
void ImageModel::SelectionClone(BOOL bUndoable)
{
if (!selectionModel.m_bShow || ::IsRectEmpty(&selectionModel.m_rc))
return;
if (bUndoable)
PushImageForUndo(CopyBitmap());
selectionModel.DrawSelection(m_hDrawingDC, paletteModel.GetBgColor(),
toolsModel.IsBackgroundTransparent());
NotifyImageChanged();
}

View File

@@ -31,6 +31,8 @@ public:
int GetWidth() const;
int GetHeight() const;
HBITMAP CopyBitmap();
HBITMAP LockBitmap();
void UnlockBitmap(HBITMAP hbmLocked);
void InvertColors();
void FlipHorizontally();
void FlipVertically();
@@ -39,6 +41,7 @@ public:
void NotifyImageChanged();
BOOL IsBlackAndWhite();
void PushBlackAndWhite();
void SelectionClone(BOOL bUndoable = TRUE);
protected:
HDC m_hDrawingDC; // The device context for this class

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^U", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -142,6 +142,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -141,6 +141,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -142,6 +142,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -141,6 +141,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -143,6 +143,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -141,6 +141,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -139,6 +139,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -142,6 +142,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -140,6 +140,10 @@ BEGIN
"^I", IDM_IMAGEINVERTCOLORS
"^E", IDM_IMAGEATTRIBUTES
"N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
VK_ADD, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_SUBTRACT, IDM_CTRL_MINUS, CONTROL, VIRTKEY
VK_OEM_PLUS, IDM_CTRL_PLUS, CONTROL, VIRTKEY
VK_OEM_MINUS, IDM_CTRL_MINUS, CONTROL, VIRTKEY
END
IDD_MIRRORROTATE DIALOGEX 100, 100, 180, 100

View File

@@ -117,9 +117,9 @@ BOOL OpenMailer(HWND hWnd, LPCWSTR pszPathName)
strFileTitle += L".png";
// Save it to the temporary file
HBITMAP hbm = imageModel.CopyBitmap();
BOOL ret = SaveDIBToFile(hbm, g_szMailTempFile, FALSE, Gdiplus::ImageFormatPNG);
::DeleteObject(hbm);
HBITMAP hbmLocked = imageModel.LockBitmap();
BOOL ret = SaveDIBToFile(hbmLocked, g_szMailTempFile, FALSE, Gdiplus::ImageFormatPNG);
imageModel.UnlockBitmap(hbmLocked);
if (!ret)
{
g_szMailTempFile[0] = UNICODE_NULL;

View File

@@ -18,28 +18,28 @@ POINT ToolBase::s_pointStack[256] = { { 0 } };
void
regularize(LONG x0, LONG y0, LONG& x1, LONG& y1)
{
if (abs(x1 - x0) >= abs(y1 - y0))
y1 = y0 + (y1 > y0 ? abs(x1 - x0) : -abs(x1 - x0));
if (labs(x1 - x0) >= labs(y1 - y0))
y1 = y0 + (y1 > y0 ? labs(x1 - x0) : -labs(x1 - x0));
else
x1 = x0 + (x1 > x0 ? abs(y1 - y0) : -abs(y1 - y0));
x1 = x0 + (x1 > x0 ? labs(y1 - y0) : -labs(y1 - y0));
}
void
roundTo8Directions(LONG x0, LONG y0, LONG& x1, LONG& y1)
{
if (abs(x1 - x0) >= abs(y1 - y0))
if (labs(x1 - x0) >= labs(y1 - y0))
{
if (abs(y1 - y0) * 5 < abs(x1 - x0) * 2)
if (labs(y1 - y0) * 5 < labs(x1 - x0) * 2)
y1 = y0;
else
y1 = y0 + (y1 > y0 ? abs(x1 - x0) : -abs(x1 - x0));
y1 = y0 + (y1 > y0 ? labs(x1 - x0) : -labs(x1 - x0));
}
else
{
if (abs(x1 - x0) * 5 < abs(y1 - y0) * 2)
if (labs(x1 - x0) * 5 < labs(y1 - y0) * 2)
x1 = x0;
else
x1 = x0 + (x1 > x0 ? abs(y1 - y0) : -abs(y1 - y0));
x1 = x0 + (x1 > x0 ? labs(y1 - y0) : -labs(y1 - y0));
}
}
@@ -50,18 +50,6 @@ BOOL nearlyEqualPoints(INT x0, INT y0, INT x1, INT y1)
return (abs(x1 - x0) <= cxThreshold) && (abs(y1 - y0) <= cyThreshold);
}
void updateStartAndLast(LONG x, LONG y)
{
g_ptStart.x = g_ptEnd.x = x;
g_ptStart.y = g_ptEnd.y = y;
}
void updateLast(LONG x, LONG y)
{
g_ptEnd.x = x;
g_ptEnd.y = y;
}
void ToolBase::reset()
{
s_pointSP = 0;
@@ -124,10 +112,7 @@ struct FreeSelTool : ToolBase
void OnDrawOverlayOnImage(HDC hdc) override
{
if (!selectionModel.IsLanded())
{
selectionModel.DrawBackgroundPoly(hdc, selectionModel.m_rgbBack);
selectionModel.DrawSelection(hdc, paletteModel.GetBgColor(), toolsModel.IsBackgroundTransparent());
}
if (canvasWindow.m_drawing)
{
@@ -153,7 +138,7 @@ struct FreeSelTool : ToolBase
m_bLeftButton = bLeftButton;
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
if (bLeftButton)
{
@@ -162,9 +147,10 @@ struct FreeSelTool : ToolBase
selectionModel.PushToPtStack(pt);
imageModel.NotifyImageChanged();
}
return TRUE;
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
if (bLeftButton)
{
@@ -186,6 +172,7 @@ struct FreeSelTool : ToolBase
canvasWindow.ClientToScreen(&pt);
mainWindow.TrackPopupMenu(pt, 0);
}
return TRUE;
}
void OnFinishDraw() override
@@ -199,6 +186,11 @@ struct FreeSelTool : ToolBase
selectionModel.HideSelection();
ToolBase::OnCancelDraw();
}
void OnSpecialTweak(BOOL bMinus) override
{
selectionModel.StretchSelection(bMinus);
}
};
// TOOL_RECTSEL
@@ -213,10 +205,7 @@ struct RectSelTool : ToolBase
void OnDrawOverlayOnImage(HDC hdc) override
{
if (!selectionModel.IsLanded())
{
selectionModel.DrawBackgroundRect(hdc, selectionModel.m_rgbBack);
selectionModel.DrawSelection(hdc, paletteModel.GetBgColor(), toolsModel.IsBackgroundTransparent());
}
if (canvasWindow.m_drawing)
{
@@ -241,7 +230,7 @@ struct RectSelTool : ToolBase
m_bLeftButton = bLeftButton;
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
if (bLeftButton)
{
@@ -250,9 +239,10 @@ struct RectSelTool : ToolBase
selectionModel.SetRectFromPoints(g_ptStart, pt);
imageModel.NotifyImageChanged();
}
return TRUE;
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
POINT pt = { x, y };
if (bLeftButton)
@@ -267,6 +257,7 @@ struct RectSelTool : ToolBase
canvasWindow.ClientToScreen(&pt);
mainWindow.TrackPopupMenu(pt, 0);
}
return TRUE;
}
void OnFinishDraw() override
@@ -280,6 +271,11 @@ struct RectSelTool : ToolBase
selectionModel.HideSelection();
ToolBase::OnCancelDraw();
}
void OnSpecialTweak(BOOL bMinus) override
{
selectionModel.StretchSelection(bMinus);
}
};
struct TwoPointDrawTool : ToolBase
@@ -295,26 +291,22 @@ struct TwoPointDrawTool : ToolBase
{
m_bLeftButton = bLeftButton;
m_bDrawing = TRUE;
g_ptStart.x = g_ptEnd.x = x;
g_ptStart.y = g_ptEnd.y = y;
imageModel.NotifyImageChanged();
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
g_ptEnd.x = x;
g_ptEnd.y = y;
imageModel.NotifyImageChanged();
return TRUE;
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
g_ptEnd.x = x;
g_ptEnd.y = y;
imageModel.PushImageForUndo();
OnDrawOverlayOnImage(m_hdc);
m_bDrawing = FALSE;
imageModel.NotifyImageChanged();
return TRUE;
}
void OnFinishDraw() override
@@ -328,10 +320,108 @@ struct TwoPointDrawTool : ToolBase
m_bDrawing = FALSE;
ToolBase::OnCancelDraw();
}
void OnSpecialTweak(BOOL bMinus) override
{
toolsModel.MakeLineThickerOrThinner(bMinus);
}
};
typedef enum DIRECTION
{
NO_DIRECTION = -1,
DIRECTION_HORIZONTAL,
DIRECTION_VERTICAL,
DIRECTION_DIAGONAL_RIGHT_DOWN,
DIRECTION_DIAGONAL_RIGHT_UP,
} DIRECTION;
#define THRESHOULD_DEG 15
static DIRECTION
GetDirection(LONG x0, LONG y0, LONG x1, LONG y1)
{
LONG dx = x1 - x0, dy = y1 - y0;
if (labs(dx) <= 8 && labs(dy) <= 8)
return NO_DIRECTION;
double radian = atan2((double)dy, (double)dx);
if (radian < DEG2RAD(-180 + THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_HORIZONTAL: %ld\n", RAD2DEG(radian));
return DIRECTION_HORIZONTAL;
}
if (radian < DEG2RAD(-90 - THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_DIAGONAL_RIGHT_DOWN: %ld\n", RAD2DEG(radian));
return DIRECTION_DIAGONAL_RIGHT_DOWN;
}
if (radian < DEG2RAD(-90 + THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_VERTICAL: %ld\n", RAD2DEG(radian));
return DIRECTION_VERTICAL;
}
if (radian < DEG2RAD(-THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_DIAGONAL_RIGHT_UP: %ld\n", RAD2DEG(radian));
return DIRECTION_DIAGONAL_RIGHT_UP;
}
if (radian < DEG2RAD(+THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_HORIZONTAL: %ld\n", RAD2DEG(radian));
return DIRECTION_HORIZONTAL;
}
if (radian < DEG2RAD(+90 - THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_DIAGONAL_RIGHT_DOWN: %ld\n", RAD2DEG(radian));
return DIRECTION_DIAGONAL_RIGHT_DOWN;
}
if (radian < DEG2RAD(+90 + THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_VERTICAL: %ld\n", RAD2DEG(radian));
return DIRECTION_VERTICAL;
}
if (radian < DEG2RAD(+180 - THRESHOULD_DEG))
{
ATLTRACE("DIRECTION_DIAGONAL_RIGHT_UP: %ld\n", RAD2DEG(radian));
return DIRECTION_DIAGONAL_RIGHT_UP;
}
ATLTRACE("DIRECTION_HORIZONTAL: %ld\n", RAD2DEG(radian));
return DIRECTION_HORIZONTAL;
}
static void
RestrictDrawDirection(DIRECTION dir, LONG x0, LONG y0, LONG& x1, LONG& y1)
{
switch (dir)
{
case NO_DIRECTION:
default:
return;
case DIRECTION_HORIZONTAL:
y1 = y0;
break;
case DIRECTION_VERTICAL:
x1 = x0;
break;
case DIRECTION_DIAGONAL_RIGHT_DOWN:
y1 = y0 + (x1 - x0);
break;
case DIRECTION_DIAGONAL_RIGHT_UP:
x1 = x0 - (y1 - y0);
break;
}
}
struct SmoothDrawTool : ToolBase
{
DIRECTION m_direction = NO_DIRECTION;
SmoothDrawTool(TOOLTYPE type) : ToolBase(type)
{
}
@@ -340,22 +430,51 @@ struct SmoothDrawTool : ToolBase
void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick) override
{
m_direction = NO_DIRECTION;
imageModel.PushImageForUndo();
g_ptStart.x = g_ptEnd.x = x;
g_ptStart.y = g_ptEnd.y = y;
imageModel.NotifyImageChanged();
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
if (::GetKeyState(VK_SHIFT) < 0) // Shift key is pressed
{
if (m_direction == NO_DIRECTION)
{
m_direction = GetDirection(g_ptStart.x, g_ptStart.y, x, y);
if (m_direction == NO_DIRECTION)
return FALSE;
}
RestrictDrawDirection(m_direction, g_ptStart.x, g_ptStart.y, x, y);
}
else
{
if (m_direction != NO_DIRECTION)
{
m_direction = NO_DIRECTION;
draw(bLeftButton, x, y);
g_ptStart.x = g_ptEnd.x = x;
g_ptStart.y = g_ptEnd.y = y;
return TRUE;
}
}
draw(bLeftButton, x, y);
imageModel.NotifyImageChanged();
return TRUE;
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
if (m_direction != NO_DIRECTION)
{
RestrictDrawDirection(m_direction, g_ptStart.x, g_ptStart.y, x, y);
}
draw(bLeftButton, x, y);
OnFinishDraw();
return TRUE;
}
void OnFinishDraw() override
@@ -365,7 +484,8 @@ struct SmoothDrawTool : ToolBase
void OnCancelDraw() override
{
OnButtonUp(FALSE, 0, 0);
LONG x = 0, y = 0;
OnButtonUp(FALSE, x, y);
imageModel.Undo(TRUE);
ToolBase::OnCancelDraw();
}
@@ -384,8 +504,11 @@ struct RubberTool : SmoothDrawTool
Erase(m_hdc, g_ptEnd.x, g_ptEnd.y, x, y, m_bg, toolsModel.GetRubberRadius());
else
Replace(m_hdc, g_ptEnd.x, g_ptEnd.y, x, y, m_fg, m_bg, toolsModel.GetRubberRadius());
g_ptEnd.x = x;
g_ptEnd.y = y;
}
void OnSpecialTweak(BOOL bMinus) override
{
toolsModel.MakeRubberThickerOrThinner(bMinus);
}
};
@@ -425,15 +548,17 @@ struct ColorTool : ToolBase
paletteModel.SetBgColor(rgbColor);
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
fetchColor(bLeftButton, x, y);
return TRUE;
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
fetchColor(bLeftButton, x, y);
toolsModel.SetActiveTool(toolsModel.GetOldActiveTool());
return TRUE;
}
};
@@ -470,10 +595,12 @@ struct PenTool : SmoothDrawTool
void draw(BOOL bLeftButton, LONG x, LONG y) override
{
COLORREF rgb = bLeftButton ? m_fg : m_bg;
Line(m_hdc, g_ptEnd.x, g_ptEnd.y, x, y, rgb, 1);
::SetPixelV(m_hdc, x, y, rgb);
g_ptEnd.x = x;
g_ptEnd.y = y;
Line(m_hdc, g_ptEnd.x, g_ptEnd.y, x, y, rgb, toolsModel.GetPenWidth());
}
void OnSpecialTweak(BOOL bMinus) override
{
toolsModel.MakePenThickerOrThinner(bMinus);
}
};
@@ -487,9 +614,13 @@ struct BrushTool : SmoothDrawTool
void draw(BOOL bLeftButton, LONG x, LONG y) override
{
COLORREF rgb = bLeftButton ? m_fg : m_bg;
Brush(m_hdc, g_ptEnd.x, g_ptEnd.y, x, y, rgb, toolsModel.GetBrushStyle());
g_ptEnd.x = x;
g_ptEnd.y = y;
Brush(m_hdc, g_ptEnd.x, g_ptEnd.y, x, y, rgb, toolsModel.GetBrushStyle(),
toolsModel.GetBrushWidth());
}
void OnSpecialTweak(BOOL bMinus) override
{
toolsModel.MakeBrushThickerOrThinner(bMinus);
}
};
@@ -505,6 +636,11 @@ struct AirBrushTool : SmoothDrawTool
COLORREF rgb = bLeftButton ? m_fg : m_bg;
Airbrush(m_hdc, x, y, rgb, toolsModel.GetAirBrushWidth());
}
void OnSpecialTweak(BOOL bMinus) override
{
toolsModel.MakeAirBrushThickerOrThinner(bMinus);
}
};
// TOOL_TEXT
@@ -540,9 +676,10 @@ struct TextTool : ToolBase
UpdatePoint(x, y);
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
UpdatePoint(x, y);
return TRUE;
}
void draw(HDC hdc)
@@ -568,7 +705,7 @@ struct TextTool : ToolBase
selectionModel.HideSelection();
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
POINT pt = { x, y };
imageModel.Clamp(pt);
@@ -585,7 +722,7 @@ struct TextTool : ToolBase
if (::IsRectEmpty(&selectionModel.m_rc))
{
quit();
return;
return TRUE;
}
}
@@ -620,6 +757,7 @@ struct TextTool : ToolBase
textEditWindow.ValidateEditRect(&rc);
textEditWindow.ShowWindow(SW_SHOWNOACTIVATE);
textEditWindow.SetFocus();
return TRUE;
}
void OnFinishDraw() override
@@ -710,23 +848,25 @@ struct BezierTool : ToolBase
imageModel.NotifyImageChanged();
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
s_pointStack[s_pointSP].x = x;
s_pointStack[s_pointSP].y = y;
imageModel.NotifyImageChanged();
return TRUE;
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
s_pointStack[s_pointSP].x = x;
s_pointStack[s_pointSP].y = y;
if (s_pointSP >= 3)
{
OnFinishDraw();
return;
return TRUE;
}
imageModel.NotifyImageChanged();
return TRUE;
}
void OnCancelDraw() override
@@ -742,6 +882,11 @@ struct BezierTool : ToolBase
m_bDrawing = FALSE;
ToolBase::OnFinishDraw();
}
void OnSpecialTweak(BOOL bMinus) override
{
toolsModel.MakeLineThickerOrThinner(bMinus);
}
};
// TOOL_RECT
@@ -812,7 +957,7 @@ struct ShapeTool : ToolBase
imageModel.NotifyImageChanged();
}
void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) override
{
if ((s_pointSP > 0) && (GetAsyncKeyState(VK_SHIFT) < 0))
roundTo8Directions(s_pointStack[s_pointSP - 1].x, s_pointStack[s_pointSP - 1].y, x, y);
@@ -821,9 +966,10 @@ struct ShapeTool : ToolBase
s_pointStack[s_pointSP].y = y;
imageModel.NotifyImageChanged();
return TRUE;
}
void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) override
BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) override
{
if ((s_pointSP > 0) && (GetAsyncKeyState(VK_SHIFT) < 0))
roundTo8Directions(s_pointStack[s_pointSP - 1].x, s_pointStack[s_pointSP - 1].y, x, y);
@@ -832,7 +978,7 @@ struct ShapeTool : ToolBase
if (nearlyEqualPoints(x, y, s_pointStack[0].x, s_pointStack[0].y))
{
OnFinishDraw();
return;
return TRUE;
}
else
{
@@ -845,6 +991,7 @@ struct ShapeTool : ToolBase
s_pointSP--;
imageModel.NotifyImageChanged();
return TRUE;
}
void OnCancelDraw() override
@@ -868,6 +1015,11 @@ struct ShapeTool : ToolBase
ToolBase::OnFinishDraw();
}
void OnSpecialTweak(BOOL bMinus) override
{
toolsModel.MakeLineThickerOrThinner(bMinus);
}
};
// TOOL_ELLIPSE

View File

@@ -21,6 +21,8 @@
#include <commdlg.h>
#include <commctrl.h>
#include <stdlib.h>
#define _USE_MATH_DEFINES /* for M_PI */
#include <math.h>
#include <shellapi.h>
#include <htmlhelp.h>
#include "atlimagedx.h"

View File

@@ -102,6 +102,9 @@
#define IDM_UNDERLINE 282
#define IDM_VERTICAL 283
#define IDM_CTRL_PLUS 290
#define IDM_CTRL_MINUS 291
/* the following 16 numbers need to be in order, increasing by 1 */
#define ID_FREESEL 600
#define ID_RECTSEL 601

View File

@@ -28,8 +28,8 @@ SelectionModel::SelectionModel()
SelectionModel::~SelectionModel()
{
ClearColor();
ClearMask();
ClearColorImage();
ClearMaskImage();
ResetPtStack();
}
@@ -85,7 +85,7 @@ void SelectionModel::BuildMaskFromPtStack()
m_rc = m_rcOld = rc;
ClearMask();
ClearMaskImage();
ShiftPtStack(-m_rcOld.left, -m_rcOld.top);
@@ -154,7 +154,7 @@ void SelectionModel::DrawSelection(HDC hDCImage, COLORREF crBg, BOOL bBgTranspar
void SelectionModel::GetSelectionContents(HDC hDCImage)
{
ClearColor();
ClearColorImage();
HDC hMemDC = ::CreateCompatibleDC(NULL);
m_hbmColor = CreateColorDIB(m_rc.Width(), m_rc.Height(), RGB(255, 255, 255));
@@ -174,14 +174,30 @@ BOOL SelectionModel::TakeOff()
if (!IsLanded() || ::IsRectEmpty(&m_rc))
return FALSE;
// The background color is needed for transparency of selection
m_rgbBack = paletteModel.GetBgColor();
// Get the contents of the selection area
GetSelectionContents(imageModel.GetDC());
// RectSel doesn't need the mask image
if (toolsModel.GetActiveTool() == TOOL_RECTSEL)
ClearMask();
ClearMaskImage();
// Save the selection area
m_rcOld = m_rc;
if (toolsModel.GetActiveTool() == TOOL_RECTSEL)
{
imageModel.PushImageForUndo();
selectionModel.DrawBackgroundRect(imageModel.GetDC(), selectionModel.m_rgbBack);
}
else if (toolsModel.GetActiveTool() == TOOL_FREESEL)
{
imageModel.PushImageForUndo();
selectionModel.DrawBackgroundPoly(imageModel.GetDC(), selectionModel.m_rgbBack);
}
imageModel.NotifyImageChanged();
return TRUE;
}
@@ -225,7 +241,7 @@ void SelectionModel::InsertFromHBITMAP(HBITMAP hbmColor, INT x, INT y, HBITMAP h
}
else
{
ClearMask();
ClearMaskImage();
}
NotifyContentChanged();
@@ -458,7 +474,7 @@ void SelectionModel::Dragging(HITTEST hit, POINT pt)
m_ptHit = pt;
}
void SelectionModel::ClearMask()
void SelectionModel::ClearMaskImage()
{
if (m_hbmMask)
{
@@ -467,7 +483,7 @@ void SelectionModel::ClearMask()
}
}
void SelectionModel::ClearColor()
void SelectionModel::ClearColorImage()
{
if (m_hbmColor)
{
@@ -479,8 +495,8 @@ void SelectionModel::ClearColor()
void SelectionModel::HideSelection()
{
m_bShow = m_bContentChanged = FALSE;
ClearColor();
ClearMask();
ClearColorImage();
ClearMaskImage();
::SetRectEmpty(&m_rc);
::SetRectEmpty(&m_rcOld);
imageModel.NotifyImageChanged();
@@ -528,3 +544,38 @@ void SelectionModel::SwapWidthAndHeight()
m_rc.right = m_rc.left + cy;
m_rc.bottom = m_rc.top + cx;
}
HBITMAP SelectionModel::LockBitmap()
{
HBITMAP hbm = m_hbmColor;
m_hbmColor = NULL;
return hbm;
}
void SelectionModel::UnlockBitmap(HBITMAP hbmLocked)
{
m_hbmColor = hbmLocked;
}
void SelectionModel::StretchSelection(BOOL bShrink)
{
if (!m_bShow)
return;
TakeOff();
INT cx = m_rc.Width(), cy = m_rc.Height();
if (bShrink)
m_rc.InflateRect(-cx / 4, -cy / 4);
else
m_rc.InflateRect(+cx / 2, +cy / 2);
// The selection area must exist there
if (m_rc.Width() <= 0)
m_rc.right = m_rc.left + 1;
if (m_rc.Height() <= 0)
m_rc.bottom = m_rc.top + 1;
imageModel.NotifyImageChanged();
}

View File

@@ -23,6 +23,7 @@ public:
CRect m_rc; // in image pixel coordinates
POINT m_ptHit; // in image pixel coordinates
CRect m_rcOld; // in image pixel coordinates
INT m_nSelectionBrush = 0;
SelectionModel();
~SelectionModel();
@@ -40,6 +41,8 @@ public:
void DeleteSelection();
HBITMAP CopyBitmap();
HBITMAP LockBitmap();
void UnlockBitmap(HBITMAP hbmLocked);
void GetSelectionContents(HDC hDCImage);
void DrawFramePoly(HDC hDCImage);
void DrawBackground(HDC hDCImage);
@@ -56,10 +59,12 @@ public:
void InvertSelection();
void Dragging(HITTEST hit, POINT pt);
void ClearMask();
void ClearColor();
void ClearMaskImage();
void ClearColorImage();
void NotifyContentChanged();
void StretchSelection(BOOL bShrink);
private:
SelectionModel(const SelectionModel&);
SelectionModel& operator=(const SelectionModel&);

View File

@@ -20,8 +20,13 @@ CPaintToolBar::ToolBarWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam
{
// We have to detect clicking on toolbar even if no change of pressed button
POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
INT id = (INT)SendMessage(hwnd, TB_HITTEST, 0, (LPARAM)&pt);
::PostMessage(::GetParent(hwnd), WM_TOOLBARHIT, id, 0);
INT index = (INT)::SendMessage(hwnd, TB_HITTEST, 0, (LPARAM)&pt);
if (index >= 0)
{
TBBUTTON button;
if (::SendMessage(hwnd, TB_GETBUTTON, index, (LPARAM)&button))
::PostMessage(::GetParent(hwnd), WM_COMMAND, button.idCommand, 0);
}
}
return ::CallWindowProc(oldWndProc, hwnd, uMsg, wParam, lParam);
}
@@ -112,6 +117,7 @@ static const COMMAND_TO_TOOL CommandToToolMapping[] =
{ ID_ELLIPSE, TOOL_ELLIPSE },
{ ID_RRECT, TOOL_RRECT },
};
static_assert(_countof(CommandToToolMapping) == TOOL_MAX, "Logical error");
LRESULT CToolBox::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
@@ -183,10 +189,3 @@ LRESULT CToolBox::OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHa
::ReleaseCapture();
return 0;
}
LRESULT CToolBox::OnToolBarHit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// See also: CPaintToolBar::ToolBarWndProc
selectionModel.Landing();
return 0;
}

View File

@@ -14,8 +14,6 @@
#define CX_TOOLBAR (TOOLBAR_COLUMNS * CXY_TB_BUTTON)
#define CY_TOOLBAR (TOOLBAR_ROWS * CXY_TB_BUTTON)
#define WM_TOOLBARHIT (WM_APP + 1)
class CPaintToolBar : public CWindow
{
public:
@@ -36,7 +34,6 @@ public:
MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
MESSAGE_HANDLER(WM_TOOLSMODELTOOLCHANGED, OnToolsModelToolChanged)
MESSAGE_HANDLER(WM_TOOLBARHIT, OnToolBarHit)
END_MSG_MAP()
BOOL DoCreate(HWND hwndParent);
@@ -51,5 +48,4 @@ private:
LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnToolsModelToolChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnToolBarHit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
};

View File

@@ -112,23 +112,43 @@ static inline INT getBrushRects(RECT rects[12], LPCRECT prc, LPPOINT ppt = NULL)
return getSplitRects(rects, 3, 4, prc, ppt);
}
struct BrushStyleAndWidth
{
BrushStyle style;
INT width;
};
static const BrushStyleAndWidth c_BrushPresets[] =
{
{ BrushStyleRound, 7 }, { BrushStyleRound, 4 }, { BrushStyleRound, 1 },
{ BrushStyleSquare, 8 }, { BrushStyleSquare, 5 }, { BrushStyleSquare, 2 },
{ BrushStyleForeSlash, 8 }, { BrushStyleForeSlash, 5 }, { BrushStyleForeSlash, 2 },
{ BrushStyleBackSlash, 8 }, { BrushStyleBackSlash, 5 }, { BrushStyleBackSlash, 2 },
};
VOID CToolSettingsWindow::drawBrush(HDC hdc, LPCRECT prc)
{
RECT rects[12];
getBrushRects(rects, prc);
::FillRect(hdc, &rects[toolsModel.GetBrushStyle()], (HBRUSH)(COLOR_HIGHLIGHT + 1));
for (INT i = 0; i < 12; i++)
{
RECT rcItem = rects[i];
INT x = (rcItem.left + rcItem.right) / 2, y = (rcItem.top + rcItem.bottom) / 2;
INT iColor;
if (i == toolsModel.GetBrushStyle())
const BrushStyleAndWidth& data = c_BrushPresets[i];
if (data.width == toolsModel.GetBrushWidth() && data.style == toolsModel.GetBrushStyle())
{
iColor = COLOR_HIGHLIGHTTEXT;
::FillRect(hdc, &rcItem, (HBRUSH)(COLOR_HIGHLIGHT + 1));
}
else
{
iColor = COLOR_WINDOWTEXT;
Brush(hdc, x, y, x, y, ::GetSysColor(iColor), i);
}
Brush(hdc, x, y, x, y, ::GetSysColor(iColor), data.style, data.width);
}
}
@@ -383,7 +403,11 @@ LRESULT CToolSettingsWindow::OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lPar
case TOOL_BRUSH:
iItem = getBrushRects(rects, &rect1, &pt);
if (iItem != -1)
toolsModel.SetBrushStyle(iItem);
{
const BrushStyleAndWidth& data = c_BrushPresets[iItem];
toolsModel.SetBrushStyle(data.style);
toolsModel.SetBrushWidth(data.width);
}
break;
case TOOL_AIRBRUSH:
iItem = getAirBrushRects(rects, &rect1, &pt);

View File

@@ -13,9 +13,10 @@ ToolsModel toolsModel;
ToolsModel::ToolsModel()
{
m_lineWidth = 1;
m_lineWidth = m_penWidth = 1;
m_brushWidth = 4;
m_shapeStyle = 0;
m_brushStyle = 0;
m_brushStyle = BrushStyleRound;
m_oldActiveTool = m_activeTool = TOOL_PEN;
m_airBrushWidth = 5;
m_rubberRadius = 4;
@@ -53,6 +54,61 @@ void ToolsModel::SetLineWidth(int nLineWidth)
{
m_lineWidth = nLineWidth;
NotifyToolSettingsChanged();
imageModel.NotifyImageChanged();
}
INT ToolsModel::GetPenWidth() const
{
return m_penWidth;
}
void ToolsModel::SetPenWidth(INT nPenWidth)
{
m_penWidth = nPenWidth;
NotifyToolSettingsChanged();
imageModel.NotifyImageChanged();
}
INT ToolsModel::GetBrushWidth() const
{
return m_brushWidth;
}
void ToolsModel::SetBrushWidth(INT nBrushWidth)
{
m_brushWidth = nBrushWidth;
NotifyToolSettingsChanged();
imageModel.NotifyImageChanged();
}
void ToolsModel::MakeLineThickerOrThinner(BOOL bThinner)
{
INT thickness = GetLineWidth();
SetLineWidth(bThinner ? max(1, thickness - 1) : (thickness + 1));
}
void ToolsModel::MakePenThickerOrThinner(BOOL bThinner)
{
INT thickness = GetPenWidth();
SetPenWidth(bThinner ? max(1, thickness - 1) : (thickness + 1));
}
void ToolsModel::MakeBrushThickerOrThinner(BOOL bThinner)
{
INT thickness = GetBrushWidth();
SetBrushWidth(bThinner ? max(1, thickness - 1) : (thickness + 1));
}
void ToolsModel::MakeAirBrushThickerOrThinner(BOOL bThinner)
{
INT thickness = GetAirBrushWidth();
SetAirBrushWidth(bThinner ? max(1, thickness - 1) : (thickness + 1));
}
void ToolsModel::MakeRubberThickerOrThinner(BOOL bThinner)
{
INT thickness = GetRubberRadius();
SetRubberRadius(bThinner ? max(1, thickness - 1) : (thickness + 1));
}
int ToolsModel::GetShapeStyle() const
@@ -66,12 +122,12 @@ void ToolsModel::SetShapeStyle(int nShapeStyle)
NotifyToolSettingsChanged();
}
int ToolsModel::GetBrushStyle() const
BrushStyle ToolsModel::GetBrushStyle() const
{
return m_brushStyle;
}
void ToolsModel::SetBrushStyle(int nBrushStyle)
void ToolsModel::SetBrushStyle(BrushStyle nBrushStyle)
{
m_brushStyle = nBrushStyle;
NotifyToolSettingsChanged();
@@ -91,23 +147,38 @@ void ToolsModel::SetActiveTool(TOOLTYPE nActiveTool)
{
OnFinishDraw();
selectionModel.Landing();
m_activeTool = nActiveTool;
switch (m_activeTool)
{
case TOOL_FREESEL:
case TOOL_RECTSEL:
case TOOL_RUBBER:
case TOOL_COLOR:
case TOOL_ZOOM:
case TOOL_TEXT:
// The active tool is not an actually drawing tool
break;
default:
m_oldActiveTool = m_activeTool;
case TOOL_LINE:
case TOOL_BEZIER:
case TOOL_RECT:
case TOOL_SHAPE:
case TOOL_ELLIPSE:
case TOOL_FILL:
case TOOL_AIRBRUSH:
case TOOL_RRECT:
case TOOL_RUBBER:
case TOOL_BRUSH:
case TOOL_PEN:
// The active tool is an actually drawing tool. Save it for TOOL_COLOR to restore
m_oldActiveTool = nActiveTool;
break;
}
m_activeTool = nActiveTool;
m_pToolObject = GetOrCreateTool(m_activeTool);
NotifyToolChanged();
}
@@ -189,7 +260,8 @@ void ToolsModel::NotifyZoomChanged()
void ToolsModel::OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick)
{
m_pToolObject->beginEvent();
updateStartAndLast(x, y);
g_ptStart.x = g_ptEnd.x = x;
g_ptStart.y = g_ptEnd.y = y;
m_pToolObject->OnButtonDown(bLeftButton, x, y, bDoubleClick);
m_pToolObject->endEvent();
}
@@ -197,16 +269,22 @@ void ToolsModel::OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClic
void ToolsModel::OnMouseMove(BOOL bLeftButton, LONG x, LONG y)
{
m_pToolObject->beginEvent();
m_pToolObject->OnMouseMove(bLeftButton, x, y);
updateLast(x, y);
if (m_pToolObject->OnMouseMove(bLeftButton, x, y))
{
g_ptEnd.x = x;
g_ptEnd.y = y;
}
m_pToolObject->endEvent();
}
void ToolsModel::OnButtonUp(BOOL bLeftButton, LONG x, LONG y)
{
m_pToolObject->beginEvent();
m_pToolObject->OnButtonUp(bLeftButton, x, y);
updateLast(x, y);
if (m_pToolObject->OnButtonUp(bLeftButton, x, y))
{
g_ptEnd.x = x;
g_ptEnd.y = y;
}
m_pToolObject->endEvent();
}
@@ -248,3 +326,8 @@ void ToolsModel::selectAll()
OnMouseMove(TRUE, imageModel.GetWidth(), imageModel.GetHeight());
OnButtonUp(TRUE, imageModel.GetWidth(), imageModel.GetHeight());
}
void ToolsModel::SpecialTweak(BOOL bMinus)
{
m_pToolObject->OnSpecialTweak(bMinus);
}

View File

@@ -28,6 +28,14 @@ enum TOOLTYPE
TOOL_MAX = TOOL_RRECT,
};
enum BrushStyle
{
BrushStyleRound,
BrushStyleSquare,
BrushStyleForeSlash,
BrushStyleBackSlash,
};
/* CLASSES **********************************************************/
struct ToolBase
@@ -42,8 +50,8 @@ struct ToolBase
virtual ~ToolBase() { }
virtual void OnButtonDown(BOOL bLeftButton, LONG x, LONG y, BOOL bDoubleClick) { }
virtual void OnMouseMove(BOOL bLeftButton, LONG x, LONG y) { }
virtual void OnButtonUp(BOOL bLeftButton, LONG x, LONG y) { }
virtual BOOL OnMouseMove(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; }
virtual BOOL OnButtonUp(BOOL bLeftButton, LONG& x, LONG& y) { return TRUE; }
virtual void OnCancelDraw();
virtual void OnFinishDraw();
@@ -51,6 +59,8 @@ struct ToolBase
virtual void OnDrawOverlayOnImage(HDC hdc) { }
virtual void OnDrawOverlayOnCanvas(HDC hdc) { }
virtual void OnSpecialTweak(BOOL bMinus) { }
void beginEvent();
void endEvent();
void reset();
@@ -65,8 +75,10 @@ class ToolsModel
{
private:
int m_lineWidth;
INT m_penWidth;
INT m_brushWidth;
int m_shapeStyle;
int m_brushStyle;
BrushStyle m_brushStyle;
TOOLTYPE m_activeTool;
TOOLTYPE m_oldActiveTool;
int m_airBrushWidth;
@@ -83,21 +95,40 @@ public:
~ToolsModel();
BOOL IsSelection() const;
int GetLineWidth() const;
void SetLineWidth(int nLineWidth);
void MakeLineThickerOrThinner(BOOL bThinner);
INT GetPenWidth() const;
void SetPenWidth(INT nPenWidth);
void MakePenThickerOrThinner(BOOL bThinner);
int GetShapeStyle() const;
void SetShapeStyle(int nShapeStyle);
int GetBrushStyle() const;
void SetBrushStyle(int nBrushStyle);
INT GetBrushWidth() const;
void SetBrushWidth(INT nBrushWidth);
void MakeBrushThickerOrThinner(BOOL bThinner);
BrushStyle GetBrushStyle() const;
void SetBrushStyle(BrushStyle nBrushStyle);
TOOLTYPE GetActiveTool() const;
TOOLTYPE GetOldActiveTool() const;
void SetActiveTool(TOOLTYPE nActiveTool);
int GetAirBrushWidth() const;
void SetAirBrushWidth(int nAirBrushWidth);
void MakeAirBrushThickerOrThinner(BOOL bThinner);
int GetRubberRadius() const;
void SetRubberRadius(int nRubberRadius);
void MakeRubberThickerOrThinner(BOOL bThinner);
BOOL IsBackgroundTransparent() const;
void SetBackgroundTransparent(BOOL bTransparent);
int GetZoom() const;
void SetZoom(int nZoom);
@@ -115,6 +146,8 @@ public:
void NotifyToolChanged();
void NotifyToolSettingsChanged();
void NotifyZoomChanged();
void SpecialTweak(BOOL bMinus);
};
extern ToolsModel toolsModel;

View File

@@ -77,6 +77,7 @@ void CMainWindow::alignChildrenToMainWindow()
RECT clientRect, rc;
GetClientRect(&clientRect);
RECT rcSpace = clientRect;
const UINT uFlags = (SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION | SWP_NOCOPYBITS);
if (::IsWindowVisible(g_hStatusBar))
{
@@ -93,7 +94,7 @@ void CMainWindow::alignChildrenToMainWindow()
hDWP = ::DeferWindowPos(hDWP, toolBoxContainer, NULL,
rcSpace.right - CX_TOOLBAR, rcSpace.top,
CX_TOOLBAR, rcSpace.bottom - rcSpace.top,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
uFlags);
rcSpace.right -= CX_TOOLBAR;
}
else
@@ -101,7 +102,7 @@ void CMainWindow::alignChildrenToMainWindow()
hDWP = ::DeferWindowPos(hDWP, toolBoxContainer, NULL,
rcSpace.left, rcSpace.top,
CX_TOOLBAR, rcSpace.bottom - rcSpace.top,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
uFlags);
rcSpace.left += CX_TOOLBAR;
}
}
@@ -113,7 +114,7 @@ void CMainWindow::alignChildrenToMainWindow()
hDWP = ::DeferWindowPos(hDWP, paletteWindow, NULL,
rcSpace.left, rcSpace.bottom - CY_PALETTE,
rcSpace.right - rcSpace.left, CY_PALETTE,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
uFlags);
rcSpace.bottom -= CY_PALETTE;
}
else
@@ -121,7 +122,7 @@ void CMainWindow::alignChildrenToMainWindow()
hDWP = ::DeferWindowPos(hDWP, paletteWindow, NULL,
rcSpace.left, rcSpace.top,
rcSpace.right - rcSpace.left, CY_PALETTE,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
uFlags);
rcSpace.top += CY_PALETTE;
}
}
@@ -131,7 +132,7 @@ void CMainWindow::alignChildrenToMainWindow()
hDWP = ::DeferWindowPos(hDWP, canvasWindow, NULL,
rcSpace.left, rcSpace.top,
rcSpace.right - rcSpace.left, rcSpace.bottom - rcSpace.top,
SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
uFlags);
}
::EndDeferWindowPos(hDWP);
@@ -703,6 +704,16 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
if (toolsModel.IsSelection())
{
canvasWindow.cancelDrawing();
if (toolsModel.GetActiveTool() == TOOL_FREESEL ||
toolsModel.GetActiveTool() == TOOL_RECTSEL)
{
imageModel.Undo();
if (selectionModel.m_nSelectionBrush == 2) // Selection Brush is drawn
{
imageModel.Undo();
selectionModel.m_nSelectionBrush = 0;
}
}
break;
}
}
@@ -740,13 +751,13 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
selectionModel.TakeOff();
{
HBITMAP hbm = selectionModel.CopyBitmap();
if (hbm)
HBITMAP hbmLocked = selectionModel.LockBitmap();
if (hbmLocked)
{
HGLOBAL hGlobal = BitmapToClipboardDIB(hbm);
HGLOBAL hGlobal = BitmapToClipboardDIB(hbmLocked);
if (hGlobal)
::SetClipboardData(CF_DIB, hGlobal);
::DeleteObject(hbm);
selectionModel.UnlockBitmap(hbmLocked);
}
}
@@ -864,10 +875,9 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
WCHAR szFileName[MAX_LONG_PATH] = L"*.png";
if (GetSaveFileName(szFileName, _countof(szFileName)))
{
HBITMAP hbm = selectionModel.CopyBitmap();
if (!SaveDIBToFile(hbm, szFileName, FALSE))
ShowError(IDS_SAVEERROR, szFileName);
::DeleteObject(hbm);
HBITMAP hbmLocked = selectionModel.LockBitmap();
SaveDIBToFile(hbmLocked, szFileName, FALSE);
selectionModel.UnlockBitmap(hbmLocked);
}
break;
}
@@ -879,8 +889,6 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
HBITMAP hbmNew = DoLoadImageFile(m_hWnd, szFileName, FALSE);
if (hbmNew)
InsertSelectionFromHBITMAP(hbmNew, m_hWnd);
else
ShowError(IDS_LOADERRORTEXT, szFileName);
}
break;
}
@@ -1007,7 +1015,6 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
imageModel.PushImageForUndo(selectionModel.CopyBitmap());
selectionModel.HideSelection();
break;
case IDM_VIEWTOOLBOX:
registrySettings.ShowToolBox = !toolBoxContainer.IsWindowVisible();
toolBoxContainer.ShowWindow(registrySettings.ShowToolBox ? SW_SHOWNOACTIVATE : SW_HIDE);
@@ -1072,6 +1079,13 @@ LRESULT CMainWindow::OnCommand(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
fullscreenWindow.DoCreate();
fullscreenWindow.ShowWindow(SW_SHOWMAXIMIZED);
break;
case IDM_CTRL_PLUS:
toolsModel.SpecialTweak(FALSE);
break;
case IDM_CTRL_MINUS:
toolsModel.SpecialTweak(TRUE);
break;
}
return 0;
}

View File

@@ -11,7 +11,7 @@ void OnAbout(void)
{
WCHAR szTaskmgr[128];
LoadStringW(hInst, IDS_APP_TITLE, szTaskmgr, sizeof(szTaskmgr)/sizeof(WCHAR));
LoadStringW(hInst, IDS_APP_TITLE, szTaskmgr, _countof(szTaskmgr));
ShellAboutW(hMainWnd, szTaskmgr, NULL,
LoadIconW(hInst, MAKEINTRESOURCEW(IDI_TASKMANAGER)));
}

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Applications Page.
* PURPOSE: Applications Page
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
* Copyright 2005 Klemens Friedl <frik85@reactos.at>
* Copyright 2021 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
@@ -97,7 +97,6 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
switch (message) {
case WM_INITDIALOG:
/* Save the width and height */
GetClientRect(hDlg, &rc);
nApplicationPageWidth = rc.right;
@@ -151,7 +150,6 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
break;
case WM_COMMAND:
/* Handle the button clicks */
switch (LOWORD(wParam))
{
@@ -217,17 +215,16 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
if (wParam == VK_DELETE)
ProcessPage_OnEndProcess();
break;
}
return 0;
return 0;
}
void RefreshApplicationPage(void)
{
#ifdef RUN_APPS_PAGE
/* Signal the event so that our refresh thread */
/* will wake up and refresh the application page */
/* Signal the event so that our refresh thread
* will wake up and refresh the application page */
PostThreadMessage(dwApplicationThread, WM_TIMER, 0, 0);
#endif
}
@@ -267,11 +264,7 @@ DWORD WINAPI ApplicationPageRefreshThread(void *lpParameter)
if (msg.message == WM_TIMER)
{
/*
* FIXME:
*
* Should this be EnumDesktopWindows() instead?
*/
// FIXME: Should this be EnumDesktopWindows() instead?
noApps = TRUE;
EnumWindows(EnumWindowsProc, 0);
if (noApps)
@@ -450,9 +443,8 @@ void AddOrUpdateHwnd(HWND hWnd, WCHAR *szTitle, HICON hIcon, BOOL bHung)
InvalidateRect(hApplicationPageListCtrl, NULL, 0);
}
}
/* It is not already in the list so add it */
else
{
{ // It is not already in the list so add it
pAPLI = (LPAPPLICATION_PAGE_LIST_ITEM)HeapAlloc(GetProcessHeap(), 0, sizeof(APPLICATION_PAGE_LIST_ITEM));
pAPLI->hWnd = hWnd;
@@ -478,25 +470,16 @@ void AddOrUpdateHwnd(HWND hWnd, WCHAR *szTitle, HICON hIcon, BOOL bHung)
ListView_SetItemState(hApplicationPageListCtrl, 0, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);
bApplicationPageSelectionMade = TRUE;
}
/*
else
{
bApplicationPageSelectionMade = FALSE;
}
*/
}
void ApplicationPageUpdate(void)
{
/* Enable or disable the "End Task" & "Switch To" buttons */
if (ListView_GetSelectedCount(hApplicationPageListCtrl))
{
EnableWindow(hApplicationPageEndTaskButton, TRUE);
}
else
{
EnableWindow(hApplicationPageEndTaskButton, FALSE);
}
/* Enable "Switch To" button only if only one app is selected */
EnableWindow(hApplicationPageSwitchToButton, (ListView_GetSelectedCount(hApplicationPageListCtrl) == 1));
@@ -510,9 +493,8 @@ void ApplicationPageUpdate(void)
hMenu = GetMenu(hMainWnd);
hWindowsMenu = GetSubMenu(hMenu, 3);
/* Only one item selected */
if (ListView_GetSelectedCount(hApplicationPageListCtrl) == 1)
{
{ // Only one item selected
EnableMenuItem(hWindowsMenu, ID_WINDOWS_TILEHORIZONTALLY, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_TILEVERTICALLY, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_MINIMIZE, MF_BYCOMMAND|MF_ENABLED);
@@ -520,9 +502,8 @@ void ApplicationPageUpdate(void)
EnableMenuItem(hWindowsMenu, ID_WINDOWS_CASCADE, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_BRINGTOFRONT, MF_BYCOMMAND|MF_ENABLED);
}
/* More than one item selected */
else if (ListView_GetSelectedCount(hApplicationPageListCtrl) > 1)
{
{ // More than one item selected
EnableMenuItem(hWindowsMenu, ID_WINDOWS_TILEHORIZONTALLY, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_TILEVERTICALLY, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_MINIMIZE, MF_BYCOMMAND|MF_ENABLED);
@@ -530,9 +511,8 @@ void ApplicationPageUpdate(void)
EnableMenuItem(hWindowsMenu, ID_WINDOWS_CASCADE, MF_BYCOMMAND|MF_ENABLED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_BRINGTOFRONT, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
}
/* No items selected */
else
{
{ // No items selected
EnableMenuItem(hWindowsMenu, ID_WINDOWS_TILEHORIZONTALLY, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_TILEVERTICALLY, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
EnableMenuItem(hWindowsMenu, ID_WINDOWS_MINIMIZE, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
@@ -564,52 +544,35 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
/* Update the item text */
if (pnmdi->item.iSubItem == 0)
{
wcsncpy(pnmdi->item.pszText, pAPLI->szTitle, pnmdi->item.cchTextMax);
}
/* Update the item status */
else if (pnmdi->item.iSubItem == 1)
{
if (pAPLI->bHung)
{
LoadStringW( GetModuleHandleW(NULL), IDS_NOT_RESPONDING , szMsg, sizeof(szMsg) / sizeof(szMsg[0]));
}
LoadStringW(GetModuleHandleW(NULL), IDS_NOT_RESPONDING , szMsg, _countof(szMsg));
else
{
LoadStringW( GetModuleHandleW(NULL), IDS_RUNNING, (LPWSTR) szMsg, sizeof(szMsg) / sizeof(szMsg[0]));
}
LoadStringW(GetModuleHandleW(NULL), IDS_RUNNING, (LPWSTR) szMsg, _countof(szMsg));
wcsncpy(pnmdi->item.pszText, szMsg, pnmdi->item.cchTextMax);
}
break;
case NM_RCLICK:
if (ListView_GetSelectedCount(hApplicationPageListCtrl) < 1)
{
ApplicationPageShowContextMenu1();
}
else
{
ApplicationPageShowContextMenu2();
}
break;
case NM_DBLCLK:
ApplicationPage_OnSwitchTo();
break;
case LVN_KEYDOWN:
if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE)
ApplicationPage_OnEndTask();
break;
}
}
else if (pnmh->hwndFrom == ListView_GetHeader(hApplicationPageListCtrl))
@@ -617,27 +580,18 @@ void ApplicationPageOnNotify(WPARAM wParam, LPARAM lParam)
switch (pnmh->code)
{
case NM_RCLICK:
if (ListView_GetSelectedCount(hApplicationPageListCtrl) < 1)
{
ApplicationPageShowContextMenu1();
}
else
{
ApplicationPageShowContextMenu2();
}
break;
case HDN_ITEMCLICK:
(void)ListView_SortItems(hApplicationPageListCtrl, ApplicationPageCompareFunc, 0);
bSortAscending = !bSortAscending;
break;
}
}
}
void ApplicationPageShowContextMenu1(void)
@@ -929,9 +883,7 @@ void ApplicationPage_OnGotoProcess(void)
i,
LVIS_SELECTED | LVIS_FOCUSED,
LVIS_SELECTED | LVIS_FOCUSED);
(void)ListView_EnsureVisible(hProcessPageListCtrl,
i,
FALSE);
(void)ListView_EnsureVisible(hProcessPageListCtrl, i, FALSE);
}
}
}

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Applications Page.
* PURPOSE: Applications Page
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
* Copyright 2005 Klemens Friedl <frik85@reactos.at>
* Copyright 2021 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
@@ -9,12 +9,11 @@
#pragma once
extern HWND hApplicationPage; /* Application List Property Page */
extern HWND hApplicationPageListCtrl; /* Application ListCtrl Window */
extern HWND hApplicationPageEndTaskButton; /* Application End Task button */
extern HWND hApplicationPageSwitchToButton; /* Application Switch To button */
extern HWND hApplicationPageNewTaskButton; /* Application New Task button */
extern HWND hApplicationPage; /* Application List Property Page */
extern HWND hApplicationPageListCtrl; /* Application ListCtrl Window */
extern HWND hApplicationPageEndTaskButton; /* Application End Task button */
extern HWND hApplicationPageSwitchToButton; /* Application Switch To button */
extern HWND hApplicationPageNewTaskButton; /* Application New Task button */
INT_PTR CALLBACK ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
void RefreshApplicationPage(void);

View File

@@ -42,8 +42,8 @@ const PresetColumnEntry ColumnPresets[COLUMN_NMAX] = {
DECLARE_COLUMN_PRESET(COMMANDLINE, 450, FALSE)
};
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
INT_PTR CALLBACK ColumnsDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
static int InsertColumn(int nCol, LPCWSTR lpszColumnHeading, int nFormat, int nWidth, int nSubItem);
INT_PTR CALLBACK ColumnsDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
void AddColumns(void)
{
@@ -53,13 +53,13 @@ void AddColumns(void)
for (n=0; n<COLUMN_NMAX; n++) {
if (TaskManagerSettings.Columns[n]) {
LoadStringW(hInst, ColumnPresets[n].dwIdsName, szTemp, sizeof(szTemp)/sizeof(WCHAR));
LoadStringW(hInst, ColumnPresets[n].dwIdsName, szTemp, _countof(szTemp));
InsertColumn(n, szTemp, LVCFMT_LEFT, TaskManagerSettings.ColumnSizeArray[n], -1);
}
}
size = SendMessageW(hProcessPageHeaderCtrl, HDM_GETITEMCOUNT, 0, 0);
SendMessageW(hProcessPageHeaderCtrl, HDM_SETORDERARRAY, (WPARAM) size, (LPARAM) &TaskManagerSettings.ColumnOrderArray);
SendMessageW(hProcessPageHeaderCtrl, HDM_SETORDERARRAY, (WPARAM)size, (LPARAM)&TaskManagerSettings.ColumnOrderArray);
UpdateColumnDataHints();
}
@@ -104,7 +104,7 @@ void SaveColumnSettings(void)
/* Get header order */
size = SendMessageW(hProcessPageHeaderCtrl, HDM_GETITEMCOUNT, 0, 0);
SendMessageW(hProcessPageHeaderCtrl, HDM_GETORDERARRAY, (WPARAM) size, (LPARAM) &TaskManagerSettings.ColumnOrderArray);
SendMessageW(hProcessPageHeaderCtrl, HDM_GETORDERARRAY, (WPARAM)size, (LPARAM)&TaskManagerSettings.ColumnOrderArray);
/* Get visible columns */
for (i = 0; i < SendMessageW(hProcessPageHeaderCtrl, HDM_GETITEMCOUNT, 0, 0); i++) {
@@ -117,7 +117,7 @@ void SaveColumnSettings(void)
SendMessageW(hProcessPageHeaderCtrl, HDM_GETITEM, i, (LPARAM) &hditem);
for (n = 0; n < COLUMN_NMAX; n++) {
LoadStringW(hInst, ColumnPresets[n].dwIdsName, szTemp, sizeof(szTemp)/sizeof(WCHAR));
LoadStringW(hInst, ColumnPresets[n].dwIdsName, szTemp, _countof(szTemp));
if (_wcsicmp(text, szTemp) == 0)
{
TaskManagerSettings.Columns[n] = TRUE;
@@ -155,7 +155,6 @@ ColumnsDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
switch (message)
{
case WM_INITDIALOG:
for (i=0; i<COLUMN_NMAX; i++) {
if (TaskManagerSettings.Columns[i])
CheckDlgButton(hDlg, ColumnPresets[i].dwIdcCtrl, BST_CHECKED);
@@ -163,7 +162,6 @@ ColumnsDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
@@ -207,7 +205,7 @@ void UpdateColumnDataHints(void)
SendMessageW(hProcessPageHeaderCtrl, HDM_GETITEM, Index, (LPARAM) &hditem);
for (i=0; i<COLUMN_NMAX; i++) {
LoadStringW(hInst, ColumnPresets[i].dwIdsName, szTemp, sizeof(szTemp)/sizeof(WCHAR));
LoadStringW(hInst, ColumnPresets[i].dwIdsName, szTemp, _countof(szTemp));
if (_wcsicmp(text, szTemp) == 0)
ColumnDataHints[Index] = i;
}

View File

@@ -63,7 +63,7 @@ typedef struct {
} PresetColumnEntry;
extern UINT ColumnDataHints[COLUMN_NMAX];
extern UINT ColumnDataHints[COLUMN_NMAX];
extern const PresetColumnEntry ColumnPresets[COLUMN_NMAX];
#define Column_ImageName Columns[COLUMN_IMAGENAME]

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Process Debugging.
* PURPOSE: Process Debugging
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
* Copyright 2005 Klemens Friedl <frik85@reactos.at>
*/
@@ -27,21 +27,21 @@ void ProcessPage_OnDebug(void)
if (dwProcessId == 0)
return;
LoadStringW(hInst, IDS_MSG_WARNINGDEBUG, szTemp, ARRAYSIZE(szTemp));
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTempA, ARRAYSIZE(szTempA));
LoadStringW(hInst, IDS_MSG_WARNINGDEBUG, szTemp, _countof(szTemp));
LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTempA, _countof(szTempA));
if (MessageBoxW(hMainWnd, szTemp, szTempA, MB_YESNO | MB_ICONWARNING) != IDYES)
{
GetLastErrorText(strErrorText, ARRAYSIZE(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, ARRAYSIZE(szTemp));
GetLastErrorText(strErrorText, _countof(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, _countof(szTemp));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK | MB_ICONSTOP);
return;
}
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug", 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS)
{
GetLastErrorText(strErrorText, ARRAYSIZE(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, ARRAYSIZE(szTemp));
GetLastErrorText(strErrorText, _countof(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, _countof(szTemp));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK | MB_ICONSTOP);
return;
}
@@ -49,8 +49,8 @@ void ProcessPage_OnDebug(void)
dwDebuggerSize = sizeof(strDebugger);
if (RegQueryValueExW(hKey, L"Debugger", NULL, NULL, (LPBYTE)strDebugger, &dwDebuggerSize) != ERROR_SUCCESS)
{
GetLastErrorText(strErrorText, ARRAYSIZE(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, ARRAYSIZE(szTemp));
GetLastErrorText(strErrorText, _countof(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, _countof(szTemp));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK | MB_ICONSTOP);
RegCloseKey(hKey);
return;
@@ -61,8 +61,8 @@ void ProcessPage_OnDebug(void)
hDebugEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
if (!hDebugEvent)
{
GetLastErrorText(strErrorText, ARRAYSIZE(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, ARRAYSIZE(szTemp));
GetLastErrorText(strErrorText, _countof(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, _countof(szTemp));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK | MB_ICONSTOP);
return;
}
@@ -74,8 +74,8 @@ void ProcessPage_OnDebug(void)
si.cb = sizeof(si);
if (!CreateProcessW(NULL, strDebugPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
GetLastErrorText(strErrorText, ARRAYSIZE(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, ARRAYSIZE(szTemp));
GetLastErrorText(strErrorText, _countof(strErrorText));
LoadStringW(hInst, IDS_MSG_UNABLEDEBUGPROCESS, szTemp, _countof(szTemp));
MessageBoxW(hMainWnd, strErrorText, szTemp, MB_OK | MB_ICONSTOP);
}
else

View File

@@ -28,7 +28,7 @@ Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
return TRUE;
/*
* Filter out mouse & keyboard messages
* Filter out mouse & keyboard messages
*/
/* case WM_APPCOMMAND: */
case WM_CAPTURECHANGED:
@@ -84,7 +84,6 @@ Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
WindowId = GetWindowLongPtrW(hWnd, GWLP_ID);
@@ -103,13 +102,11 @@ Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
}
EndPaint(hWnd, &ps);
return 0;
}
/*
* We pass on all non-handled messages
* Pass on all non-handled messages
*/
return CallWindowProcW(OldGraphWndProc, hWnd, message, wParam, lParam);
}
@@ -163,8 +160,7 @@ void Graph_DrawCpuUsageGraph(HDC hDC, HWND hWnd)
SetTextColor(hDC, crPrevForeground);
/*
* Now we have to draw the graph
* So first find out how many bars we can fit
* Draw the graph. So first find out how many bars we can fit
*/
nBars = ((rcClient.bottom - rcClient.top) - 25) / 3;
nBarsUsed = (nBars * CpuUsage) / 100;
@@ -185,7 +181,7 @@ void Graph_DrawCpuUsageGraph(HDC hDC, HWND hWnd)
}
/*
* Now draw the bar graph
* Draw the bar graph
*/
rcBarLeft.left = ((rcClient.right - rcClient.left) - 33) / 2;
rcBarLeft.right = rcBarLeft.left + 16;
@@ -266,7 +262,6 @@ void Graph_DrawCpuUsageGraph(HDC hDC, HWND hWnd)
for (i=0; i<nBarsUsedKernel; i++)
{
FillSolidRect(hDC, &rcBarLeft, RED);
FillSolidRect(hDC, &rcBarRight, RED);
@@ -275,7 +270,6 @@ void Graph_DrawCpuUsageGraph(HDC hDC, HWND hWnd)
rcBarRight.top -=3;
rcBarRight.bottom -=3;
}
SelectObject(hDC, hOldFont);
@@ -331,8 +325,7 @@ void Graph_DrawMemUsageGraph(HDC hDC, HWND hWnd)
SetTextColor(hDC, crPrevForeground);
/*
* Now we have to draw the graph
* So first find out how many bars we can fit
* Draw the graph. So first find out how many bars we can fit
*/
nBars = ((rcClient.bottom - rcClient.top) - 25) / 3;
if (CommitChargeLimit)
@@ -346,7 +339,7 @@ void Graph_DrawMemUsageGraph(HDC hDC, HWND hWnd)
if (nBarsFree > nBars) nBarsFree = nBars;
/*
* Now draw the bar graph
* Draw the bar graph
*/
rcBarLeft.left = ((rcClient.right - rcClient.left) - 33) / 2;
rcBarLeft.right = rcBarLeft.left + 16;
@@ -414,17 +407,16 @@ void Graph_DrawMemUsageHistoryGraph(HDC hDC, HWND hWnd)
//CommitChargeLimit = (ULONGLONG)PerfDataGetCommitChargeLimitK();
/*
* Draw the graph background
*
* Draw the horizontal bars
* Draw the graph background and horizontal bars
*/
for (i=0; i<rcClient.bottom; i++)
{
if ((i % 11) == 0)
{
/* FillSolidRect2(hDC, 0, i, rcClient.right, 1, DARK_GREEN); */
//FillSolidRect2(hDC, 0, i, rcClient.right, 1, DARK_GREEN);
}
}
/*
* Draw the vertical bars
*/
@@ -432,7 +424,7 @@ void Graph_DrawMemUsageHistoryGraph(HDC hDC, HWND hWnd)
{
if ((i % 11) == 0)
{
/* FillSolidRect2(hDC, i - offset, 0, 1, rcClient.bottom, DARK_GREEN); */
//FillSolidRect2(hDC, i - offset, 0, 1, rcClient.bottom, DARK_GREEN);
}
}

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Performance Graph Meters.
* PURPOSE: Performance Graph Meters
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
*/
@@ -12,14 +12,14 @@ extern "C" {
#endif
#define BRIGHT_GREEN RGB(0, 255, 0)
#define MEDIUM_GREEN RGB(0, 190, 0)
#define DARK_GREEN RGB(0, 130, 0)
#define RED RGB(255, 0, 0)
#define BRIGHT_GREEN RGB(0, 255, 0)
#define MEDIUM_GREEN RGB(0, 190, 0)
#define DARK_GREEN RGB(0, 130, 0)
#define RED RGB(255, 0, 0)
extern WNDPROC OldGraphWndProc;
extern WNDPROC OldGraphWndProc;
INT_PTR CALLBACK Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
INT_PTR CALLBACK Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
#ifdef __cplusplus

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "Установяване на с&родство...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&Прекратяване на задачата", IDC_ENDPROCESS, 144, 203, 100, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Дневник на паметта", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Обезбубяващи канали"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Затваряне", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Процесорно сродство"
@@ -249,7 +238,7 @@ FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "Добре", IDOK, 120, 133, 50, 14
PUSHBUTTON "Отказ", IDCANCEL, 174, 133, 50, 14
LTEXT "Настройката на сродството на процесора указва на кои ЦПУта е разрешено изпълнението да действието.", IDC_STATIC,5,5,220,16
LTEXT "Настройката на сродството на процесора указва на кои ЦПУта е разрешено изпълнението да действието.", IDC_STATIC,5,5,220,16
CONTROL "ЦПУ 0", IDC_CPU0, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 11, 28, 37, 10
CONTROL "ЦПУ 1", IDC_CPU1, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 11, 41, 37, 10
CONTROL "ЦПУ 2", IDC_CPU2, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 11, 54, 37, 10

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "Nastavit &afinitu...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&Ukončit proces", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Historie využití paměti", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Kanály ladění"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Zavřít", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Afinita procesoru"

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "Sæt &Affinitet...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&Afslut Proces", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Hukommelses Forbrug Historik", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug Kanaler"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Luk", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processor Affinitet"

View File

@@ -1,4 +1,4 @@
/* Deutsch resource file by Klemens Friedl */
/* TRANSLATOR: Klemens Friedl */
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
@@ -179,13 +179,12 @@ BEGIN
PUSHBUTTON "&Prozess beenden", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
BEGIN
GROUPBOX "CPU-Auslastung", IDC_CPU_USAGE_FRAME, 5, 5, 67, 54, 0, WS_EX_TRANSPARENT
GROUPBOX "Auslagerungsdatei", IDC_MEM_USAGE_FRAME, 5, 63, 67, 54, BS_LEFTTEXT, WS_EX_TRANSPARENT // 5, 63, 60, 54
GROUPBOX "CPU-Last", IDC_CPU_USAGE_FRAME, 5, 5, 60, 54, 0, WS_EX_TRANSPARENT
GROUPBOX "Speicher-Last", IDC_MEM_USAGE_FRAME, 5, 63, 60, 54, BS_LEFTTEXT, WS_EX_TRANSPARENT
GROUPBOX "Insgesamt", IDC_TOTALS_FRAME, 5, 122, 117, 39, 0, WS_EX_TRANSPARENT
GROUPBOX "Zugesicherter Speicher (KB)", IDC_COMMIT_CHARGE_FRAME, 5, 166, 117, 39, 0, WS_EX_TRANSPARENT
GROUPBOX "Physikalischer Speicher (KB)", IDC_PHYSICAL_MEMORY_FRAME, 126, 122, 117, 39, 0, WS_EX_TRANSPARENT
@@ -199,49 +198,39 @@ BEGIN
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_TOTALS_PROCESS_COUNT, 71, 149, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
LTEXT "Insgesamt", IDS_COMMIT_CHARGE_TOTAL, 12, 175, 50, 8 // 27
LTEXT "Grenzwert", IDS_COMMIT_CHARGE_LIMIT, 12, 184, 50, 8, NOT WS_BORDER // 15
LTEXT "Maximalwert", IDS_COMMIT_CHARGE_PEAK, 12, 193, 50, 8 // 34
LTEXT "Insgesamt", IDS_COMMIT_CHARGE_TOTAL, 12, 175, 50, 8
LTEXT "Grenzwert", IDS_COMMIT_CHARGE_LIMIT, 12, 184, 50, 8, NOT WS_BORDER
LTEXT "Maximalwert", IDS_COMMIT_CHARGE_PEAK, 12, 193, 50, 8
EDITTEXT IDC_COMMIT_CHARGE_TOTAL, 71, 174, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_COMMIT_CHARGE_LIMIT, 71, 184, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_COMMIT_CHARGE_PEAK, 71, 193, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
LTEXT "Insgesamt", IDS_PHYSICAL_MEMORY_TOTAL, 133, 131, 50, 8 // 27
LTEXT "Verfügbar", IDS_PHYSICAL_MEMORY_AVAILABLE, 133, 140, 50, 8 // 30
LTEXT "Systemcache", IDS_PHYSICAL_MEMORY_SYSTEM_CACHE, 133, 149, 46, 8 // 46
LTEXT "Insgesamt", IDS_PHYSICAL_MEMORY_TOTAL, 133, 131, 50, 8
LTEXT "Verfügbar", IDS_PHYSICAL_MEMORY_AVAILABLE, 133, 140, 50, 8
LTEXT "Systemcache", IDS_PHYSICAL_MEMORY_SYSTEM_CACHE, 133, 149, 46, 8
EDITTEXT IDC_PHYSICAL_MEMORY_TOTAL, 192, 131, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_PHYSICAL_MEMORY_AVAILABLE, 192, 140, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_PHYSICAL_MEMORY_SYSTEM_CACHE, 192, 149, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
LTEXT "Insgesamt", IDS_KERNEL_MEMORY_TOTAL, 133, 174, 50, 8 // 27
LTEXT "Ausgelagert", IDS_KERNEL_MEMORY_PAGED, 133, 184, 50, 8 // 21
LTEXT "Nicht ausgelagert", IDS_KERNEL_MEMORY_NONPAGED, 133, 193, 60, 8 // 34
LTEXT "Insgesamt", IDS_KERNEL_MEMORY_TOTAL, 133, 174, 50, 8
LTEXT "Ausgelagert", IDS_KERNEL_MEMORY_PAGED, 133, 184, 50, 8
LTEXT "Nicht ausgelagert", IDS_KERNEL_MEMORY_NONPAGED, 133, 193, 60, 8
EDITTEXT IDC_KERNEL_MEMORY_TOTAL, 192, 174, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_KERNEL_MEMORY_PAGED, 192, 184, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
EDITTEXT IDC_KERNEL_MEMORY_NONPAGED, 192, 193, 48, 8, ES_RIGHT | ES_READONLY |
ES_NUMBER | NOT WS_BORDER | NOT WS_TABSTOP
GROUPBOX "Verlauf der CPU-Auslastung", IDC_CPU_USAGE_HISTORY_FRAME, 76, 5, 166, 54, 0, WS_EX_TRANSPARENT
GROUPBOX "Verlauf der Auslagerungsdateiauslastung", IDC_MEMORY_USAGE_HISTORY_FRAME, 76, 63, 166, 54, 0, WS_EX_TRANSPARENT
PUSHBUTTON "CPU-Auslastungsanzeige", IDC_CPU_USAGE_GRAPH, 12, 17, 47, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
PUSHBUTTON "Auslagerungsdateiauslastungsanzeige", IDC_MEM_USAGE_GRAPH, 12, 75, 47, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
PUSHBUTTON "CPU-Auslastungsverlaufsanzeige", IDC_CPU_USAGE_HISTORY_GRAPH, 82, 17, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
PUSHBUTTON "Auslagerungsdateiauslastungs-Verlaufsanzeige", IDC_MEM_USAGE_HISTORY_GRAPH, 82, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug-Kanäle"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Schließen", IDOK, 171, 189, 69, 14
GROUPBOX "CPU-Lastverlauf", IDC_CPU_USAGE_HISTORY_FRAME, 74, 5, 168, 54, 0, WS_EX_TRANSPARENT
GROUPBOX "Speicher-Lastverlauf", IDC_MEMORY_USAGE_HISTORY_FRAME, 74, 63, 168, 54, 0, WS_EX_TRANSPARENT
PUSHBUTTON "CPU-Lastanzeige", IDC_CPU_USAGE_GRAPH, 12, 17, 47, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
PUSHBUTTON "Speicher-Lastanzeige", IDC_MEM_USAGE_GRAPH, 12, 75, 47, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
PUSHBUTTON "CPU-Lastverlaufsanzeige", IDC_CPU_USAGE_HISTORY_GRAPH, 81, 17, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
PUSHBUTTON "Speicher-Lastverlaufsanzeige", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
@@ -286,40 +275,40 @@ BEGIN
CONTROL "CPU 31", IDC_CPU31, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 175, 119, 41, 10
END
IDD_COLUMNS_DIALOG DIALOGEX 0, 0, 240, 199 // 0, 0, 195, 199
IDD_COLUMNS_DIALOG DIALOGEX 0, 0, 240, 199
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Spalten auswählen"
FONT 8, "MS Shell Dlg"
BEGIN
DEFPUSHBUTTON "OK", IDOK, 124, 178, 50, 14 // 84
PUSHBUTTON "Abbrechen", IDCANCEL, 178, 178, 50, 14 // 138
LTEXT "Wählen Sie die Spalten aus, die auf der Registerkarte Prozesse angezeigt werden sollen.", IDC_STATIC, 7, 7, 221, 17 // 181
DEFPUSHBUTTON "OK", IDOK, 124, 178, 50, 14
PUSHBUTTON "Abbrechen", IDCANCEL, 178, 178, 50, 14
LTEXT "Wählen Sie die Spalten aus, die auf der Registerkarte Prozesse angezeigt werden sollen.", IDC_STATIC, 7, 7, 221, 17
CONTROL "&Name", IDC_IMAGENAME, "Button", BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP, 7, 28, 56, 10
CONTROL "&PID (Prozess-ID)", IDC_PID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 39, 88, 10
CONTROL "&CPU-Auslastung", IDC_CPUUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 50, 80, 10 // 53
CONTROL "&CPU %", IDC_CPUUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 50, 80, 10
CONTROL "CP&U-Zeit", IDC_CPUTIME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 61, 48, 10
CONTROL "&Speicherauslastung", IDC_MEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 72, 90, 10 // 63
CONTROL "Verän&d. der Speicherauslastung", IDC_MEMORYUSAGEDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 83, 120, 10 // 82
CONTROL "&Maximale Speicherauslastung", IDC_PEAKMEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 94, 115, 10 // 82
CONTROL "&Speicherlast", IDC_MEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 72, 90, 10
CONTROL "&Delta Speicherlast", IDC_MEMORYUSAGEDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 83, 120, 10
CONTROL "&Maximale Speicherlast", IDC_PEAKMEMORYUSAGE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 94, 115, 10
CONTROL "S&eitenfehler", IDC_PAGEFAULTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 105, 53, 10
CONTROL "BENUTZE&R-Objekte", IDC_USEROBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 116, 90, 10 // 62
CONTROL "BENUTZE&R-Objekte", IDC_USEROBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 116, 90, 10
CONTROL "E/A (Lesen)", IDC_IOREADS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 127, 49, 10
CONTROL "E/A-Bytes (Lesen)", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 80, 10 // 65
CONTROL "S&itzungskennung", IDC_SESSIONID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 149, 70, 10 // 50
CONTROL "Benut&zername", IDC_USERNAME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 160, 70, 10 // 51
CONTROL "Veränderung der Seiten&fehler", IDC_PAGEFAULTSDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 28, 120, 10 // 107,60
CONTROL "Größe des &virtuellen Speichers", IDC_VIRTUALMEMORYSIZE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 39, 120, 10 // 107, 60
CONTROL "&Ausgelagerter Pool", IDC_PAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 50, 80, 10 // 107, 53
CONTROL "Nicht ausgelagerter P&ool", IDC_NONPAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 61, 115, 10 // 107
CONTROL "&Basispriorität", IDC_BASEPRIORITY, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 72, 80, 10 // 107
CONTROL "&Handleanzahl", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 59, 10 // 107
CONTROL "&Threadanzahl", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 59, 10 // 107
CONTROL "GDI-Obje&kte", IDC_GDIOBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 105, 55, 10 // 107
CONTROL "E/A (Schreiben)", IDC_IOWRITES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 116, 90, 10 // 107
CONTROL "E/A-Bytes (Schreiben)", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10 // 107
CONTROL "E/A (Andere)", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 105, 10 // 107
CONTROL "E/A-Bytes (Andere)", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 110, 10 // 107
CONTROL "Befeh&lszeile", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 65, 10 // 107
CONTROL "E/A-Bytes (Lesen)", IDC_IOREADBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 138, 80, 10
CONTROL "S&itzungskennung", IDC_SESSIONID, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 149, 70, 10
CONTROL "Benut&zername", IDC_USERNAME, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 7, 160, 70, 10
CONTROL "Delta Seiten&fehler", IDC_PAGEFAULTSDELTA, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 28, 120, 10
CONTROL "&Virtueller Speicher", IDC_VIRTUALMEMORYSIZE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 39, 120, 10
CONTROL "&Ausgelagerter Pool", IDC_PAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 50, 80, 10
CONTROL "Nicht ausgelagerter P&ool", IDC_NONPAGEDPOOL, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 61, 115, 10
CONTROL "&Basispriorität", IDC_BASEPRIORITY, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 72, 80, 10
CONTROL "&Handles", IDC_HANDLECOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 83, 59, 10
CONTROL "&Threads", IDC_THREADCOUNT, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 94, 59, 10
CONTROL "GDI-Obje&kte", IDC_GDIOBJECTS, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 105, 55, 10
CONTROL "E/A (Schreiben)", IDC_IOWRITES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 116, 90, 10
CONTROL "E/A-Bytes (Schreiben)", IDC_IOWRITEBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 127, 105, 10
CONTROL "E/A (Andere)", IDC_IOOTHER, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 138, 105, 10
CONTROL "E/A-Bytes (Andere)", IDC_IOOTHERBYTES, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 149, 110, 10
CONTROL "Befeh&lszeile", IDC_COMMANDLINE, "Button", BS_AUTOCHECKBOX | WS_TABSTOP, 127, 160, 65, 10
END
/* String Tables */
@@ -353,7 +342,7 @@ BEGIN
ID_WINDOWS_TILEVERTICALLY "Ordnet die Fenster vertikal auf dem Desktop an."
ID_WINDOWS_MINIMIZE "Minimiert die Fenster"
ID_WINDOWS_MAXIMIZE "Maximiert die Fenster"
ID_WINDOWS_CASCADE "Ordnet die Fenster diagonal überlappend auf den Desktop an."
ID_WINDOWS_CASCADE "Ordnet die Fenster diagonal überlappend auf dem Desktop an."
ID_WINDOWS_BRINGTOFRONT "Zeigt das Fenster im Vordergrund an, aber wechselt nicht zu diesem."
ID_HELP_TOPICS "Zeigt die Hilfethemen des Taskmanagers an."
ID_HELP_ABOUT "Zeigt Programminformationen, Versionsnummer und Copyright an."
@@ -361,8 +350,8 @@ BEGIN
ID_OPTIONS_SHOW16BITTASKS "Zeigt die 16-Bit-Tasks unter der zugehörigen ntvdm.exe an."
ID_VIEW_SELECTCOLUMNS "Legt fest welche Spalten auf der Registerkarte Prozesse angezeigt werden."
ID_VIEW_SHOWKERNELTIMES "Zeigt die Kernel-Zeiten in den Systemmonitordiagrammen an."
ID_VIEW_CPUHISTORY_ONEGRAPHALL "Zeigt für jede CPU-Auslastung ein Verlaufsdiagramm an."
ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU "Zeigt die gesamte CPU-Auslastung in einem Verlaufsdiagramm an."
ID_VIEW_CPUHISTORY_ONEGRAPHALL "Zeigt alle CPUs in demselben Lastverlaufsdiagramm an."
ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU "Zeigt für jede CPU ein eigenes Lastverlaufsdiagramm an."
ID_APPLICATION_PAGE_SWITCHTO "Zeigt das Fenster im Vordergrund an und wechselt zu diesem Task."
END
@@ -381,8 +370,8 @@ BEGIN
ID_PROCESS_PAGE_SETPRIORITY_NORMAL "Legt die Priorität auf NORMAL fest."
ID_PROCESS_PAGE_SETPRIORITY_BELOWNORMAL "Legt die Priorität auf NIEDRIGER ALS NORMAL fest."
ID_PROCESS_PAGE_SETPRIORITY_LOW "Legt die Priorität auf NIEDRIG fest."
ID_PROCESS_PAGE_PROPERTIES "Shows process file properties"
ID_PROCESS_PAGE_OPENFILELOCATION "Opens process file location"
ID_PROCESS_PAGE_PROPERTIES "Zeigt die Dateieigenschaften an."
ID_PROCESS_PAGE_OPENFILELOCATION "Öffnet den übergeordneten Ordner."
END
STRINGTABLE
@@ -396,19 +385,19 @@ BEGIN
IDS_TAB_PID "PID"
IDS_TAB_USERNAME "Benutzername"
IDS_TAB_SESSIONID "Sitzungskennung"
IDS_TAB_CPU "CPU-Auslastung"
IDS_TAB_CPU "CPU %"
IDS_TAB_CPUTIME "CPU-Zeit"
IDS_TAB_MEMUSAGE "Speicherauslastung"
IDS_TAB_PEAKMEMUSAGE "Veränd. der Speicherauslastung"
IDS_TAB_MEMDELTA "Maximale Speicherauslastung"
IDS_TAB_MEMUSAGE "Speicherlast"
IDS_TAB_PEAKMEMUSAGE "Maximale Speicherlast"
IDS_TAB_MEMDELTA "Delta Speicherlast"
IDS_TAB_PAGEFAULT "Seitenfehler"
IDS_TAB_PFDELTA "Maximale Seitenfehler"
IDS_TAB_VMSIZE "Virtuelle Arbeitsspeichergröße"
IDS_TAB_PFDELTA "Delta Seitenfehler"
IDS_TAB_VMSIZE "Virtueller Speicher"
IDS_TAB_PAGEDPOOL "Ausgelagerter Pool"
IDS_TAB_NPPOOL "Nichtausgelagerter Pool"
IDS_TAB_BASEPRI "Basispriorität"
IDS_TAB_HANDLES "Handleanzahl"
IDS_TAB_THREADS "Threadanzahl"
IDS_TAB_HANDLES "Handles"
IDS_TAB_THREADS "Threads"
IDS_TAB_USERPBJECTS "Benutzer-Objekte"
IDS_TAB_GDIOBJECTS "GDI-Objekte"
IDS_TAB_IOREADS "E/A (Lesen)"

View File

@@ -1,4 +1,4 @@
/* Greek (GR) resources by Dj Apal */
/* TRANSLATOR: Dj Apal */
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
@@ -127,7 +127,7 @@ BEGIN
MENUITEM "End Process &Tree", ID_PROCESS_PAGE_ENDPROCESSTREE
MENUITEM "&Debug", ID_PROCESS_PAGE_DEBUG
MENUITEM SEPARATOR
POPUP "Set P&riority"
POPUP "Set &Priority"
BEGIN
MENUITEM "&Realtime", ID_PROCESS_PAGE_SETPRIORITY_REALTIME
MENUITEM "&High", ID_PROCESS_PAGE_SETPRIORITY_HIGH
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "Set &Affinity...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&End Process", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "MEM Usage History", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug Channels"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Close", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processor Affinity"

View File

@@ -125,7 +125,7 @@ BEGIN
MENUITEM "End Process &Tree", ID_PROCESS_PAGE_ENDPROCESSTREE
MENUITEM "&Debug", ID_PROCESS_PAGE_DEBUG
MENUITEM SEPARATOR
POPUP "Set P&riority"
POPUP "Set &Priority"
BEGIN
MENUITEM "&Realtime", ID_PROCESS_PAGE_SETPRIORITY_REALTIME
MENUITEM "&High", ID_PROCESS_PAGE_SETPRIORITY_HIGH
@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "Set &Affinity...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -175,7 +175,6 @@ BEGIN
PUSHBUTTON "&End Process", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -230,16 +229,6 @@ BEGIN
PUSHBUTTON "MEM Usage History", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug Channels"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Close", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processor Affinity"

View File

@@ -1,4 +1,4 @@
/* Spanish (Spain) resources by Carlos Garcia Gomez, Samuel Serapión and Ismael Ferreras Morezuelas (Swyter) */
/* TRANSLATORS: Carlos Garcia Gomez, Samuel Serapión, Ismael Ferreras Morezuelas (Swyter) */
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "Establecer &afinidad...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Finalizar proceso", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "Historial de uso de memoria", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Canales de depuración"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Cerrar", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Afinidad del procesador"

View File

@@ -1,9 +1,8 @@
/*
* PROJECT: Task Manager for ReactOS
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* FILE: base/applications/taskmgr/lang/et-EE.rc
* PURPOSE: Estonian Language resource file
* TRANSLATOR: Joann Mõndresku (joannmondresku at gmail dot com)
* TRANSLATOR: Joann Mõndresku <joannmondresku@gmail.com>
*/
LANGUAGE LANG_ESTONIAN, SUBLANG_DEFAULT
@@ -143,7 +142,7 @@ BEGIN
END
MENUITEM "Määra &ühtivus...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "Prop&erties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -182,7 +181,6 @@ BEGIN
PUSHBUTTON "&Lõpeta protsess", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -237,16 +235,6 @@ BEGIN
PUSHBUTTON "Füüsilise mälu hõivatuse ajalugu", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Silumiskanalid"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Sule", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Protessori ühtivus"

View File

@@ -1,4 +1,4 @@
/* French (Fr) resources by Benoit Plante (aka cmoibenlepro) */
/* TRANSLATOR: Benoit Plante (aka cmoibenlepro) */
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Terminer le processus", IDC_ENDPROCESS, 165, 189, 75, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "Historique d'utilisation du fichier d'échange", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Cannaux de débogage"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Fermer", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Affinité du processeur"

View File

@@ -1,4 +1,4 @@
/* Hebrew translations by Baruch Rutman (peterooch) and Shy Zedaka */
/* TRANSLATORS: Baruch Rutman (peterooch), Shy Zedaka */
LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "הגדרת &קירבה", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&סיים תהליך", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "היסטורית שימוש בזיכרון", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug Channels"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "סגירה", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "קירבה בין מעבדים"

View File

@@ -1,4 +1,4 @@
/* Hungaruan (HU) translation by Robert Horvath - talley at cubeclub.hu */
/* TRANSLATOR: Robert Horvath <talley@cubeclub.hu> */
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
@@ -139,7 +139,7 @@ BEGIN
MENUITEM "&Processzorok használata...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Tulajdonságok", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "Fájl &helyének megnyitása", ID_PROCESS_PAGE_OPENFILELOCATION
MENUITEM "Fájl h&elyének megnyitása", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Folyamat befejezése", IDC_ENDPROCESS, 165, 189, 75, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "Memória használata", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Hibakereső csatornák"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Bezárás", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processzoraffinitás"

View File

@@ -1,4 +1,4 @@
/* Indonesian resource file by Zaenal Mutaqin (ade999@gmail.com) and Mas Ahmad Muhammad (m.charly81@gmail.com) */
/* TRANSLATORS: Zaenal Mutaqin <ade999@gmail.com> and Mas Ahmad Muhammad <m.charly81@gmail.com> */
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "Setel &Afinitas...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Akhiri Proses", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "Riwayat Pemakaian MEM", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Saluran Debug"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Tutup", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Afinitas Prosesor"

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "Definisci &Affinità...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&Termina Processo", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Storico uso MEM", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug Channels"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Chiudi", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processor Affinity"

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "関係の設定(&A)...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "プロセスの終了(&E)", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 9, "MS UI Gothic"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "メモリ使用量の履歴", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "デバッグ チャンネル"
FONT 9, "MS UI Gothic"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "閉じる", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "プロセッサの関係"

View File

@@ -1,4 +1,4 @@
/* Korean translation by Seungju Kim */
/* TRANSLATOR: Seungju Kim */
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "선호도 설정(&A)", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "작업 끝내기(&E)", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 9, "굴림"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "메모리 사용 기록", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "디버그 채널"
FONT 9, "굴림"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "닫기", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "프로세서 선호도"

View File

@@ -15,7 +15,7 @@ BEGIN
MENUITEM "&Verbergen indien geminimaliseerd", ID_OPTIONS_HIDEWHENMINIMIZED, CHECKED
MENUITEM "16-&bits taken weergeven", ID_OPTIONS_SHOW16BITTASKS, CHECKED
END
POPUP "&Beeld"
POPUP "B&eeld"
BEGIN
MENUITEM "&Nu vernieuwen", ID_VIEW_REFRESH
POPUP "Bijwerk&snelheid"
@@ -121,11 +121,11 @@ IDR_PROCESS_PAGE_CONTEXT MENU
BEGIN
POPUP "DUMMY"
BEGIN
MENUITEM "&Proces beëindigen", ID_PROCESS_PAGE_ENDPROCESS
MENUITEM "Pro&ces beëindigen", ID_PROCESS_PAGE_ENDPROCESS
MENUITEM "Process&tructuur beëindigen", ID_PROCESS_PAGE_ENDPROCESSTREE
MENUITEM "&Fouten opsporen", ID_PROCESS_PAGE_DEBUG
MENUITEM SEPARATOR
POPUP "P&rioriteit instellen"
POPUP "&Prioriteit instellen"
BEGIN
MENUITEM "&Realtime", ID_PROCESS_PAGE_SETPRIORITY_REALTIME
MENUITEM "&Hoog", ID_PROCESS_PAGE_SETPRIORITY_HIGH
@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "&Affiniteit instellen...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&Proces beëindigen", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Geschiedenis van wisselbestandsgebruik", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug kanalen"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Sluit", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processoraffiniteit"

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "Sett &tiltrekning ...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&Avslutt prosess", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Minne bruk historie", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug kanaler"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Avslutt", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Prosessor slektskap"

View File

@@ -1,9 +1,8 @@
/*
* Translated by xrogers
* xxrogers@users.sourceforge.net
* https://sourceforge.net/projects/reactospl
* UTF-8 conversion by Caemyr (May, 2011)
* Updated by Saibamen - Adam Stachowicz (saibamenppl@gmail.com) (August, 2014)
* TRANSLATOR: xrogers <xxrogers@users.sourceforge.net>
* https://sourceforge.net/projects/reactospl
* UTF-8 conversion by Caemyr (May, 2011)
* Updated by Saibamen - Adam Stachowicz <saibamenppl@gmail.com> (August, 2014)
*/
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
@@ -144,7 +143,7 @@ BEGIN
END
MENUITEM "Ustaw &koligację...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -185,7 +184,6 @@ BEGIN
PUSHBUTTON "&Zakończ proces", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -240,16 +238,6 @@ BEGIN
PUSHBUTTON "Historia zużycia pamięci", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Kanały debugowania"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Zamknij", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Koligacje procesora"

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "Definir &afinidade...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&Finalizar processo", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "MEM Usage History", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Canais de depuração"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Fechar", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Afinidade com processador"

View File

@@ -1,4 +1,4 @@
/* Translation and UTF-8 Conversion by Gabriel Aguiar(fgsoftware1) <fgygh5804@gmail.com,fgsoftwarestudio@gmail.com> (July, 2021) */
/* TRANSLATOR: 2021 Gabriel Aguiar <fgygh5804@gmail.com,fgsoftwarestudio@gmail.com> */
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "Definir &afinidade...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Propriedades", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&ropriedades", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Abrir localização do ficheiro", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Terminar processo", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "Histórico de uso da memória RAM", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Canais de depuração"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Fechar", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Afinidade com processador"

View File

@@ -1,9 +1,8 @@
/*
* Translators: Petru Dimitriu (petrimetri at gmail dot com)
* Ștefan Fulea (stefan dot fulea at mail dot com)
* TRANSLATORS: Petru Dimitriu <petrimetri@gmail.com>
* Ștefan Fulea <stefan.fulea@mail.com>
*/
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
IDR_TASKMANAGER MENU
@@ -142,7 +141,7 @@ BEGIN
END
MENUITEM "A&finitate…", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -183,7 +182,6 @@ BEGIN
PUSHBUTTON "Opr&ește procesul", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -238,16 +236,6 @@ BEGIN
PUSHBUTTON "Afișaj istoric încărcătură memorie", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Canale de depanare"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Î&nchide", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Afinitate procesor"

View File

@@ -1,4 +1,4 @@
/* Russian language resource file by Dmitry Chapyshev, 2007-06-10, Kudratov Olimjon (olim98@bk.ru) */
/* TRANSLATORS: Dmitry Chapyshev, 2007-06-10, Kudratov Olimjon <olim98@bk.ru> */
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Завершить процесс", IDC_ENDPROCESS, 167, 189, 74, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "Хронология использования памяти", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Отладка потоков"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Закрыть", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Семейство процессоров"

View File

@@ -1,4 +1,4 @@
/* Slovak translation by Kario (kario@szm.sk) (09-08-2007) */
/* TRANSLATOR: 2007 Kario <kario@szm.sk> */
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "Nastaviť &afinitu...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Ukončiť proces", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "História využitia pamäte", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Kanály ladenia"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Zavrieť", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 270, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Afinita procesorov"

View File

@@ -1,5 +1,4 @@
/* TRANSLATOR : Ardit Dani (Ard1t) (ardit.dani@gmail.com)
* DATE OF TR: 29-11-2013
/* TRANSLATOR: 2013 Ardit Dani (Ard1t) <ardit.dani@gmail.com>
*/
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
@@ -140,7 +139,7 @@ BEGIN
END
MENUITEM "Vendos prirje...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +178,6 @@ BEGIN
PUSHBUTTON "Mbyll Procesin", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +232,6 @@ BEGIN
PUSHBUTTON "Historia e perdorimit MEM", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Debug Channels"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Mbyll", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processor Affinity"

View File

@@ -1,4 +1,4 @@
/* Swedish translation by David Nordenberg */
/* TRANSLATOR: David Nordenberg */
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "Välj &källa (FIXME)...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -179,7 +179,6 @@ BEGIN
PUSHBUTTON "&Avsluta process", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -234,16 +233,6 @@ BEGIN
PUSHBUTTON "Minneshistorik", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Felsökningskanaler"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Stäng", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Processorsamhörighet"

View File

@@ -1,4 +1,4 @@
/* TRANSLATOR: 2013-2014, 2016, 2019 Erdem Ersoy (eersoy93) (erdemersoy [at] erdemersoy [dot] net) */
/* TRANSLATOR: 2013-2019 Erdem Ersoy (eersoy93) <erdemersoy@erdemersoy.net> */
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
@@ -138,7 +138,7 @@ BEGIN
END
MENUITEM "İ&lişkiyi Ayarla...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "&İşlemi Sonlandır", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Bellek Kullanım Geçmişi Grafiği", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Hata Ayıklama Kanalları"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Kapat", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "İşlemci İlişkisi"

View File

@@ -136,7 +136,7 @@ BEGIN
END
MENUITEM "У&становити відповідність...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "P&roperties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -177,7 +177,6 @@ BEGIN
PUSHBUTTON "Зн&яти процес", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 8, "MS Shell Dlg"
@@ -232,16 +231,6 @@ BEGIN
PUSHBUTTON "Хронологія використання пам'яті", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Налагодження каналів"
FONT 8, "MS Shell Dlg"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "Закрити", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Відповідність процесорів"

View File

@@ -2,7 +2,7 @@
* (Simplified Chinese resources)
* (简体中文资源)
* by zhangbing 2008 <e_zb@21cn.com, ezb@mail.gywb.cn>
* Improved by Wexpo Lyu <laosb at lasteam.net>
* Improved by Wexpo Lyu <laosb@lasteam.net>
*/
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
@@ -143,8 +143,8 @@ BEGIN
END
MENUITEM "关系设置(&A)...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
MENUITEM "Properties(&R)", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "Open File Location(&O)", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -184,7 +184,6 @@ BEGIN
PUSHBUTTON "结束进程(&E)", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 9, "宋体"
@@ -239,16 +238,6 @@ BEGIN
PUSHBUTTON "内存使用记录", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "调试频道"
FONT 9, "宋体"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "关闭", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "处理器关联"

View File

@@ -144,8 +144,8 @@ BEGIN
END
MENUITEM "親和性設定(&A)...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
MENUITEM "Properties(&R)", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "Open File Location(&O)", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -185,7 +185,6 @@ BEGIN
PUSHBUTTON "結束處理程序(&E)", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 9, "新細明體"
@@ -240,16 +239,6 @@ BEGIN
PUSHBUTTON "記憶體使用記錄", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "偵錯頻道"
FONT 9, "新細明體"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "關閉", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "處理器親和性"

View File

@@ -144,8 +144,8 @@ BEGIN
END
MENUITEM "親和性設定(&A)...", ID_PROCESS_PAGE_SETAFFINITY
MENUITEM SEPARATOR
MENUITEM "&Properties", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "&Open File Location", ID_PROCESS_PAGE_OPENFILELOCATION
MENUITEM "Properties(&R)", ID_PROCESS_PAGE_PROPERTIES
MENUITEM "Open File Location(&O)", ID_PROCESS_PAGE_OPENFILELOCATION
END
END
@@ -185,7 +185,6 @@ BEGIN
PUSHBUTTON "結束處理程序(&E)", IDC_ENDPROCESS, 171, 189, 69, 14
END
/* IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210 */
IDD_PERFORMANCE_PAGE DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
FONT 9, "新細明體"
@@ -240,16 +239,6 @@ BEGIN
PUSHBUTTON "記憶體使用記錄", IDC_MEM_USAGE_HISTORY_GRAPH, 81, 75, 153, 37, NOT WS_TABSTOP, WS_EX_CLIENTEDGE
END
IDD_DEBUG_CHANNELS_DIALOG DIALOGEX 0, 0, 247, 210
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "除錯頻道"
FONT 9, "新細明體"
BEGIN
CONTROL "List1", IDC_DEBUG_CHANNELS_LIST, "SysListView32", LVS_REPORT | LVS_SINGLESEL |
LVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP | LVS_SORTASCENDING, 7, 7, 233, 177
PUSHBUTTON "關閉", IDOK, 171, 189, 69, 14
END
IDD_AFFINITY_DIALOG DIALOGEX 0, 0, 231, 154
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "處理器親和性"

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Performance Counters.
* PURPOSE: Performance Counters
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
* Copyright 2014 Ismael Ferreras Morezuelas <swyterzone+ros@gmail.com>
*/
@@ -100,7 +100,7 @@ void PerfDataUninitialize(void)
static void SidToUserName(PSID Sid, LPWSTR szBuffer, DWORD BufferSize)
{
static WCHAR szDomainNameUnused[255];
DWORD DomainNameLen = sizeof(szDomainNameUnused) / sizeof(szDomainNameUnused[0]);
DWORD DomainNameLen = _countof(szDomainNameUnused);
SID_NAME_USE Use;
if (Sid != NULL)
@@ -153,8 +153,6 @@ CachedGetUserFromSid(
pEntry->List.Blink = SidToUserNameHead.Blink;
SidToUserNameHead.Blink->Flink = &pEntry->List;
SidToUserNameHead.Blink = &pEntry->List;
return;
}
void PerfDataRefresh(void)
@@ -324,7 +322,7 @@ void PerfDataRefresh(void)
wcsncpy(pPerfData[Idx].ImageName, pSPI->ImageName.Buffer, len);
} else {
LoadStringW(hInst, IDS_IDLE_PROCESS, pPerfData[Idx].ImageName,
sizeof(pPerfData[Idx].ImageName) / sizeof(pPerfData[Idx].ImageName[0]));
_countof(pPerfData[Idx].ImageName));
}
pPerfData[Idx].ProcessId = pSPI->UniqueProcessId;
@@ -402,7 +400,7 @@ ClearInfo:
ZeroMemory(&pPerfData[Idx].IOCounters, sizeof(IO_COUNTERS));
}
cwcUserName = sizeof(pPerfData[0].UserName) / sizeof(pPerfData[0].UserName[0]);
cwcUserName = _countof(pPerfData[0].UserName);
CachedGetUserFromSid(ProcessUser, pPerfData[Idx].UserName, &cwcUserName);
if (ProcessSD != NULL)

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Performance Page.
* PURPOSE: Performance Page
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
*/
@@ -320,9 +320,9 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
WCHAR Text[260];
WCHAR szMemUsage[256], szCpuUsage[256], szProcesses[256];
LoadStringW(hInst, IDS_STATUS_CPUUSAGE, szCpuUsage, ARRAYSIZE(szCpuUsage));
LoadStringW(hInst, IDS_STATUS_MEMUSAGE, szMemUsage, ARRAYSIZE(szMemUsage));
LoadStringW(hInst, IDS_STATUS_PROCESSES, szProcesses, ARRAYSIZE(szProcesses));
LoadStringW(hInst, IDS_STATUS_CPUUSAGE, szCpuUsage, _countof(szCpuUsage));
LoadStringW(hInst, IDS_STATUS_MEMUSAGE, szMemUsage, _countof(szMemUsage));
LoadStringW(hInst, IDS_STATUS_PROCESSES, szProcesses, _countof(szProcesses));
while (1)
{
@@ -355,11 +355,11 @@ DWORD WINAPI PerformancePageRefreshThread(PVOID Parameter)
StrFormatByteSizeW(CommitChargeTotal * 1024,
szChargeTotalFormat,
ARRAYSIZE(szChargeTotalFormat));
_countof(szChargeTotalFormat));
StrFormatByteSizeW(CommitChargeLimit * 1024,
szChargeLimitFormat,
ARRAYSIZE(szChargeLimitFormat));
_countof(szChargeLimitFormat));
if (!bTrackMenu)
{

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Processes Page.
* PURPOSE: Processes Page
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
* Copyright 2009 Maxime Vernier <maxime.vernier@gmail.com>
* Copyright 2022 Thamatip Chitpong <tangaming123456@outlook.com>
@@ -797,8 +797,8 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
if (TaskManagerSettings.SortColumn == COLUMN_IMAGENAME)
{
PerfDataGetImageName(IndexParam1, text1, sizeof (text1) / sizeof (*text1));
PerfDataGetImageName(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
PerfDataGetImageName(IndexParam1, text1, _countof(text1));
PerfDataGetImageName(IndexParam2, text2, _countof(text2));
ret = _wcsicmp(text1, text2);
}
else if (TaskManagerSettings.SortColumn == COLUMN_PID)
@@ -809,14 +809,14 @@ int CALLBACK ProcessPageCompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lPara
}
else if (TaskManagerSettings.SortColumn == COLUMN_USERNAME)
{
PerfDataGetUserName(IndexParam1, text1, sizeof (text1) / sizeof (*text1));
PerfDataGetUserName(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
PerfDataGetUserName(IndexParam1, text1, _countof(text1));
PerfDataGetUserName(IndexParam2, text2, _countof(text2));
ret = _wcsicmp(text1, text2);
}
else if (TaskManagerSettings.SortColumn == COLUMN_COMMANDLINE)
{
PerfDataGetCommandLine(IndexParam1, text1, sizeof (text1) / sizeof (*text1));
PerfDataGetCommandLine(IndexParam2, text2, sizeof (text2) / sizeof (*text2));
PerfDataGetCommandLine(IndexParam1, text1, _countof(text1));
PerfDataGetCommandLine(IndexParam2, text2, _countof(text2));
ret = _wcsicmp(text1, text2);
}
else if (TaskManagerSettings.SortColumn == COLUMN_SESSIONID)

View File

@@ -32,8 +32,6 @@
#define IDR_PROCESS_PAGE_CONTEXT 144
#define IDB_TRAYMASK 150
#define IDB_TRAYICON 153
#define IDD_DEBUG_CHANNELS_DIALOG 155
#define IDC_DEBUG_CHANNELS_LIST 156
#define IDC_ENDTASK 1012
#define IDC_SWITCHTO 1013

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Run Task.
* PURPOSE: Run Task
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
* Copyright 2005 Klemens Friedl <frik85@reactos.at>
*/
@@ -16,8 +16,8 @@ void TaskManager_OnFileNew(void)
WCHAR szText[256];
/* Load language strings from resource file */
LoadStringW(hInst, IDS_CREATENEWTASK, szTitle, sizeof(szTitle) / sizeof(szTitle[0]));
LoadStringW(hInst, IDS_CREATENEWTASK_DESC, szText, sizeof(szText) / sizeof(szText[0]));
LoadStringW(hInst, IDS_CREATENEWTASK, szTitle, _countof(szTitle));
LoadStringW(hInst, IDS_CREATENEWTASK_DESC, szText, _countof(szText));
hShell32 = LoadLibraryW(L"SHELL32.DLL");
RunFileDlg = (RUNFILEDLG)(FARPROC)GetProcAddress(hShell32, (LPCSTR)61);

View File

@@ -1,7 +1,7 @@
/*
* PROJECT: ReactOS Task Manager
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
* PURPOSE: Application Entry-point.
* PURPOSE: Application Entry-point
* COPYRIGHT: Copyright 1999-2001 Brian Palmer <brianp@reactos.org>
* Copyright 2005 Klemens Friedl <frik85@reactos.at>
*/
@@ -110,7 +110,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
HWND hTaskMgr;
TCHAR szTaskmgr[128];
LoadString(hInst, IDS_APP_TITLE, szTaskmgr, sizeof(szTaskmgr)/sizeof(TCHAR));
LoadString(hInst, IDS_APP_TITLE, szTaskmgr, _countof(szTaskmgr));
hTaskMgr = FindWindow(NULL, szTaskmgr);
if (hTaskMgr != NULL)
@@ -139,10 +139,10 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
* so that we can debug processes
*/
/* Get a token for this process. */
/* Get a token for this process. */
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
{
/* Get the LUID for the debug privilege. */
/* Get the LUID for the debug privilege. */
if (LookupPrivilegeValueW(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid))
{
tkp.PrivilegeCount = 1; /* one privilege to set */
@@ -159,9 +159,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
/* Initialize perf data */
if (!PerfDataInitialize())
{
return -1;
}
/*
* Set our shutdown parameters: we want to shutdown the very last,
@@ -371,21 +369,14 @@ TaskManagerWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
hPopupMenu = GetSubMenu(hMenu, 0);
if(IsWindowVisible(hMainWnd))
{
DeleteMenu(hPopupMenu, ID_RESTORE, MF_BYCOMMAND);
}
DeleteMenu(hPopupMenu, ID_RESTORE, MF_BYCOMMAND);
else
{
SetMenuDefaultItem(hPopupMenu, ID_RESTORE, FALSE);
}
SetMenuDefaultItem(hPopupMenu, ID_RESTORE, FALSE);
if(OnTop)
{
CheckMenuItem(hPopupMenu, ID_OPTIONS_ALWAYSONTOP, MF_BYCOMMAND | MF_CHECKED);
} else
{
CheckMenuItem(hPopupMenu, ID_OPTIONS_ALWAYSONTOP, MF_BYCOMMAND | MF_UNCHECKED);
}
CheckMenuItem(hPopupMenu, ID_OPTIONS_ALWAYSONTOP, MF_BYCOMMAND | MF_CHECKED);
else
CheckMenuItem(hPopupMenu, ID_OPTIONS_ALWAYSONTOP, MF_BYCOMMAND | MF_UNCHECKED);
SetForegroundWindow(hMainWnd);
TrackPopupMenuEx(hPopupMenu, 0, pt.x, pt.y, hMainWnd, NULL);
@@ -680,19 +671,19 @@ BOOL OnCreate(HWND hWnd)
lpUserName = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len * sizeof(WCHAR));
if (lpUserName && GetUserNameW(lpUserName, &len))
{
_snwprintf(szLogOffItem, sizeof(szLogOffItem)/sizeof(szLogOffItem[0]), szTemp, lpUserName);
szLogOffItem[sizeof(szLogOffItem)/sizeof(szLogOffItem[0]) - 1] = UNICODE_NULL;
_snwprintf(szLogOffItem, _countof(szLogOffItem), szTemp, lpUserName);
szLogOffItem[_countof(szLogOffItem) - 1] = UNICODE_NULL;
}
else
{
_snwprintf(szLogOffItem, sizeof(szLogOffItem)/sizeof(szLogOffItem[0]), szTemp, L"n/a");
_snwprintf(szLogOffItem, _countof(szLogOffItem), szTemp, L"n/a");
}
if (lpUserName) HeapFree(GetProcessHeap(), 0, lpUserName);
}
else
{
_snwprintf(szLogOffItem, sizeof(szLogOffItem)/sizeof(szLogOffItem[0]), szTemp, L"n/a");
_snwprintf(szLogOffItem, _countof(szLogOffItem), szTemp, L"n/a");
}
/* 3- Set the menu item text to its formatted counterpart */
@@ -868,11 +859,8 @@ void SaveSettings(void)
void TaskManager_OnRestoreMainWindow(void)
{
//HMENU hMenu, hOptionsMenu;
BOOL OnTop;
//hMenu = GetMenu(hMainWnd);
//hOptionsMenu = GetSubMenu(hMenu, OPTIONS_MENU_INDEX);
OnTop = ((GetWindowLongPtrW(hMainWnd, GWL_EXSTYLE) & WS_EX_TOPMOST) != 0);
OpenIcon(hMainWnd);

View File

@@ -21,6 +21,8 @@
#include "precomp.h"
#define BALLOON_MAXWIDTH 340
struct InternalIconData : NOTIFYICONDATA
{
// Must keep a separate copy since the original is unioned with uTimeout.
@@ -617,19 +619,19 @@ void CBalloonQueue::Show(Info& info)
// TODO: NIF_REALTIME, NIIF_NOSOUND, other Vista+ flags
const int index = IndexOf(info.pSource);
m_current = info.pSource;
RECT rc;
m_toolbar->GetItemRect(index, &rc);
m_toolbar->GetItemRect(IndexOf(m_current), &rc);
m_toolbar->ClientToScreen(&rc);
const WORD x = (rc.left + rc.right) / 2;
const WORD y = (rc.top + rc.bottom) / 2;
m_tooltips->SetTitle(info.szInfoTitle, info.uIcon);
m_tooltips->TrackPosition(x, y);
m_tooltips->SetMaxTipWidth(BALLOON_MAXWIDTH);
m_tooltips->UpdateTipText(m_hwndParent, reinterpret_cast<LPARAM>(m_toolbar->m_hWnd), info.szInfo);
m_tooltips->TrackActivate(m_hwndParent, reinterpret_cast<LPARAM>(m_toolbar->m_hWnd));
m_current = info.pSource;
int timeout = info.uTimeout;
if (timeout < MinTimeout) timeout = MinTimeout;
if (timeout > MaxTimeout) timeout = MaxTimeout;

View File

@@ -141,6 +141,9 @@ add_custom_target(bootcdregtest
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n")
# Create TEMP dir
file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "reactos/TEMP=${CMAKE_CURRENT_BINARY_DIR}/empty\n")
# Create user profile directories
add_allusers_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "Profiles")
add_user_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "Profiles" "Default User")

View File

@@ -1901,6 +1901,7 @@ HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Hidden",0x00
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced","ShowSuperHidden",0x00010003,0
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CabinetState",,0x00000012
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CabinetState","FullPath",0x00010003,0
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CabinetState","FullPathAddress",0x00010003,1
HKCU,"SOFTWARE\Microsoft\Internet Explorer\Main","StatusBarOther",0x00010003,1
HKCU,"SOFTWARE\Microsoft\Internet Explorer\Toolbar","Locked",0x00010003,1

View File

@@ -55,7 +55,7 @@ ULONG LdrpNumberOfTlsEntries;
ULONG LdrpNumberOfProcessors;
PVOID NtDllBase;
extern LARGE_INTEGER RtlpTimeout;
BOOLEAN RtlpTimeoutDisable;
extern BOOLEAN RtlpTimeoutDisable;
PVOID LdrpHeap;
LIST_ENTRY LdrpHashTable[LDR_HASH_TABLE_ENTRIES];
LIST_ENTRY LdrpDllNotificationList;
@@ -86,7 +86,7 @@ ULONG LdrpActiveUnloadCount;
//extern LIST_ENTRY RtlCriticalSectionList;
VOID NTAPI RtlpInitializeVectoredExceptionHandling(VOID);
VOID NTAPI RtlpInitDeferedCriticalSection(VOID);
VOID NTAPI RtlpInitDeferredCriticalSection(VOID);
VOID NTAPI RtlInitializeHeapManager(VOID);
ULONG RtlpDisableHeapLookaside; // TODO: Move to heap.c
@@ -1839,7 +1839,7 @@ LdrpInitializeProcess(IN PCONTEXT Context,
/* ReactOS specific: do not clear it. (Windows starts doing the same in later versions) */
//Peb->pShimData = NULL;
/* Save the number of processors and CS Timeout */
/* Save the number of processors and CS timeout */
LdrpNumberOfProcessors = Peb->NumberOfProcessors;
RtlpTimeout = Peb->CriticalSectionTimeout;
@@ -1894,8 +1894,9 @@ LdrpInitializeProcess(IN PCONTEXT Context,
if (VALID_CONFIG_FIELD(GlobalFlagsClear) && LoadConfig->GlobalFlagsClear)
Peb->NtGlobalFlag &= ~LoadConfig->GlobalFlagsClear;
/* Convert the default CS timeout from milliseconds to 100ns units */
if (VALID_CONFIG_FIELD(CriticalSectionDefaultTimeout) && LoadConfig->CriticalSectionDefaultTimeout)
RtlpTimeout.QuadPart = Int32x32To64(LoadConfig->CriticalSectionDefaultTimeout, -10000000);
RtlpTimeout.QuadPart = Int32x32To64(LoadConfig->CriticalSectionDefaultTimeout, -10000);
if (VALID_CONFIG_FIELD(DeCommitFreeBlockThreshold) && LoadConfig->DeCommitFreeBlockThreshold)
HeapParameters.DeCommitFreeBlockThreshold = LoadConfig->DeCommitFreeBlockThreshold;
@@ -1935,15 +1936,12 @@ LdrpInitializeProcess(IN PCONTEXT Context,
&CommandLine);
}
/* If the timeout is too long */
/* If the CS timeout is longer than 1 hour, disable it */
if (RtlpTimeout.QuadPart < Int32x32To64(3600, -10000000))
{
/* Then disable CS Timeout */
RtlpTimeoutDisable = TRUE;
}
/* Initialize Critical Section Data */
RtlpInitDeferedCriticalSection();
RtlpInitDeferredCriticalSection();
/* Initialize VEH Call lists */
RtlpInitializeVectoredExceptionHandling();

View File

@@ -259,3 +259,7 @@ add_subdirectory(xinput1_3)
add_subdirectory(xinput9_1_0)
add_subdirectory(xmllite)
add_subdirectory(xolehlp)
if(DLL_EXPORT_VERSION GREATER_EQUAL 0x600)
add_subdirectory(dwmapi)
endif()

View File

@@ -130,18 +130,12 @@ HRESULT CAddressEditBox::RefreshAddress()
/* Set the path if filesystem; otherwise use the name */
WCHAR szPathOrName[MAX_PATH];
if (!SHGetPathFromIDListW(absolutePIDL, szPathOrName))
{
STRRET ret;
hr = pShellFolder->GetDisplayNameOf(pidlChild, SHGDN_FORADDRESSBAR | SHGDN_FORPARSING, &ret);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
SHGDNF flags = SHGDN_FORADDRESSBAR;
if (gCabinetState.fFullPathAddress)
flags |= SHGDN_FORPARSING;
hr = StrRetToBufW(&ret, pidlChild, szPathOrName, _countof(szPathOrName));
if (FAILED_UNEXPECTEDLY(hr))
return hr;
}
item.pszText = szPathOrName;
if (SUCCEEDED(IEGetNameAndFlags(absolutePIDL, flags, szPathOrName, _countof(szPathOrName), NULL)))
item.pszText = szPathOrName;
/* Ownership of absolutePIDL will be moved to fCombobox. See CBEN_DELETEITEM */
item.lParam = reinterpret_cast<LPARAM>(absolutePIDL.Detach());
@@ -644,3 +638,9 @@ LPITEMIDLIST CAddressEditBox::GetItemData(int index)
SendMessageW(hComboBoxEx, CBEM_GETITEMW, 0, (LPARAM)&item);
return (LPITEMIDLIST)item.lParam;
}
LRESULT CAddressEditBox::OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
{
RefreshAddress();
return NO_ERROR;
}

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