mirror of
https://github.com/reactos/reactos
synced 2025-10-06 08:22:58 +02:00
Compare commits
153 Commits
hpoussin-t
...
netstat_cr
Author | SHA1 | Date | |
---|---|---|---|
|
71142b486c | ||
|
f09d9d9ad1 | ||
|
c39e0a5be4 | ||
|
62ed5f18a3 | ||
|
5db7c3b5d2 | ||
|
15f9460824 | ||
|
c63489f1e8 | ||
|
a38b133dd1 | ||
|
b0b40ce520 | ||
|
d04e049284 | ||
|
ec53d42278 | ||
|
3fa6d74a01 | ||
|
e7ccb36b9b | ||
|
e034377b51 | ||
|
3fa613b9da | ||
|
d6a78d580b | ||
|
d03fc32e7d | ||
|
f203ad5cf4 | ||
|
157491e297 | ||
|
3bc71f9086 | ||
|
0fbd5eda85 | ||
|
b12069d670 | ||
|
7e1510eb9c | ||
|
0c16bcd4e8 | ||
|
af47866f76 | ||
|
095510bdac | ||
|
38e4b859e2 | ||
|
cdb130420e | ||
|
b9b2608bfb | ||
|
bc19bbe408 | ||
|
19d8862851 | ||
|
64ef3ced9c | ||
|
b5335fb90b | ||
|
7bb0561c2d | ||
|
fdba69be7c | ||
|
2661b2db61 | ||
|
96d3883686 | ||
|
9afcbea24e | ||
|
f6bd638b4d | ||
|
17bdf55474 | ||
|
7aadc1e1fe | ||
|
0972f71d9a | ||
|
89ecf32e0b | ||
|
d614d62b09 | ||
|
21f0095cc4 | ||
|
8ba330ead2 | ||
|
9f56e67bc2 | ||
|
aaa0cb6724 | ||
|
e8c7e30030 | ||
|
b7071f67a8 | ||
|
2f856f6f0d | ||
|
c706222f3f | ||
|
f4735ccc9b | ||
|
434798e312 | ||
|
9927163455 | ||
|
3bdc062fb9 | ||
|
d5707eefe2 | ||
|
2da0506f2a | ||
|
6e77747b30 | ||
|
0b4c8bdd1c | ||
|
7b53126375 | ||
|
da7dcec6a0 | ||
|
3fc702b588 | ||
|
36aea8e56e | ||
|
9a6c85f68a | ||
|
7989e3f26c | ||
|
dc14a9f6e0 | ||
|
2441e86963 | ||
|
ec93c2340d | ||
|
99fb812be4 | ||
|
ad61c574f4 | ||
|
5675604d28 | ||
|
61012eb544 | ||
|
bfd42c67a1 | ||
|
113656563a | ||
|
4f41000714 | ||
|
84b4a80beb | ||
|
318b2e786d | ||
|
3b4422b41b | ||
|
0334498068 | ||
|
78c8df8393 | ||
|
6d9b7f77ad | ||
|
2b623c1d04 | ||
|
70f897e4c9 | ||
|
8d8e81ee7a | ||
|
5ef3f347ad | ||
|
2e836fb339 | ||
|
fa4c3bd560 | ||
|
1a88607387 | ||
|
0087ea6597 | ||
|
cb245ff711 | ||
|
62b6859a67 | ||
|
9ff9580fb0 | ||
|
3da25b73c2 | ||
|
83762575e1 | ||
|
d3164a0f55 | ||
|
0f9be53985 | ||
|
7d5e159131 | ||
|
114bc2b96e | ||
|
29a706fc5a | ||
|
fa388640ca | ||
|
0887c1c040 | ||
|
ed22908780 | ||
|
4782c314d4 | ||
|
c3db5e9c8e | ||
|
59e74584ac | ||
|
8e2fe925f2 | ||
|
f483e42f89 | ||
|
d8bfe2a261 | ||
|
56a450147c | ||
|
8061a6f6f4 | ||
|
0b695a6f70 | ||
|
2674e26cbb | ||
|
509359b3ec | ||
|
2e305b251b | ||
|
8d242c6229 | ||
|
789a296c43 | ||
|
6db0d24fb6 | ||
|
13b1eadebb | ||
|
51279c3e44 | ||
|
a389f8aa0c | ||
|
d708c7947b | ||
|
b29b2682bf | ||
|
36cdd34814 | ||
|
bddd8b058c | ||
|
aeffa57ec7 | ||
|
2626c724e9 | ||
|
024daea0af | ||
|
13e6cbcafa | ||
|
e54b32b434 | ||
|
8f9ef68ea7 | ||
|
b29e82d0e0 | ||
|
acbb73a89d | ||
|
ff1fa4f38a | ||
|
d6fecc52d1 | ||
|
85ca8afb60 | ||
|
2eb67000a5 | ||
|
2b8c1b0dac | ||
|
05cd3406e7 | ||
|
0fa4edebd9 | ||
|
634415cace | ||
|
44e1d87596 | ||
|
f172f98a10 | ||
|
b59bae8bb9 | ||
|
474f4d05c0 | ||
|
c7d9949b9d | ||
|
fd0b294dfc | ||
|
676c34ae79 | ||
|
8a7b5a9009 | ||
|
32f80b5929 | ||
|
8b4572c159 | ||
|
eef0b74546 | ||
|
b54ec5bde3 |
51
.github/workflows/build.yml
vendored
51
.github/workflows/build.yml
vendored
@@ -272,28 +272,29 @@ jobs:
|
||||
name: reactos-syms-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
path: build/msvc_pdb
|
||||
|
||||
build-msbuild-i386:
|
||||
name: MSBuild (i386)
|
||||
runs-on: windows-2019
|
||||
steps:
|
||||
- name: Install Flex and Bison
|
||||
run: |
|
||||
curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z
|
||||
7z x flexbison.7z -O${{github.workspace}}\bin
|
||||
echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
- name: Add CL to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: amd64_x86
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: src
|
||||
- name: Configure
|
||||
run: |
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src
|
||||
- name: Build
|
||||
run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
|
||||
# Disable MSBuild for the moment being until a proper fix is provided -- see CORE-18911
|
||||
# build-msbuild-i386:
|
||||
# name: MSBuild (i386)
|
||||
# runs-on: windows-2019
|
||||
# steps:
|
||||
# - name: Install Flex and Bison
|
||||
# run: |
|
||||
# curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z
|
||||
# 7z x flexbison.7z -O${{github.workspace}}\bin
|
||||
# echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
# echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
# echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
# - name: Add CL to PATH
|
||||
# uses: ilammy/msvc-dev-cmd@v1
|
||||
# with:
|
||||
# arch: amd64_x86
|
||||
# - uses: actions/checkout@v2
|
||||
# with:
|
||||
# path: src
|
||||
# - name: Configure
|
||||
# run: |
|
||||
# mkdir build
|
||||
# cd build
|
||||
# cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src
|
||||
# - name: Build
|
||||
# run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
|
||||
|
1
.github/workflows/stale.yml
vendored
1
.github/workflows/stale.yml
vendored
@@ -26,6 +26,7 @@ jobs:
|
||||
days-before-close: 14
|
||||
days-before-issue-close: -1
|
||||
exempt-all-assignees: true
|
||||
exempt-draft-pr: true
|
||||
stale-pr-message: 'This PR is stale because it received no updates in the last 4 months. Without removing the stale label, or commenting on this ticket it will be closed in 2 weeks.'
|
||||
stale-issue-label: 'no-issue-activity'
|
||||
stale-pr-label: 'no-pr-activity'
|
||||
|
@@ -1,41 +1,48 @@
|
||||
/*
|
||||
* PROJECT: ReactOS FC Command
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2022 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_USAGE "Compares two files or sets of files and displays the differences between\n\
|
||||
them.\n\
|
||||
IDS_USAGE "Compară două fișiere sau seturi de fișiere și afișează diferențele dintre\n\
|
||||
ele.\n\
|
||||
\n\
|
||||
FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W] [/nnnn]\n\
|
||||
[drive1:][path1]filename1 [drive2:][path2]filename2\n\
|
||||
FC /B [drive1:][path1]filename1 [drive2:][path2]filename2\n\
|
||||
[discul1:][calea1]numele fișierului1 [discul2:][calea2]numele fișierului2\n\
|
||||
FC /B [discul1:][calea1]numele fișierului1 [drive2:][path2]numele fișierului2\n\
|
||||
\n\
|
||||
/A Displays only first and last lines for each set of differences.\n\
|
||||
/B Performs a binary comparison.\n\
|
||||
/C Disregards the case of letters.\n\
|
||||
/L Compares files as ASCII text.\n\
|
||||
/LBn Sets the maximum consecutive mismatches to the specified\n\
|
||||
number of lines (default: 100).\n\
|
||||
/N Displays the line numbers on an ASCII comparison.\n\
|
||||
/OFF[LINE] Doesn't skip files with offline attribute set.\n\
|
||||
/T Doesn't expand tabs to spaces (default: expand).\n\
|
||||
/U Compare files as UNICODE text files.\n\
|
||||
/W Compresses white space (tabs and spaces) for comparison.\n\
|
||||
/nnnn Specifies the number of consecutive lines that must match\n\
|
||||
after a mismatch (default: 2).\n\
|
||||
[drive1:][path1]filename1\n\
|
||||
Specifies the first file or set of files to compare.\n\
|
||||
[drive2:][path2]filename2\n\
|
||||
Specifies the second file or set of files to compare.\n"
|
||||
IDS_NO_DIFFERENCE "FC: no differences encountered\n"
|
||||
IDS_LONGER_THAN "FC: %ls longer than %ls\n"
|
||||
IDS_COMPARING "Comparing files %ls and %ls\n"
|
||||
IDS_OUT_OF_MEMORY "FC: Out of memory\n"
|
||||
IDS_CANNOT_READ "FC: cannot read from %ls\n"
|
||||
IDS_INVALID_SWITCH "FC: Invalid Switch\n"
|
||||
IDS_CANNOT_OPEN "FC: cannot open %ls - No such file or folder\n"
|
||||
IDS_NEEDS_FILES "FC: Insufficient number of file specifications\n"
|
||||
IDS_CANT_USE_WILDCARD "Wildcard ('*' and '?') are not supported yet\n"
|
||||
IDS_DIFFERENT "FC: File %ls and %ls are different\n"
|
||||
IDS_TOO_LARGE "FC: File %ls too large\n"
|
||||
IDS_RESYNC_FAILED "Resync failed. Files are too different.\n"
|
||||
/A Afișează numai prima și ultima linie pentru fiecare set de diferențe.\n\
|
||||
/B Efectuează o comparație binară.\n\
|
||||
/C Ignoră cazul literelor.\n\
|
||||
/L Compară fișierele ca text ASCII.\n\
|
||||
/LBn Setează numărul maxim consecutiv de nepotriviri la numărul\n\
|
||||
de linii specificat (implicit: 100).\n\
|
||||
/N Afișează numerele de linii într-o comparație ASCII.\n\
|
||||
/OFF[LINE] Nu ignoră fișierele cu atribute deconectate setate.\n\
|
||||
/T Nu extinde taburile la spații (implicit: extinde).\n\
|
||||
/U Compară fișierele ca fișierele text UNICODE.\n\
|
||||
/W Comprimă spațiul alb (taburi și spații) pentru comparație.\n\
|
||||
/nnnn Specifică un număr de linii consecutive ce trebuie să se potrivească\n\
|
||||
după o nepotrivire (implicit: 2).\n\
|
||||
[disc1:][cale1]numele fișierului1\n\
|
||||
Specifică primul fișier sau set de fișiere de comparat.\n\
|
||||
[disc2:][cale2]numele fișierului2\n\
|
||||
Specifică al doilea fișier sau set de fișiere de comparat.\n"
|
||||
IDS_NO_DIFFERENCE "FC: nu a fost întâlnită nicio diferență\n"
|
||||
IDS_LONGER_THAN "FC: %ls e mai mare decât %ls\n"
|
||||
IDS_COMPARING "Compararea fișierelor %ls și %ls\n"
|
||||
IDS_OUT_OF_MEMORY "FC: Fără memorie\n"
|
||||
IDS_CANNOT_READ "FC: nu poate fi citit din %ls\n"
|
||||
IDS_INVALID_SWITCH "FC: Comutator nevalidh\n"
|
||||
IDS_CANNOT_OPEN "FC: nu poate fi deschis %ls - Nu există un astfel de fișier sau dosar\n"
|
||||
IDS_NEEDS_FILES "FC: Număr insuficient de specificații pentru fișiere\n"
|
||||
IDS_CANT_USE_WILDCARD "Semnele speciale ('*' și '?') nu sunt acceptate deocamdată\n"
|
||||
IDS_DIFFERENT "FC: Fișierele %ls și %ls sunt diferite\n"
|
||||
IDS_TOO_LARGE "FC: Fișierul %ls este prea mare\n"
|
||||
IDS_RESYNC_FAILED "Resincronizare eșuată. Fișierele sunt prea diferite.\n"
|
||||
END
|
||||
|
@@ -9,9 +9,9 @@ CAPTION "Programa de diagnóstico de ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "Ay&uda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "Ay&uda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Siguiente página", IDC_BUTTON_NEXT, 107, 260, 80, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Guardar toda la información...", IDC_BUTTON_SAVE_INFO, 201, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Guardar toda la información...", IDC_BUTTON_SAVE_INFO, 201, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "Sa&lir", IDC_BUTTON_EXIT, 323, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -9,9 +9,9 @@ CAPTION "ReactX 분석 도구"
|
||||
FONT 9, "굴림"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "도움말(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "도움말(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "다음 장(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "모든 정보 저장(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "모든 정보 저장(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "종료(&E)", IDC_BUTTON_EXIT, 425, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -7,9 +7,9 @@ CAPTION "Diagnostisch hulpprogramma voor ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Help", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Help", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Volgende Pagina", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Alle gegevens opslaan...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Alle gegevens opslaan...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Afsluiten", IDC_BUTTON_EXIT, 425, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -7,9 +7,9 @@ CAPTION "ReactX-diagnose program"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Hjelp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Hjelp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Neste side", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Lagre alt informasjon...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Lagre alt informasjon...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Avslutt", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -16,9 +16,9 @@ CAPTION "Narzędzie diagnostyki ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Pomoc", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Pomoc", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Następna", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Zapisz wszystkie informacje...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Zapisz wszystkie informacje...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Wyjście", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -9,9 +9,9 @@ CAPTION "Programa de Diagnóstico ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Ajuda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ajuda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Próxima página", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "Sal&var Informações...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "Sal&var Informações...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "Sai&r", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -13,9 +13,9 @@ CAPTION "Diagnostic ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Manual…", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Manual…", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Următorul compartiment", IDC_BUTTON_NEXT, 187, 260, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Păstrare informații…", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Păstrare informații…", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "Î&nchide", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -12,9 +12,9 @@ CAPTION "ReactX - diagnostický program"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Pomocník", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Pomocník", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "Ďalšia stra&na", IDC_BUTTON_NEXT, 250, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Uložiť všetky informácie...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Uložiť všetky informácie...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Skončiť", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -11,9 +11,9 @@ CAPTION "ReactX-Programi i diaknostikimit"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Ndihmë", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ndihmë", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Faqja tjetër", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ruaj të gjithë informacionet...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ruaj të gjithë informacionet...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Dil", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -14,9 +14,9 @@ CAPTION "ReactX-diagnos program"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Hjälp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Hjälp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Nästa sida", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Spara all information...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Spara all information...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Avsluta", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -10,9 +10,9 @@ CAPTION "ReactX Tanı Aracı"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Yardım", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Yardım", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "S&onraki Sayfa", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Tüm Bilgileri Sakla...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Tüm Bilgileri Sakla...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Çıkış", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -15,9 +15,9 @@ CAPTION "Засіб діагностики ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Довідка", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Довідка", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Наступна сторінка", IDC_BUTTON_NEXT, 203, 260, 94, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Зберегти всю інформацію...", IDC_BUTTON_SAVE_INFO, 301, 260, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Зберегти всю інформацію...", IDC_BUTTON_SAVE_INFO, 301, 260, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Вихід", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -16,9 +16,9 @@ CAPTION "ReactX 诊断工具"
|
||||
FONT 9, "宋体"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "帮助(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "帮助(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "下一页(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "保存所有信息(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "保存所有信息(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "退出(&E)", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -15,9 +15,9 @@ CAPTION "ReactX 診斷程式"
|
||||
FONT 9, "新細明體"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "説明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "説明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "下一頁(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "結束(&E)", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -15,9 +15,9 @@ CAPTION "ReactX 診斷程式"
|
||||
FONT 9, "新細明體"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "說明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "說明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "下一頁(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "結束(&E)", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -1,23 +1,8 @@
|
||||
/*
|
||||
* fontview display class
|
||||
*
|
||||
* display.c
|
||||
*
|
||||
* Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Display class
|
||||
* COPYRIGHT: Copyright 2007 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -37,488 +22,488 @@ LRESULT CALLBACK DisplayProc(HWND, UINT, WPARAM, LPARAM);
|
||||
/* Internal data storage type */
|
||||
typedef struct
|
||||
{
|
||||
int nPageHeight;
|
||||
WCHAR szTypeFaceName[LF_FULLFACESIZE];
|
||||
WCHAR szFormat[MAX_FORMAT];
|
||||
WCHAR szString[MAX_STRING];
|
||||
int nPageHeight;
|
||||
WCHAR szTypeFaceName[LF_FULLFACESIZE];
|
||||
WCHAR szFormat[MAX_FORMAT];
|
||||
WCHAR szString[MAX_STRING];
|
||||
|
||||
HFONT hCaptionFont;
|
||||
HFONT hCharSetFont;
|
||||
HFONT hSizeFont;
|
||||
HFONT hFonts[MAX_SIZES];
|
||||
int nSizes[MAX_SIZES];
|
||||
int nHeights[MAX_SIZES];
|
||||
HFONT hCaptionFont;
|
||||
HFONT hCharSetFont;
|
||||
HFONT hSizeFont;
|
||||
HFONT hFonts[MAX_SIZES];
|
||||
int nSizes[MAX_SIZES];
|
||||
int nHeights[MAX_SIZES];
|
||||
} DISPLAYDATA;
|
||||
|
||||
/* This is the only public function, it registers the class */
|
||||
BOOL
|
||||
Display_InitClass(HINSTANCE hInstance)
|
||||
{
|
||||
WNDCLASSEXW wincl;
|
||||
WNDCLASSEXW wincl;
|
||||
|
||||
/* Set the fontdisplay window class structure */
|
||||
wincl.cbSize = sizeof(WNDCLASSEX);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = DisplayProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hInstance;
|
||||
wincl.hIcon = NULL;
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = GetStockObject(WHITE_BRUSH);
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontDisplayClassName;
|
||||
wincl.hIconSm = NULL;
|
||||
/* Set the fontdisplay window class structure */
|
||||
wincl.cbSize = sizeof(WNDCLASSEX);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = DisplayProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hInstance;
|
||||
wincl.hIcon = NULL;
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = GetStockObject(WHITE_BRUSH);
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontDisplayClassName;
|
||||
wincl.hIconSm = NULL;
|
||||
|
||||
/* Register the window class, and if it fails return FALSE */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
/* Register the window class, and if it fails return FALSE */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
Display_DrawText(HDC hDC, DISPLAYDATA* pData, int nYPos)
|
||||
{
|
||||
HFONT hOldFont;
|
||||
TEXTMETRIC tm;
|
||||
int i, y;
|
||||
WCHAR szSize[5];
|
||||
WCHAR szCaption[LF_FULLFACESIZE + 20];
|
||||
HFONT hOldFont;
|
||||
TEXTMETRIC tm;
|
||||
int i, y;
|
||||
WCHAR szSize[5];
|
||||
WCHAR szCaption[LF_FULLFACESIZE + 20];
|
||||
|
||||
/* This is the location on the DC where we draw */
|
||||
y = -nYPos;
|
||||
/* This is the location on the DC where we draw */
|
||||
y = -nYPos;
|
||||
|
||||
hOldFont = SelectObject(hDC, pData->hCaptionFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
hOldFont = SelectObject(hDC, pData->hCaptionFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
|
||||
swprintf(szCaption, L"%s%s", pData->szTypeFaceName, pData->szFormat);
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + SPACING1;
|
||||
swprintf(szCaption, L"%s%s", pData->szTypeFaceName, pData->szFormat);
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + SPACING1;
|
||||
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
|
||||
/* TODO: Output font info */
|
||||
/* TODO: Output font info */
|
||||
|
||||
/* Output Character set */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
swprintf(szCaption, L"abcdefghijklmnopqrstuvwxyz");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
/* Output Character set */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
swprintf(szCaption, L"abcdefghijklmnopqrstuvwxyz");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
swprintf(szCaption, L"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
swprintf(szCaption, L"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
swprintf(szCaption, L"0123456789.:,;(\"~!@#$%%^&*')");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
swprintf(szCaption, L"0123456789.:,;(\"~!@#$%%^&*')");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
|
||||
/* Output the strings for different sizes */
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
SelectObject(hDC, pData->hFonts[i]);
|
||||
TextOutW(hDC, 20, y, pData->szString, (INT)wcslen(pData->szString));
|
||||
GetTextMetrics(hDC, &tm);
|
||||
y += tm.tmHeight + 1;
|
||||
SelectObject(hDC, pData->hSizeFont);
|
||||
swprintf(szSize, L"%d", pData->nSizes[i]);
|
||||
TextOutW(hDC, 0, y - 13 - tm.tmDescent, szSize, (INT)wcslen(szSize));
|
||||
}
|
||||
SelectObject(hDC, hOldFont);
|
||||
/* Output the strings for different sizes */
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
SelectObject(hDC, pData->hFonts[i]);
|
||||
TextOutW(hDC, 20, y, pData->szString, (INT)wcslen(pData->szString));
|
||||
GetTextMetrics(hDC, &tm);
|
||||
y += tm.tmHeight + 1;
|
||||
SelectObject(hDC, pData->hSizeFont);
|
||||
swprintf(szSize, L"%d", pData->nSizes[i]);
|
||||
TextOutW(hDC, 0, y - 13 - tm.tmDescent, szSize, (INT)wcslen(szSize));
|
||||
}
|
||||
SelectObject(hDC, hOldFont);
|
||||
|
||||
return y;
|
||||
return y;
|
||||
}
|
||||
|
||||
static int
|
||||
CALLBACK
|
||||
EnumFontFamProcW(
|
||||
const LOGFONTW *lpelfe,
|
||||
const TEXTMETRICW *lptm,
|
||||
DWORD FontType,
|
||||
LPARAM lParam)
|
||||
const LOGFONTW *lpelfe,
|
||||
const TEXTMETRICW *lptm,
|
||||
DWORD FontType,
|
||||
LPARAM lParam)
|
||||
{
|
||||
PNEWTEXTMETRICW pntmw = (PNEWTEXTMETRICW)lptm;
|
||||
PBOOL pfOpenType = (PBOOL)lParam;
|
||||
PNEWTEXTMETRICW pntmw = (PNEWTEXTMETRICW)lptm;
|
||||
PBOOL pfOpenType = (PBOOL)lParam;
|
||||
|
||||
if (FontType & TRUETYPE_FONTTYPE)
|
||||
{
|
||||
if (pntmw->ntmFlags & (NTM_TT_OPENTYPE | NTM_PS_OPENTYPE))
|
||||
{
|
||||
*pfOpenType = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
if (FontType & TRUETYPE_FONTTYPE)
|
||||
{
|
||||
if (pntmw->ntmFlags & (NTM_TT_OPENTYPE | NTM_PS_OPENTYPE))
|
||||
{
|
||||
*pfOpenType = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_SetTypeFace(HWND hwnd, PLOGFONTW pLogFont)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
TEXTMETRIC tm;
|
||||
HDC hDC;
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int i;
|
||||
LOGFONTW logfont;
|
||||
BOOL fOpenType;
|
||||
BYTE Buffer[512];
|
||||
LPOUTLINETEXTMETRICW pOTM = (LPOUTLINETEXTMETRICW)Buffer;
|
||||
LPWSTR pch;
|
||||
DISPLAYDATA* pData;
|
||||
TEXTMETRIC tm;
|
||||
HDC hDC;
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int i;
|
||||
LOGFONTW logfont;
|
||||
BOOL fOpenType;
|
||||
BYTE Buffer[512];
|
||||
LPOUTLINETEXTMETRICW pOTM = (LPOUTLINETEXTMETRICW)Buffer;
|
||||
LPWSTR pch;
|
||||
|
||||
/* Set the new type face name */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szTypeFaceName, pLogFont->lfFaceName,
|
||||
ARRAYSIZE(pData->szTypeFaceName));
|
||||
/* Set the new type face name */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szTypeFaceName, pLogFont->lfFaceName,
|
||||
ARRAYSIZE(pData->szTypeFaceName));
|
||||
|
||||
/* Create the new fonts */
|
||||
hDC = GetDC(hwnd);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
/* Create the new fonts */
|
||||
hDC = GetDC(hwnd);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
|
||||
logfont = *pLogFont;
|
||||
logfont.lfHeight = -MulDiv(16, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72);
|
||||
pData->hCharSetFont = CreateFontIndirectW(&logfont);
|
||||
logfont = *pLogFont;
|
||||
logfont.lfHeight = -MulDiv(16, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72);
|
||||
pData->hCharSetFont = CreateFontIndirectW(&logfont);
|
||||
|
||||
/* Get font format */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
if (tm.tmPitchAndFamily & TMPF_TRUETYPE)
|
||||
{
|
||||
if (GetOutlineTextMetricsW(hDC, sizeof(Buffer), pOTM))
|
||||
{
|
||||
LPBYTE pb = Buffer;
|
||||
pb += (WORD)(DWORD_PTR)pOTM->otmpStyleName;
|
||||
pch = (LPWSTR)pb;
|
||||
if (*pch)
|
||||
{
|
||||
lstrcatW(pData->szTypeFaceName, L" ");
|
||||
lstrcatW(pData->szTypeFaceName, pch);
|
||||
}
|
||||
}
|
||||
/* Get font format */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
if (tm.tmPitchAndFamily & TMPF_TRUETYPE)
|
||||
{
|
||||
if (GetOutlineTextMetricsW(hDC, sizeof(Buffer), pOTM))
|
||||
{
|
||||
LPBYTE pb = Buffer;
|
||||
pb += (WORD)(DWORD_PTR)pOTM->otmpStyleName;
|
||||
pch = (LPWSTR)pb;
|
||||
if (*pch)
|
||||
{
|
||||
lstrcatW(pData->szTypeFaceName, L" ");
|
||||
lstrcatW(pData->szTypeFaceName, pch);
|
||||
}
|
||||
}
|
||||
|
||||
fOpenType = FALSE;
|
||||
EnumFontFamiliesExW(hDC, &logfont,
|
||||
EnumFontFamProcW, (LPARAM)&fOpenType, 0);
|
||||
fOpenType = FALSE;
|
||||
EnumFontFamiliesExW(hDC, &logfont,
|
||||
EnumFontFamProcW, (LPARAM)&fOpenType, 0);
|
||||
|
||||
if (fOpenType)
|
||||
swprintf(pData->szFormat, L" (OpenType)");
|
||||
else
|
||||
swprintf(pData->szFormat, L" (TrueType)");
|
||||
}
|
||||
else if (tm.tmPitchAndFamily & TMPF_VECTOR)
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Vector)");
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Raster)");
|
||||
}
|
||||
if (fOpenType)
|
||||
swprintf(pData->szFormat, L" (OpenType)");
|
||||
else
|
||||
swprintf(pData->szFormat, L" (TrueType)");
|
||||
}
|
||||
else if (tm.tmPitchAndFamily & TMPF_VECTOR)
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Vector)");
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Raster)");
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
logfont.lfHeight = -MulDiv(pData->nSizes[i], GetDeviceCaps(hDC, LOGPIXELSY), 72);
|
||||
pData->hFonts[i] = CreateFontIndirectW(&logfont);
|
||||
}
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
logfont.lfHeight = -MulDiv(pData->nSizes[i], GetDeviceCaps(hDC, LOGPIXELSY), 72);
|
||||
pData->hFonts[i] = CreateFontIndirectW(&logfont);
|
||||
}
|
||||
|
||||
/* Calculate new page dimensions */
|
||||
pData->nPageHeight = Display_DrawText(hDC, pData, 0);
|
||||
ReleaseDC(hwnd, hDC);
|
||||
/* Calculate new page dimensions */
|
||||
pData->nPageHeight = Display_DrawText(hDC, pData, 0);
|
||||
ReleaseDC(hwnd, hDC);
|
||||
|
||||
/* Set the vertical scrolling range and page size */
|
||||
GetClientRect(hwnd, &rect);
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS;
|
||||
si.nMin = 0;
|
||||
si.nMax = pData->nPageHeight;
|
||||
si.nPage = rect.bottom;
|
||||
si.nPos = 0;
|
||||
si.nTrackPos = 0;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
/* Set the vertical scrolling range and page size */
|
||||
GetClientRect(hwnd, &rect);
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS;
|
||||
si.nMin = 0;
|
||||
si.nMax = pData->nPageHeight;
|
||||
si.nPage = rect.bottom;
|
||||
si.nPos = 0;
|
||||
si.nTrackPos = 0;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_SetString(HWND hwnd, LPCWSTR pszString)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
DISPLAYDATA* pData;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szString, pszString, ARRAYSIZE(pData->szString));
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szString, pszString, ARRAYSIZE(pData->szString));
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnCreate(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
const int nSizes[MAX_SIZES] = {8, 12, 18, 24, 36, 48, 60, 72};
|
||||
int i;
|
||||
LOGFONTW LogFont = {50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
|
||||
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
|
||||
CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
|
||||
DEFAULT_PITCH , L"MS Shell Dlg"};
|
||||
DISPLAYDATA* pData;
|
||||
const int nSizes[MAX_SIZES] = {8, 12, 18, 24, 36, 48, 60, 72};
|
||||
int i;
|
||||
LOGFONTW LogFont = {50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
|
||||
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
|
||||
CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
|
||||
DEFAULT_PITCH , L"MS Shell Dlg"};
|
||||
|
||||
/* Create data structure */
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
/* Create data structure */
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
|
||||
/* Set the window's GWLP_USERDATA to our data structure */
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pData);
|
||||
/* Set the window's GWLP_USERDATA to our data structure */
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pData);
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
pData->nSizes[i] = nSizes[i];
|
||||
}
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
pData->nSizes[i] = nSizes[i];
|
||||
}
|
||||
|
||||
pData->hCaptionFont = CreateFontIndirectW(&LogFont);
|
||||
LogFont.lfHeight = 12;
|
||||
pData->hSizeFont = CreateFontIndirectW(&LogFont);
|
||||
pData->hCaptionFont = CreateFontIndirectW(&LogFont);
|
||||
LogFont.lfHeight = 12;
|
||||
pData->hSizeFont = CreateFontIndirectW(&LogFont);
|
||||
|
||||
Display_SetString(hwnd,
|
||||
L"Jackdaws love my big sphinx of quartz. 1234567890");
|
||||
Display_SetString(hwnd,
|
||||
L"Jackdaws love my big sphinx of quartz. 1234567890");
|
||||
|
||||
Display_SetTypeFace(hwnd, &LogFont);
|
||||
Display_SetTypeFace(hwnd, &LogFont);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnPaint(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
PAINTSTRUCT ps;
|
||||
SCROLLINFO si;
|
||||
DISPLAYDATA* pData;
|
||||
PAINTSTRUCT ps;
|
||||
SCROLLINFO si;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
|
||||
/* Get the Scroll position */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
/* Get the Scroll position */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
BeginPaint(hwnd, &ps);
|
||||
BeginPaint(hwnd, &ps);
|
||||
|
||||
/* Erase background */
|
||||
FillRect(ps.hdc, &ps.rcPaint, GetStockObject(WHITE_BRUSH));
|
||||
/* Erase background */
|
||||
FillRect(ps.hdc, &ps.rcPaint, GetStockObject(WHITE_BRUSH));
|
||||
|
||||
/* Draw the text */
|
||||
Display_DrawText(ps.hdc, pData, si.nPos);
|
||||
/* Draw the text */
|
||||
Display_DrawText(ps.hdc, pData, si.nPos);
|
||||
|
||||
EndPaint(hwnd, &ps);
|
||||
EndPaint(hwnd, &ps);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnSize(HWND hwnd)
|
||||
{
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int nOldPos;
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int nOldPos;
|
||||
|
||||
GetClientRect(hwnd, &rect);
|
||||
GetClientRect(hwnd, &rect);
|
||||
|
||||
/* Get the old scroll pos */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
nOldPos = si.nPos;
|
||||
/* Get the old scroll pos */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
nOldPos = si.nPos;
|
||||
|
||||
/* Set the new page size */
|
||||
si.fMask = SIF_PAGE;
|
||||
si.nPage = rect.bottom;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
/* Set the new page size */
|
||||
si.fMask = SIF_PAGE;
|
||||
si.nPage = rect.bottom;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
|
||||
/* Get the new scroll pos */
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
/* Get the new scroll pos */
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
/* If they don't match ... */
|
||||
if (nOldPos != si.nPos)
|
||||
{
|
||||
/* ... scroll the window */
|
||||
ScrollWindowEx(hwnd, 0, nOldPos - si.nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
/* If they don't match ... */
|
||||
if (nOldPos != si.nPos)
|
||||
{
|
||||
/* ... scroll the window */
|
||||
ScrollWindowEx(hwnd, 0, nOldPos - si.nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnVScroll(HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
SCROLLINFO si;
|
||||
int nPos;
|
||||
SCROLLINFO si;
|
||||
int nPos;
|
||||
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS | SIF_RANGE | SIF_TRACKPOS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS | SIF_RANGE | SIF_TRACKPOS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case SB_PAGEUP:
|
||||
nPos = si.nPos - 50;
|
||||
break;
|
||||
case SB_PAGEDOWN:
|
||||
nPos = si.nPos + 50;
|
||||
break;
|
||||
case SB_LINEUP:
|
||||
nPos = si.nPos - 10;
|
||||
break;
|
||||
case SB_LINEDOWN:
|
||||
nPos = si.nPos + 10;
|
||||
break;
|
||||
case SB_THUMBTRACK:
|
||||
case SB_THUMBPOSITION:
|
||||
nPos = si.nTrackPos;
|
||||
break;
|
||||
default:
|
||||
nPos = si.nPos;
|
||||
}
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case SB_PAGEUP:
|
||||
nPos = si.nPos - 50;
|
||||
break;
|
||||
case SB_PAGEDOWN:
|
||||
nPos = si.nPos + 50;
|
||||
break;
|
||||
case SB_LINEUP:
|
||||
nPos = si.nPos - 10;
|
||||
break;
|
||||
case SB_LINEDOWN:
|
||||
nPos = si.nPos + 10;
|
||||
break;
|
||||
case SB_THUMBTRACK:
|
||||
case SB_THUMBPOSITION:
|
||||
nPos = si.nTrackPos;
|
||||
break;
|
||||
default:
|
||||
nPos = si.nPos;
|
||||
}
|
||||
|
||||
nPos = max(nPos, si.nMin);
|
||||
nPos = min(nPos, si.nMax);
|
||||
if (nPos != si.nPos)
|
||||
{
|
||||
ScrollWindowEx(hwnd, 0, si.nPos - nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
si.cbSize = sizeof(si);
|
||||
si.nPos = nPos;
|
||||
si.fMask = SIF_POS;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
nPos = max(nPos, si.nMin);
|
||||
nPos = min(nPos, si.nMax);
|
||||
if (nPos != si.nPos)
|
||||
{
|
||||
ScrollWindowEx(hwnd, 0, si.nPos - nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
si.cbSize = sizeof(si);
|
||||
si.nPos = nPos;
|
||||
si.fMask = SIF_POS;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnDestroy(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
int i;
|
||||
DISPLAYDATA* pData;
|
||||
int i;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
|
||||
/* Delete the fonts */
|
||||
DeleteObject(pData->hCaptionFont);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
DeleteObject(pData->hSizeFont);
|
||||
/* Delete the fonts */
|
||||
DeleteObject(pData->hCaptionFont);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
DeleteObject(pData->hSizeFont);
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
}
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
}
|
||||
|
||||
/* Free the data structure */
|
||||
free(pData);
|
||||
/* Free the data structure */
|
||||
free(pData);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT
|
||||
Display_OnPrint(HWND hwnd)
|
||||
{
|
||||
PRINTDLG pfont;
|
||||
TEXTMETRIC tm;
|
||||
int copies, yPos;
|
||||
PRINTDLG pfont;
|
||||
TEXTMETRIC tm;
|
||||
int copies, yPos;
|
||||
|
||||
/* Clears the memory before using it */
|
||||
ZeroMemory(&pfont, sizeof(pfont));
|
||||
/* Clears the memory before using it */
|
||||
ZeroMemory(&pfont, sizeof(pfont));
|
||||
|
||||
pfont.lStructSize = sizeof(pfont);
|
||||
pfont.hwndOwner = hwnd;
|
||||
pfont.hDevMode = NULL;
|
||||
pfont.hDevNames = NULL;
|
||||
pfont.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
|
||||
pfont.nCopies = 1;
|
||||
pfont.nFromPage = 0xFFFF;
|
||||
pfont.nToPage = 0xFFFF;
|
||||
pfont.nMinPage = 1;
|
||||
pfont.nMaxPage = 0xFFFF;
|
||||
pfont.lStructSize = sizeof(pfont);
|
||||
pfont.hwndOwner = hwnd;
|
||||
pfont.hDevMode = NULL;
|
||||
pfont.hDevNames = NULL;
|
||||
pfont.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
|
||||
pfont.nCopies = 1;
|
||||
pfont.nFromPage = 0xFFFF;
|
||||
pfont.nToPage = 0xFFFF;
|
||||
pfont.nMinPage = 1;
|
||||
pfont.nMaxPage = 0xFFFF;
|
||||
|
||||
/* Opens up the print dialog box */
|
||||
if (PrintDlg(&pfont))
|
||||
{
|
||||
DOCINFO docinfo;
|
||||
/* Opens up the print dialog box */
|
||||
if (PrintDlg(&pfont))
|
||||
{
|
||||
DOCINFO docinfo;
|
||||
#if 0
|
||||
DISPLAYDATA* pData;
|
||||
DISPLAYDATA* pData;
|
||||
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
|
||||
/* Sets up the font layout */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
/* Sets up the font layout */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
#endif
|
||||
docinfo.cbSize = sizeof(DOCINFO);
|
||||
docinfo.lpszDocName = L"Printing Font";
|
||||
docinfo.lpszOutput = NULL;
|
||||
docinfo.lpszDatatype = NULL;
|
||||
docinfo.fwType = 0;
|
||||
docinfo.cbSize = sizeof(DOCINFO);
|
||||
docinfo.lpszDocName = L"Printing Font";
|
||||
docinfo.lpszOutput = NULL;
|
||||
docinfo.lpszDatatype = NULL;
|
||||
docinfo.fwType = 0;
|
||||
|
||||
/* We start printing */
|
||||
StartDoc(pfont.hDC, &docinfo);
|
||||
/* We start printing */
|
||||
StartDoc(pfont.hDC, &docinfo);
|
||||
|
||||
/* Grabs the text metrics for the printer */
|
||||
GetTextMetrics(pfont.hDC, &tm);
|
||||
/* Grabs the text metrics for the printer */
|
||||
GetTextMetrics(pfont.hDC, &tm);
|
||||
|
||||
/* Start out with 0 for the y position for the page */
|
||||
yPos = 0;
|
||||
/* Start out with 0 for the y position for the page */
|
||||
yPos = 0;
|
||||
|
||||
/* Starts out with the current page */
|
||||
StartPage(pfont.hDC);
|
||||
/* Starts out with the current page */
|
||||
StartPage(pfont.hDC);
|
||||
|
||||
/* Used when printing for more than one copy */
|
||||
for (copies = 0; copies < pfont.nCopies; copies++)
|
||||
{
|
||||
/* Test output */
|
||||
TextOutW(pfont.hDC, 10, yPos, L"Testing...1...2...3", 19);
|
||||
/* Used when printing for more than one copy */
|
||||
for (copies = 0; copies < pfont.nCopies; copies++)
|
||||
{
|
||||
/* Test output */
|
||||
TextOutW(pfont.hDC, 10, yPos, L"Testing...1...2...3", 19);
|
||||
|
||||
/* TODO: Determine if using Display_DrawText() will work for both rendering out to the
|
||||
window and to the printer output */
|
||||
/* TODO: Determine if using Display_DrawText() will work for both rendering out to the
|
||||
window and to the printer output */
|
||||
#if 0
|
||||
Display_DrawText(pfont.hDC, pData, yPos);
|
||||
Display_DrawText(pfont.hDC, pData, yPos);
|
||||
#endif
|
||||
|
||||
/* Ends the current page */
|
||||
EndPage(pfont.hDC);
|
||||
/* Ends the current page */
|
||||
EndPage(pfont.hDC);
|
||||
|
||||
/* If we are making more than one copy, start a new page */
|
||||
if (copies != pfont.nCopies)
|
||||
{
|
||||
yPos = 0;
|
||||
StartPage(pfont.hDC);
|
||||
}
|
||||
}
|
||||
/* If we are making more than one copy, start a new page */
|
||||
if (copies != pfont.nCopies)
|
||||
{
|
||||
yPos = 0;
|
||||
StartPage(pfont.hDC);
|
||||
}
|
||||
}
|
||||
|
||||
/* The printing is now over */
|
||||
EndDoc(pfont.hDC);
|
||||
/* The printing is now over */
|
||||
EndDoc(pfont.hDC);
|
||||
|
||||
DeleteDC(pfont.hDC);
|
||||
DeleteDC(pfont.hDC);
|
||||
#if 0
|
||||
/* Frees the memory since we no longer need it for now */
|
||||
free(pData);
|
||||
/* Frees the memory since we no longer need it for now */
|
||||
free(pData);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT
|
||||
@@ -542,36 +527,35 @@ Display_GetFullName(HWND hwnd, INT length, PWSTR ptr)
|
||||
LRESULT CALLBACK
|
||||
DisplayProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return Display_OnCreate(hwnd);
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return Display_OnCreate(hwnd);
|
||||
|
||||
case WM_PAINT:
|
||||
return Display_OnPaint(hwnd);
|
||||
case WM_PAINT:
|
||||
return Display_OnPaint(hwnd);
|
||||
|
||||
case WM_SIZE:
|
||||
return Display_OnSize(hwnd);
|
||||
case WM_SIZE:
|
||||
return Display_OnSize(hwnd);
|
||||
|
||||
case WM_VSCROLL:
|
||||
return Display_OnVScroll(hwnd, wParam);
|
||||
case WM_VSCROLL:
|
||||
return Display_OnVScroll(hwnd, wParam);
|
||||
|
||||
case FVM_SETTYPEFACE:
|
||||
return Display_SetTypeFace(hwnd, (PLOGFONTW)lParam);
|
||||
case FVM_SETTYPEFACE:
|
||||
return Display_SetTypeFace(hwnd, (PLOGFONTW)lParam);
|
||||
|
||||
case FVM_SETSTRING:
|
||||
return Display_SetString(hwnd, (WCHAR *)lParam);
|
||||
case FVM_SETSTRING:
|
||||
return Display_SetString(hwnd, (WCHAR *)lParam);
|
||||
|
||||
case FVM_GETFULLNAME:
|
||||
return Display_GetFullName(hwnd, (INT)wParam, (PWSTR)lParam);
|
||||
case FVM_GETFULLNAME:
|
||||
return Display_GetFullName(hwnd, (INT)wParam, (PWSTR)lParam);
|
||||
|
||||
case WM_DESTROY:
|
||||
return Display_OnDestroy(hwnd);
|
||||
case WM_DESTROY:
|
||||
return Display_OnDestroy(hwnd);
|
||||
|
||||
default:
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
default:
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -1,24 +1,9 @@
|
||||
/*
|
||||
* fontview
|
||||
*
|
||||
* fontview.c
|
||||
*
|
||||
* Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org>
|
||||
* Copyright (C) 2016-2017 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Main source file
|
||||
* COPYRIGHT: Copyright 2007 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
* Copyright 2016-2017 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -47,50 +32,76 @@ BOOL WINAPI GetFontResourceInfoW(LPCWSTR lpFileName, DWORD *pdwBufSize, void* lp
|
||||
|
||||
DWORD
|
||||
FormatString(
|
||||
DWORD dwFlags,
|
||||
HINSTANCE hInstance,
|
||||
DWORD dwStringId,
|
||||
DWORD dwLanguageId,
|
||||
LPWSTR lpBuffer,
|
||||
DWORD nSize,
|
||||
va_list* Arguments
|
||||
DWORD dwFlags,
|
||||
HINSTANCE hInstance,
|
||||
DWORD dwStringId,
|
||||
DWORD dwLanguageId,
|
||||
LPWSTR lpBuffer,
|
||||
DWORD nSize,
|
||||
va_list* Arguments
|
||||
)
|
||||
{
|
||||
DWORD dwRet;
|
||||
int len;
|
||||
WCHAR Buffer[1000];
|
||||
DWORD dwRet;
|
||||
int len;
|
||||
WCHAR Buffer[1000];
|
||||
|
||||
len = LoadStringW(hInstance, dwStringId, (LPWSTR)Buffer, 1000);
|
||||
len = LoadStringW(hInstance, dwStringId, (LPWSTR)Buffer, 1000);
|
||||
|
||||
if (len)
|
||||
{
|
||||
dwFlags |= FORMAT_MESSAGE_FROM_STRING;
|
||||
dwFlags &= ~(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM);
|
||||
dwRet = FormatMessageW(dwFlags, Buffer, 0, dwLanguageId, lpBuffer, nSize, Arguments);
|
||||
return dwRet;
|
||||
}
|
||||
return 0;
|
||||
if (len)
|
||||
{
|
||||
dwFlags |= FORMAT_MESSAGE_FROM_STRING;
|
||||
dwFlags &= ~(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM);
|
||||
dwRet = FormatMessageW(dwFlags, Buffer, 0, dwLanguageId, lpBuffer, nSize, Arguments);
|
||||
return dwRet;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
ErrorMsgBox(HWND hParent, DWORD dwMessageId, ...)
|
||||
FormatMsgBox(
|
||||
_In_ HWND hParent,
|
||||
_In_ DWORD dwMessageId,
|
||||
_In_ DWORD dwCaptionId,
|
||||
_In_ UINT uType,
|
||||
_In_ va_list args)
|
||||
{
|
||||
HLOCAL hMemCaption = NULL;
|
||||
HLOCAL hMemText = NULL;
|
||||
va_list args;
|
||||
HLOCAL hMemCaption = NULL;
|
||||
HLOCAL hMemText = NULL;
|
||||
|
||||
va_start(args, dwMessageId);
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, dwMessageId, 0, (LPWSTR)&hMemText, 0, &args);
|
||||
va_end(args);
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, dwMessageId, 0, (LPWSTR)&hMemText, 0, &args);
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, dwCaptionId, 0, (LPWSTR)&hMemCaption, 0, NULL);
|
||||
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, IDS_ERROR, 0, (LPWSTR)&hMemCaption, 0, NULL);
|
||||
MessageBoxW(hParent, hMemText, hMemCaption, uType);
|
||||
LocalFree(hMemCaption);
|
||||
LocalFree(hMemText);
|
||||
}
|
||||
|
||||
MessageBoxW(hParent, hMemText, hMemCaption, MB_ICONERROR);
|
||||
static void
|
||||
ErrorMsgBox(
|
||||
HWND hParent,
|
||||
DWORD dwMessageId,
|
||||
...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
LocalFree(hMemCaption);
|
||||
LocalFree(hMemText);
|
||||
va_start(args, dwMessageId);
|
||||
FormatMsgBox(hParent, dwMessageId, IDS_ERROR, MB_ICONERROR, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
static void
|
||||
SuccessMsgBox(
|
||||
HWND hParent,
|
||||
DWORD dwMessageId,
|
||||
...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, dwMessageId);
|
||||
FormatMsgBox(hParent, dwMessageId, IDS_SUCCESS, MB_ICONINFORMATION, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
int WINAPI
|
||||
@@ -99,14 +110,14 @@ wWinMain(HINSTANCE hThisInstance,
|
||||
LPWSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
int argc;
|
||||
INT i;
|
||||
WCHAR** argv;
|
||||
DWORD dwSize;
|
||||
HWND hMainWnd;
|
||||
MSG msg;
|
||||
WNDCLASSEXW wincl;
|
||||
LPCWSTR fileName;
|
||||
int argc;
|
||||
INT i;
|
||||
WCHAR** argv;
|
||||
DWORD dwSize;
|
||||
HWND hMainWnd;
|
||||
MSG msg;
|
||||
WNDCLASSEXW wincl;
|
||||
LPCWSTR fileName;
|
||||
|
||||
switch (GetUserDefaultUILanguage())
|
||||
{
|
||||
@@ -118,48 +129,48 @@ wWinMain(HINSTANCE hThisInstance,
|
||||
break;
|
||||
}
|
||||
|
||||
g_hInstance = hThisInstance;
|
||||
g_hInstance = hThisInstance;
|
||||
|
||||
/* Get unicode command line */
|
||||
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (argc < 2)
|
||||
{
|
||||
/* Get unicode command line */
|
||||
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (argc < 2)
|
||||
{
|
||||
#if 0
|
||||
WCHAR szFileName[MAX_PATH] = L"";
|
||||
OPENFILENAMEW fontOpen;
|
||||
WCHAR szFileName[MAX_PATH] = L"";
|
||||
OPENFILENAMEW fontOpen;
|
||||
WCHAR filter[MAX_PATH*2] = {0}, dialogTitle[MAX_PATH];
|
||||
|
||||
LoadStringW(NULL, IDS_OPEN, dialogTitle, ARRAYSIZE(dialogTitle));
|
||||
LoadStringW(NULL, IDS_FILTER_LIST, filter, ARRAYSIZE(filter) - 1);
|
||||
LoadStringW(NULL, IDS_OPEN, dialogTitle, ARRAYSIZE(dialogTitle));
|
||||
LoadStringW(NULL, IDS_FILTER_LIST, filter, ARRAYSIZE(filter) - 1);
|
||||
|
||||
/* Clears out any values of fontOpen before we use it */
|
||||
ZeroMemory(&fontOpen, sizeof(fontOpen));
|
||||
/* Clears out any values of fontOpen before we use it */
|
||||
ZeroMemory(&fontOpen, sizeof(fontOpen));
|
||||
|
||||
/* Sets up the open dialog box */
|
||||
fontOpen.lStructSize = sizeof(fontOpen);
|
||||
fontOpen.hwndOwner = NULL;
|
||||
fontOpen.lpstrFilter = filter;
|
||||
fontOpen.lpstrFile = szFileName;
|
||||
fontOpen.lpstrTitle = dialogTitle;
|
||||
fontOpen.nMaxFile = MAX_PATH;
|
||||
fontOpen.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
||||
fontOpen.lpstrDefExt = L"ttf";
|
||||
/* Sets up the open dialog box */
|
||||
fontOpen.lStructSize = sizeof(fontOpen);
|
||||
fontOpen.hwndOwner = NULL;
|
||||
fontOpen.lpstrFilter = filter;
|
||||
fontOpen.lpstrFile = szFileName;
|
||||
fontOpen.lpstrTitle = dialogTitle;
|
||||
fontOpen.nMaxFile = MAX_PATH;
|
||||
fontOpen.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
||||
fontOpen.lpstrDefExt = L"ttf";
|
||||
|
||||
/* Opens up the Open File dialog box in order to chose a font file. */
|
||||
if(GetOpenFileNameW(&fontOpen))
|
||||
{
|
||||
fileName = fontOpen.lpstrFile;
|
||||
g_fileName = fileName;
|
||||
} else {
|
||||
/* If the user decides to close out of the open dialog effectively
|
||||
exiting the program altogether */
|
||||
return 0;
|
||||
}
|
||||
/* Opens up the Open File dialog box in order to chose a font file. */
|
||||
if(GetOpenFileNameW(&fontOpen))
|
||||
{
|
||||
fileName = fontOpen.lpstrFile;
|
||||
g_fileName = fileName;
|
||||
} else {
|
||||
/* If the user decides to close out of the open dialog effectively
|
||||
exiting the program altogether */
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Try to add the font resource from command line */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Try to add the font resource from command line */
|
||||
for (i = 1; i < argc; ++i)
|
||||
{
|
||||
// Treat the last argument as filename
|
||||
@@ -189,269 +200,269 @@ wWinMain(HINSTANCE hThisInstance,
|
||||
fileName = argv[i];
|
||||
}
|
||||
}
|
||||
g_fileName = fileName;
|
||||
}
|
||||
g_fileName = fileName;
|
||||
}
|
||||
|
||||
if (!AddFontResourceW(g_fileName))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, g_fileName);
|
||||
return -1;
|
||||
}
|
||||
if (!AddFontResourceW(g_fileName))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, g_fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Get the font name */
|
||||
dwSize = sizeof(g_LogFonts);
|
||||
ZeroMemory(g_LogFonts, sizeof(g_LogFonts));
|
||||
if (!GetFontResourceInfoW(fileName, &dwSize, g_LogFonts, 2))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
g_NumFonts = 0;
|
||||
for (i = 0; i < ARRAYSIZE(g_LogFonts); ++i)
|
||||
{
|
||||
if (g_LogFonts[i].lfFaceName[0] == 0)
|
||||
break;
|
||||
/* Get the font name */
|
||||
dwSize = sizeof(g_LogFonts);
|
||||
ZeroMemory(g_LogFonts, sizeof(g_LogFonts));
|
||||
if (!GetFontResourceInfoW(fileName, &dwSize, g_LogFonts, 2))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
g_NumFonts = 0;
|
||||
for (i = 0; i < ARRAYSIZE(g_LogFonts); ++i)
|
||||
{
|
||||
if (g_LogFonts[i].lfFaceName[0] == 0)
|
||||
break;
|
||||
|
||||
++g_NumFonts;
|
||||
}
|
||||
if (g_NumFonts == 0)
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
++g_NumFonts;
|
||||
}
|
||||
if (g_NumFonts == 0)
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* get font title */
|
||||
dwSize = sizeof(g_FontTitle);
|
||||
ZeroMemory(g_FontTitle, sizeof(g_FontTitle));
|
||||
GetFontResourceInfoW(fileName, &dwSize, g_FontTitle, 1);
|
||||
/* get font title */
|
||||
dwSize = sizeof(g_FontTitle);
|
||||
ZeroMemory(g_FontTitle, sizeof(g_FontTitle));
|
||||
GetFontResourceInfoW(fileName, &dwSize, g_FontTitle, 1);
|
||||
|
||||
if (!Display_InitClass(hThisInstance))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return -1;
|
||||
}
|
||||
if (!Display_InitClass(hThisInstance))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* The main window class */
|
||||
wincl.cbSize = sizeof (WNDCLASSEXW);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = MainWndProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hThisInstance;
|
||||
wincl.hIcon = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontViewClassName;
|
||||
wincl.hIconSm = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
/* The main window class */
|
||||
wincl.cbSize = sizeof (WNDCLASSEXW);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = MainWndProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hThisInstance;
|
||||
wincl.hIcon = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontViewClassName;
|
||||
wincl.hIconSm = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
|
||||
/* Register the window class, and if it fails quit the program */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return 0;
|
||||
}
|
||||
/* Register the window class, and if it fails quit the program */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* The class is registered, let's create the main window */
|
||||
hMainWnd = CreateWindowExW(
|
||||
0, /* Extended possibilities for variation */
|
||||
g_szFontViewClassName, /* Classname */
|
||||
g_FontTitle, /* Title Text */
|
||||
WS_OVERLAPPEDWINDOW, /* default window */
|
||||
CW_USEDEFAULT, /* Windows decides the position */
|
||||
CW_USEDEFAULT, /* where the window ends up on the screen */
|
||||
544, /* The programs width */
|
||||
375, /* and height in pixels */
|
||||
HWND_DESKTOP, /* The window is a child-window to desktop */
|
||||
NULL, /* No menu */
|
||||
hThisInstance, /* Program Instance handler */
|
||||
NULL /* No Window Creation data */
|
||||
);
|
||||
ShowWindow(hMainWnd, nCmdShow);
|
||||
/* The class is registered, let's create the main window */
|
||||
hMainWnd = CreateWindowExW(
|
||||
0, /* Extended possibilities for variation */
|
||||
g_szFontViewClassName, /* Classname */
|
||||
g_FontTitle, /* Title Text */
|
||||
WS_OVERLAPPEDWINDOW, /* default window */
|
||||
CW_USEDEFAULT, /* Windows decides the position */
|
||||
CW_USEDEFAULT, /* where the window ends up on the screen */
|
||||
544, /* The programs width */
|
||||
375, /* and height in pixels */
|
||||
HWND_DESKTOP, /* The window is a child-window to desktop */
|
||||
NULL, /* No menu */
|
||||
hThisInstance, /* Program Instance handler */
|
||||
NULL /* No Window Creation data */
|
||||
);
|
||||
ShowWindow(hMainWnd, nCmdShow);
|
||||
|
||||
/* Main message loop */
|
||||
while (GetMessage (&msg, NULL, 0, 0))
|
||||
{
|
||||
if (IsDialogMessage(hMainWnd, &msg))
|
||||
continue;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
/* Main message loop */
|
||||
while (GetMessage (&msg, NULL, 0, 0))
|
||||
{
|
||||
if (IsDialogMessage(hMainWnd, &msg))
|
||||
continue;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
RemoveFontResourceW(argv[1]);
|
||||
RemoveFontResourceW(argv[1]);
|
||||
|
||||
return (int)msg.wParam;
|
||||
return (int)msg.wParam;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnCreate(HWND hwnd)
|
||||
{
|
||||
WCHAR szQuit[MAX_BUTTONNAME];
|
||||
WCHAR szPrint[MAX_BUTTONNAME];
|
||||
WCHAR szString[MAX_STRING];
|
||||
WCHAR szPrevious[MAX_STRING];
|
||||
WCHAR szNext[MAX_STRING];
|
||||
HWND hDisplay, hButtonInstall, hButtonPrint, hButtonPrev, hButtonNext;
|
||||
WCHAR szQuit[MAX_BUTTONNAME];
|
||||
WCHAR szPrint[MAX_BUTTONNAME];
|
||||
WCHAR szString[MAX_STRING];
|
||||
WCHAR szPrevious[MAX_STRING];
|
||||
WCHAR szNext[MAX_STRING];
|
||||
HWND hDisplay, hButtonInstall, hButtonPrint, hButtonPrev, hButtonNext;
|
||||
|
||||
/* create the display window */
|
||||
hDisplay = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
g_szFontDisplayClassName, /* Classname */
|
||||
L"", /* Title text */
|
||||
WS_CHILD | WS_VSCROLL, /* Window style */
|
||||
0, /* X-pos */
|
||||
HEADER_SIZE, /* Y-Pos */
|
||||
550, /* Width */
|
||||
370-HEADER_SIZE, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_DISPLAY, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
/* create the display window */
|
||||
hDisplay = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
g_szFontDisplayClassName, /* Classname */
|
||||
L"", /* Title text */
|
||||
WS_CHILD | WS_VSCROLL, /* Window style */
|
||||
0, /* X-pos */
|
||||
HEADER_SIZE, /* Y-Pos */
|
||||
550, /* Width */
|
||||
370-HEADER_SIZE, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_DISPLAY, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
|
||||
LoadStringW(g_hInstance, IDS_STRING, szString, MAX_STRING);
|
||||
SendMessage(hDisplay, FVM_SETSTRING, 0, (LPARAM)szString);
|
||||
LoadStringW(g_hInstance, IDS_STRING, szString, MAX_STRING);
|
||||
SendMessage(hDisplay, FVM_SETSTRING, 0, (LPARAM)szString);
|
||||
|
||||
/* Create the install button */
|
||||
LoadStringW(g_hInstance, IDS_INSTALL, szQuit, MAX_BUTTONNAME);
|
||||
hButtonInstall = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szQuit, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
BUTTON_POS_X, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_INSTALL, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonInstall, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the install button */
|
||||
LoadStringW(g_hInstance, IDS_INSTALL, szQuit, MAX_BUTTONNAME);
|
||||
hButtonInstall = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szQuit, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
BUTTON_POS_X, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_INSTALL, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonInstall, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
EnableWindow(hButtonInstall, !g_DisableInstall);
|
||||
|
||||
/* Create the print button */
|
||||
LoadStringW(g_hInstance, IDS_PRINT, szPrint, MAX_BUTTONNAME);
|
||||
hButtonPrint = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrint, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PRINT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrint, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the print button */
|
||||
LoadStringW(g_hInstance, IDS_PRINT, szPrint, MAX_BUTTONNAME);
|
||||
hButtonPrint = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrint, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PRINT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrint, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
/* Create the previous button */
|
||||
LoadStringW(g_hInstance, IDS_PREVIOUS, szPrevious, MAX_BUTTONNAME);
|
||||
hButtonPrev = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrevious, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PREV, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrev, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the previous button */
|
||||
LoadStringW(g_hInstance, IDS_PREVIOUS, szPrevious, MAX_BUTTONNAME);
|
||||
hButtonPrev = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrevious, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PREV, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrev, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
/* Create the next button */
|
||||
LoadStringW(g_hInstance, IDS_NEXT, szNext, MAX_BUTTONNAME);
|
||||
hButtonNext = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szNext, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_NEXT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonNext, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the next button */
|
||||
LoadStringW(g_hInstance, IDS_NEXT, szNext, MAX_BUTTONNAME);
|
||||
hButtonNext = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szNext, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_NEXT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonNext, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
EnableWindow(hButtonPrev, FALSE);
|
||||
if (g_NumFonts <= 1)
|
||||
EnableWindow(hButtonNext, FALSE);
|
||||
EnableWindow(hButtonPrev, FALSE);
|
||||
if (g_NumFonts <= 1)
|
||||
EnableWindow(hButtonNext, FALSE);
|
||||
|
||||
/* Init the display window with the font name */
|
||||
g_FontIndex = 0;
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
ShowWindow(hDisplay, SW_SHOWNORMAL);
|
||||
/* Init the display window with the font name */
|
||||
g_FontIndex = 0;
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
ShowWindow(hDisplay, SW_SHOWNORMAL);
|
||||
|
||||
if (g_FontPrint)
|
||||
PostMessage(hwnd, WM_COMMAND, IDC_PRINT, 0);
|
||||
if (g_FontPrint)
|
||||
PostMessage(hwnd, WM_COMMAND, IDC_PRINT, 0);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnSize(HWND hwnd)
|
||||
{
|
||||
RECT rc;
|
||||
HWND hInstall, hPrint, hPrev, hNext, hDisplay;
|
||||
HDWP hDWP;
|
||||
RECT rc;
|
||||
HWND hInstall, hPrint, hPrev, hNext, hDisplay;
|
||||
HDWP hDWP;
|
||||
|
||||
GetClientRect(hwnd, &rc);
|
||||
GetClientRect(hwnd, &rc);
|
||||
|
||||
hDWP = BeginDeferWindowPos(5);
|
||||
hDWP = BeginDeferWindowPos(5);
|
||||
|
||||
hInstall = GetDlgItem(hwnd, IDC_INSTALL);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hInstall, NULL, BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hInstall = GetDlgItem(hwnd, IDC_INSTALL);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hInstall, NULL, BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hPrint = GetDlgItem(hwnd, IDC_PRINT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrint, NULL, BUTTON_POS_X + BUTTON_WIDTH + BUTTON_PADDING, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hPrint = GetDlgItem(hwnd, IDC_PRINT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrint, NULL, BUTTON_POS_X + BUTTON_WIDTH + BUTTON_PADDING, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hPrev = GetDlgItem(hwnd, IDC_PREV);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrev, NULL, rc.right - (BUTTON_WIDTH * 2 + BUTTON_PADDING + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hPrev = GetDlgItem(hwnd, IDC_PREV);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrev, NULL, rc.right - (BUTTON_WIDTH * 2 + BUTTON_PADDING + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hNext = GetDlgItem(hwnd, IDC_NEXT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hNext, NULL, rc.right - (BUTTON_WIDTH + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hNext = GetDlgItem(hwnd, IDC_NEXT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hNext, NULL, rc.right - (BUTTON_WIDTH + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hDisplay, NULL, 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, SWP_NOZORDER);
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hDisplay, NULL, 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, SWP_NOZORDER);
|
||||
|
||||
EndDeferWindowPos(hDWP);
|
||||
EndDeferWindowPos(hDWP);
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnPaint(HWND hwnd)
|
||||
{
|
||||
HDC hDC;
|
||||
PAINTSTRUCT ps;
|
||||
RECT rc;
|
||||
HDC hDC;
|
||||
PAINTSTRUCT ps;
|
||||
RECT rc;
|
||||
|
||||
hDC = BeginPaint(hwnd, &ps);
|
||||
GetClientRect(hwnd, &rc);
|
||||
rc.top = HEADER_SIZE - 2;
|
||||
rc.bottom = HEADER_SIZE;
|
||||
FillRect(hDC, &rc, GetStockObject(GRAY_BRUSH));
|
||||
EndPaint(hwnd, &ps);
|
||||
return 0;
|
||||
hDC = BeginPaint(hwnd, &ps);
|
||||
GetClientRect(hwnd, &rc);
|
||||
rc.top = HEADER_SIZE - 2;
|
||||
rc.bottom = HEADER_SIZE;
|
||||
FillRect(hDC, &rc, GetStockObject(GRAY_BRUSH));
|
||||
EndPaint(hwnd, &ps);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
@@ -466,7 +477,6 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
HKEY hKey;
|
||||
|
||||
SendDlgItemMessage(hwnd, IDC_DISPLAY, FVM_GETFULLNAME, 64, (LPARAM)szFullName);
|
||||
// MessageBoxW(hwnd, szFullName, L"Debug", MB_OK);
|
||||
|
||||
/* First, we have to find out if the font still exists */
|
||||
if (GetFileAttributes(g_fileName) == INVALID_FILE_ATTRIBUTES)
|
||||
@@ -483,21 +493,17 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
wcscat(szDestPath, L"\\Fonts\\");
|
||||
wcscat(szDestPath, pszFileName);
|
||||
|
||||
/* Debug Message */
|
||||
// MessageBoxW(hwnd, szDestPath, L"szDestPath", MB_OK);
|
||||
// MessageBoxW(hwnd, pszFileName, L"pszFileExt", MB_OK);
|
||||
|
||||
/* Check if the file already exists */
|
||||
if (GetFileAttributesW(szDestPath) != INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
MessageBoxW(hwnd, L"This font is already installed!", L"Already Installed", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_ISINSTALLED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Copy the font file */
|
||||
if (!CopyFileW(g_fileName, szDestPath, TRUE))
|
||||
{
|
||||
MessageBoxW(hwnd,L"Failed to copy the font file!", L"File Error", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_FONTCPY);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -509,7 +515,7 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
&hKey);
|
||||
if (res != ERROR_SUCCESS)
|
||||
{
|
||||
MessageBoxW(hwnd, L"Failed top open the fonts key!", L"Debug1", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_OPENKEY);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -519,10 +525,10 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
0,
|
||||
REG_SZ,
|
||||
(LPBYTE)pszFileName,
|
||||
(wcslen(pszFileName) + 1) * sizeof(WCHAR));
|
||||
(DWORD)(wcslen(pszFileName) + 1) * sizeof(WCHAR));
|
||||
if (res != ERROR_SUCCESS)
|
||||
{
|
||||
MessageBoxW(hwnd, L"Failed to register the new font!", L"Debug2", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_REGISTER);
|
||||
RegCloseKey(hKey);
|
||||
return -1;
|
||||
}
|
||||
@@ -534,7 +540,7 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
SendMessageW(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
|
||||
|
||||
/* if all of this goes correctly, message the user about success */
|
||||
MessageBoxW(hwnd, L"Font Installation Completed.", L"Success", MB_OK);
|
||||
SuccessMsgBox(hwnd, IDS_COMPLETED);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -542,37 +548,37 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
static LRESULT
|
||||
MainWnd_OnPrev(HWND hwnd)
|
||||
{
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex > 0)
|
||||
{
|
||||
--g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), TRUE);
|
||||
if (g_FontIndex == 0)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), FALSE);
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex > 0)
|
||||
{
|
||||
--g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), TRUE);
|
||||
if (g_FontIndex == 0)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), FALSE);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnNext(HWND hwnd)
|
||||
{
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex + 1 < g_NumFonts)
|
||||
{
|
||||
++g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), TRUE);
|
||||
if (g_FontIndex == g_NumFonts - 1)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), FALSE);
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex + 1 < g_NumFonts)
|
||||
{
|
||||
++g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), TRUE);
|
||||
if (g_FontIndex == g_NumFonts - 1)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), FALSE);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK
|
||||
@@ -580,41 +586,39 @@ MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return MainWnd_OnCreate(hwnd);
|
||||
case WM_CREATE:
|
||||
return MainWnd_OnCreate(hwnd);
|
||||
|
||||
case WM_PAINT:
|
||||
return MainWnd_OnPaint(hwnd);
|
||||
case WM_PAINT:
|
||||
return MainWnd_OnPaint(hwnd);
|
||||
|
||||
case WM_SIZE:
|
||||
return MainWnd_OnSize(hwnd);
|
||||
case WM_SIZE:
|
||||
return MainWnd_OnSize(hwnd);
|
||||
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_INSTALL:
|
||||
return MainWnd_OnInstall(hwnd);
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_INSTALL:
|
||||
return MainWnd_OnInstall(hwnd);
|
||||
|
||||
case IDC_PRINT:
|
||||
return Display_OnPrint(hwnd);
|
||||
case IDC_PRINT:
|
||||
return Display_OnPrint(hwnd);
|
||||
|
||||
case IDC_PREV:
|
||||
return MainWnd_OnPrev(hwnd);
|
||||
case IDC_PREV:
|
||||
return MainWnd_OnPrev(hwnd);
|
||||
|
||||
case IDC_NEXT:
|
||||
return MainWnd_OnNext(hwnd);
|
||||
}
|
||||
break;
|
||||
case IDC_NEXT:
|
||||
return MainWnd_OnNext(hwnd);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
|
||||
break;
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
|
||||
break;
|
||||
|
||||
default: /* for messages that we don't deal with */
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
default: /* for messages that we don't deal with */
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
@@ -48,6 +48,9 @@ END
|
||||
#ifdef LANGUAGE_IT_IT
|
||||
#include "lang/it-IT.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_JA_JP
|
||||
#include "lang/ja-JP.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_LT_LT
|
||||
#include "lang/lt-LT.rc"
|
||||
#endif
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Няма достатъчно място за завършване на действието."
|
||||
IDS_ERROR_NOFONT "%1 не е редовен шрифтов файл."
|
||||
IDS_ERROR_NOCLASS "Неуспешно изпълнение на класа на прозореца."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "K dokončení operace není dostatek paměti."
|
||||
IDS_ERROR_NOFONT "Soubor %1 není platným souborem písma."
|
||||
IDS_ERROR_NOCLASS "Inicializace okna aplikace selhala."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Podporované soubory písem (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Písmo Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Písmo TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Es steht nicht genügend Speicher zur Verfügung."
|
||||
IDS_ERROR_NOFONT "Die angegebene Datei %1 ist keine gültige Schriftartendatei."
|
||||
IDS_ERROR_NOCLASS "Fehler beim Initialisieren der Fensterklasse."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "There is not enough memory to complete the operation."
|
||||
IDS_ERROR_NOFONT "The file %1 is not a valid font file."
|
||||
IDS_ERROR_NOCLASS "Could not initialize window class."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -12,6 +12,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "No hay memoria suficiente para completar la operación."
|
||||
IDS_ERROR_NOFONT "El archivo %1 no es un archivo de fuente válido."
|
||||
IDS_ERROR_NOCLASS "No es posible iniciar la clase de ventana."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Todas las tipografías (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Tipografía de mapa de bits (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Tipografía TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Mémoire insuffisante pour terminer l'opération."
|
||||
IDS_ERROR_NOFONT "Le fichier %1 n'est pas un fichier de polices valide."
|
||||
IDS_ERROR_NOCLASS "Impossible d'initialiser la classe de fenêtre."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Toutes polices supportées (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Fichier de polices (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Fichier de polices TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -12,6 +12,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "אין מספיק זיכרון כדי להשלים את הפעולה."
|
||||
IDS_ERROR_NOFONT "הקובץ %1 אינו קובץ גופנים חוקי."
|
||||
IDS_ERROR_NOCLASS "Could not initialize window class."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Memori tidak cukup untuk menyelesaikan operasi."
|
||||
IDS_ERROR_NOFONT "Berkas %1 bukan berkas fon yang valid."
|
||||
IDS_ERROR_NOCLASS "Tidak bisa memulai window class."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Semua fon yang didukung (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Berkas Fon (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Fon (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Memoria insufficiente per completare l'operazione."
|
||||
IDS_ERROR_NOFONT "Il file% 1 non è un file di origine valido."
|
||||
IDS_ERROR_NOCLASS "Impossibile avviare la classe."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Tutti i font supportati (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Font TrueType (*.ttf)\0*.ttf\0\
|
||||
|
35
base/applications/fontview/lang/ja-JP.rc
Normal file
35
base/applications/fontview/lang/ja-JP.rc
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Japanese resource file
|
||||
* TRANSLATORS: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "インストール(&I)"
|
||||
IDS_PRINT "印刷(&P)"
|
||||
IDS_STRING "ReactOS は万人に開かれたコンピュータのシステムです。1234567890"
|
||||
IDS_OPEN "フォントを開く..."
|
||||
IDS_ERROR "エラー"
|
||||
IDS_ERROR_NOMEM "処理の完了に充分なメモリーがありません。"
|
||||
IDS_ERROR_NOFONT "ファイル %1 は有効なフォントファイルではありません。"
|
||||
IDS_ERROR_NOCLASS "ウィンドウ クラスを初期化できません。"
|
||||
IDS_ERROR_ISINSTALLED "このフォントはインストール済みです!"
|
||||
IDS_ERROR_FONTCPY "フォントファイルのコピーに失敗しました!"
|
||||
IDS_ERROR_OPENKEY "フォントキーを開くのに失敗しました!"
|
||||
IDS_ERROR_REGISTER "新しいフォントの登録に失敗しました!"
|
||||
IDS_SUCCESS "成功"
|
||||
IDS_COMPLETED "フォントのインストールが完了しました。"
|
||||
IDS_FILTER_LIST "すべてのサポート済みフォント (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
フォントファイル (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType フォント (*.ttf)\0*.ttf\0\
|
||||
TrueType フォント コレクション (*.ttc)\0*.ttc\0\
|
||||
OpenType フォント (*.otf)\0*.otf\0\
|
||||
OpenType フォント コレクション (*.otc)\0*.otc\0\
|
||||
すべてのファイル (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< 戻る(&R)"
|
||||
IDS_NEXT "次へ(&N) >"
|
||||
END
|
@@ -12,6 +12,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Užduočiai užbaigti, nepakanka atminties."
|
||||
IDS_ERROR_NOFONT "%1 nėra teisinga šrifto byla."
|
||||
IDS_ERROR_NOCLASS "Nepavyko inicijuoti lango klasės."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -12,6 +12,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Terdapat tidak cukup ingatan untuk melengkapkan operasi ini."
|
||||
IDS_ERROR_NOFONT "Fail %1 bukanlah fail fon yang sah."
|
||||
IDS_ERROR_NOCLASS "Tidak dapat mengawalkan kelas tetingkap."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Semuanya disokong fon (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -10,6 +10,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Det er ikke nok minne for å fullføre oppgaven."
|
||||
IDS_ERROR_NOFONT "Filen %1 er ikke et gyldig skriftfil."
|
||||
IDS_ERROR_NOCLASS "Kunne ikke initialise vindu klassen."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Brakuje pamięci do ukończenia tej operacji."
|
||||
IDS_ERROR_NOFONT "Plik %1 nie jest poprawnym plikiem czcionki."
|
||||
IDS_ERROR_NOCLASS "Nie udało się zainicjować klasy window."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Wszystkie obsługiwane czcionki (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Plik czcionki (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Czcionka TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -12,6 +12,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Não há memória suficiente para completar a operação."
|
||||
IDS_ERROR_NOFONT "O arquivo %1 não é um arquivo de fonte válida."
|
||||
IDS_ERROR_NOCLASS "Não foi possível inicializar a janela."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -12,6 +12,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Nu e destulă memorie pentru a încheia operația."
|
||||
IDS_ERROR_NOFONT "Fișierul «%1» este un fișier font deteriorat."
|
||||
IDS_ERROR_NOCLASS "Clasa de ferestre nu a putut fi inițializată."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Toate fonturile recunoscute (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Fișiere de tip Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Fonturi de tip TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,4 +1,10 @@
|
||||
/* Russian language resource file (Dmitry Chapyshev, 2007-06-21) */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Russian resource file
|
||||
* TRANSLATORS: Copyright 2007 Dmitry Chapyshev <dmitry@reactos.org>
|
||||
* Copyright 2014-2015 Kudratov Olimjon <olim98@bk.ru>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
||||
@@ -12,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Недостаточно памяти для выполнения операции."
|
||||
IDS_ERROR_NOFONT "%1 не является корректным файлом шрифта."
|
||||
IDS_ERROR_NOCLASS "Невозможно инициализировать класс окна."
|
||||
IDS_ERROR_ISINSTALLED "Этот шрифт уже установлен!"
|
||||
IDS_ERROR_FONTCPY "Не удалось скопировать файл шрифта!"
|
||||
IDS_ERROR_OPENKEY "Не удалось открыть ключ реестра для шрифтов!"
|
||||
IDS_ERROR_REGISTER "Не удалось зарегистрировать новый шрифт!"
|
||||
IDS_SUCCESS "Успех"
|
||||
IDS_COMPLETED "Установка шрифта завершена."
|
||||
IDS_FILTER_LIST "Все поддерживаемые шрифты (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Файлы шрифтов (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType шрифты (*.ttf)\0*.ttf\0\
|
||||
|
@@ -15,6 +15,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Na vykonanie tejto operácie nie je dostatok voľnej pamäte."
|
||||
IDS_ERROR_NOFONT "Požadovaný súbor %1 nie je platným súborom písiem."
|
||||
IDS_ERROR_NOCLASS "Nepodarilo sa inicializovať triedu window."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -14,6 +14,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Nuk ka memorie të mjaftueshme për të përfunduar operacionin."
|
||||
IDS_ERROR_NOFONT "Dokumenti %1 nuk është një font i vlefshem."
|
||||
IDS_ERROR_NOCLASS "Nuk mund të fillojë dritaren e klases."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -17,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Det er inte nog minne för att slutföre operationen."
|
||||
IDS_ERROR_NOFONT "Filen %1 är inte en giltig typsnittsfil."
|
||||
IDS_ERROR_NOCLASS "Kunde inte initialisera Windows klassen."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Bu işlemi bitirmek için yeterli bellek yok."
|
||||
IDS_ERROR_NOFONT "%1 dosyası, geçerli bir yazı tipi dosyası değil."
|
||||
IDS_ERROR_NOCLASS "Pencere sınıfı başlatılamadı."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Tüm Desteklenen Yazı Tipleri (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Yazı Tipi Dosyası (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Yazı Tipi (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Недостатньо пам'яті для завершення операції."
|
||||
IDS_ERROR_NOFONT "Файл %1 не є коректним файлом шрифту."
|
||||
IDS_ERROR_NOCLASS "Неможливо ініціалізувати віконний клас."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -20,6 +20,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "没有足够的内存来完成操作。"
|
||||
IDS_ERROR_NOFONT "%1不是一个有效的字体文件。"
|
||||
IDS_ERROR_NOCLASS "无法初始化窗口。"
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "所有支持的字体 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字体文件 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字体 (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "沒有足夠的記憶體來完成操作。"
|
||||
IDS_ERROR_NOFONT "%1 不是一個有效的字型檔案。"
|
||||
IDS_ERROR_NOCLASS "無法初始化視窗。"
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "所有支援的字型 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字型檔案 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字型 (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "沒有足夠的記憶體來完成操作。"
|
||||
IDS_ERROR_NOFONT "%1 不是一個有效的字型檔案。"
|
||||
IDS_ERROR_NOCLASS "無法初始化視窗。"
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "所有支援的字型 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字型檔案 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字型 (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,10 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#define IDS_ERROR 100
|
||||
#define IDS_ERROR_NOMEM 101
|
||||
#define IDS_ERROR_NOFONT 102
|
||||
#define IDS_ERROR_NOCLASS 103
|
||||
#define IDS_FILTER_LIST 104
|
||||
#define IDS_ERROR 100
|
||||
#define IDS_ERROR_NOMEM 101
|
||||
#define IDS_ERROR_NOFONT 102
|
||||
#define IDS_ERROR_NOCLASS 103
|
||||
#define IDS_ERROR_ISINSTALLED 104
|
||||
#define IDS_ERROR_FONTCPY 105
|
||||
#define IDS_ERROR_OPENKEY 106
|
||||
#define IDS_ERROR_REGISTER 107
|
||||
#define IDS_SUCCESS 108
|
||||
#define IDS_COMPLETED 109
|
||||
#define IDS_FILTER_LIST 110
|
||||
|
||||
#define IDS_INSTALL 500
|
||||
#define IDS_PRINT 501
|
||||
|
@@ -25,7 +25,7 @@ BEGIN
|
||||
AUTORADIOBUTTON "Fă&ră", IDC_OPT_NOSCORE, 107, 45, 60, 10
|
||||
AUTOCHECKBOX "&Afișează timp", IDC_OPT_SHOWTIME, 7 ,51 ,65 ,10, WS_TABSTOP
|
||||
AUTOCHECKBOX "&Bară de stare", IDC_OPT_STATUSBAR, 7, 66, 64, 10, WS_TABSTOP
|
||||
AUTOCHECKBOX "&Păstrează scor", IDC_OPT_KEEPSCORE, 100, 66, 65, 10, WS_TABSTOP
|
||||
AUTOCHECKBOX "&Păstrează scorul", IDC_OPT_KEEPSCORE, 100, 66, 65, 10, WS_TABSTOP
|
||||
DEFPUSHBUTTON "Con&firmă", IDOK, 35, 97, 50, 14
|
||||
PUSHBUTTON "A&nulează", IDCANCEL, 101, 97, 50, 14
|
||||
END
|
||||
|
@@ -18,9 +18,18 @@ CCanvasWindow::CCanvasWindow()
|
||||
, m_whereHit(HIT_NONE)
|
||||
, m_ptOrig { -1, -1 }
|
||||
{
|
||||
m_ahbmCached[0] = m_ahbmCached[1] = NULL;
|
||||
::SetRectEmpty(&m_rcNew);
|
||||
}
|
||||
|
||||
CCanvasWindow::~CCanvasWindow()
|
||||
{
|
||||
if (m_ahbmCached[0])
|
||||
::DeleteObject(m_ahbmCached[0]);
|
||||
if (m_ahbmCached[1])
|
||||
::DeleteObject(m_ahbmCached[1]);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::drawZoomFrame(INT mouseX, INT mouseY)
|
||||
{
|
||||
// FIXME: Draw the border of the area that is to be zoomed in
|
||||
@@ -87,6 +96,8 @@ VOID CCanvasWindow::GetImageRect(RECT& rc)
|
||||
|
||||
CANVAS_HITTEST CCanvasWindow::CanvasHitTest(POINT pt)
|
||||
{
|
||||
if (selectionModel.m_bShow || ::IsWindowVisible(textEditWindow))
|
||||
return HIT_INNER;
|
||||
RECT rcBase = GetBaseRect();
|
||||
return getSizeBoxHitTest(pt, &rcBase);
|
||||
}
|
||||
@@ -94,78 +105,80 @@ CANVAS_HITTEST CCanvasWindow::CanvasHitTest(POINT pt)
|
||||
VOID CCanvasWindow::DoDraw(HDC hDC, RECT& rcClient, RECT& rcPaint)
|
||||
{
|
||||
// We use a memory bitmap to reduce flickering
|
||||
HDC hdcMem = ::CreateCompatibleDC(hDC);
|
||||
HBITMAP hbm = ::CreateCompatibleBitmap(hDC, rcClient.right, rcClient.bottom);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdcMem, hbm);
|
||||
HDC hdcMem0 = ::CreateCompatibleDC(hDC);
|
||||
m_ahbmCached[0] = CachedBufferDIB(m_ahbmCached[0], rcClient.right, rcClient.bottom);
|
||||
HGDIOBJ hbm0Old = ::SelectObject(hdcMem0, m_ahbmCached[0]);
|
||||
|
||||
// Fill the background
|
||||
::FillRect(hdcMem, &rcPaint, (HBRUSH)(COLOR_APPWORKSPACE + 1));
|
||||
// Fill the background on hdcMem0
|
||||
::FillRect(hdcMem0, &rcPaint, (HBRUSH)(COLOR_APPWORKSPACE + 1));
|
||||
|
||||
// Draw the sizeboxes if necessary
|
||||
RECT rcBase = GetBaseRect();
|
||||
if (!selectionModel.m_bShow)
|
||||
drawSizeBoxes(hdcMem, &rcBase, FALSE, &rcPaint);
|
||||
if (!selectionModel.m_bShow && !::IsWindowVisible(textEditWindow))
|
||||
drawSizeBoxes(hdcMem0, &rcBase, FALSE, &rcPaint);
|
||||
|
||||
// Draw the image
|
||||
// Calculate image size
|
||||
CRect rcImage;
|
||||
GetImageRect(rcImage);
|
||||
ImageToCanvas(rcImage);
|
||||
SIZE sizeImage = { imageModel.GetWidth(), imageModel.GetHeight() };
|
||||
StretchBlt(hdcMem, rcImage.left, rcImage.top, rcImage.Width(), rcImage.Height(),
|
||||
imageModel.GetDC(), 0, 0, sizeImage.cx, sizeImage.cy, SRCCOPY);
|
||||
|
||||
// Draw the grid
|
||||
if (showGrid && toolsModel.GetZoom() >= 4000)
|
||||
// hdcMem1 <-- imageModel
|
||||
HDC hdcMem1 = ::CreateCompatibleDC(hDC);
|
||||
m_ahbmCached[1] = CachedBufferDIB(m_ahbmCached[1], sizeImage.cx, sizeImage.cy);
|
||||
HGDIOBJ hbm1Old = ::SelectObject(hdcMem1, m_ahbmCached[1]);
|
||||
BitBlt(hdcMem1, 0, 0, sizeImage.cx, sizeImage.cy, imageModel.GetDC(), 0, 0, SRCCOPY);
|
||||
|
||||
// Draw overlay #1 on hdcMem1
|
||||
toolsModel.OnDrawOverlayOnImage(hdcMem1);
|
||||
|
||||
// Transfer the bits with stretch (hdcMem0 <-- hdcMem1)
|
||||
ImageToCanvas(rcImage);
|
||||
::StretchBlt(hdcMem0, rcImage.left, rcImage.top, rcImage.Width(), rcImage.Height(),
|
||||
hdcMem1, 0, 0, sizeImage.cx, sizeImage.cy, SRCCOPY);
|
||||
|
||||
// Clean up hdcMem1
|
||||
::SelectObject(hdcMem1, hbm1Old);
|
||||
::DeleteDC(hdcMem1);
|
||||
|
||||
// Draw the grid on hdcMem0
|
||||
if (g_showGrid && toolsModel.GetZoom() >= 4000)
|
||||
{
|
||||
HPEN oldPen = (HPEN) SelectObject(hdcMem, CreatePen(PS_SOLID, 1, RGB(160, 160, 160)));
|
||||
HPEN oldPen = (HPEN) ::SelectObject(hdcMem0, ::CreatePen(PS_SOLID, 1, RGB(160, 160, 160)));
|
||||
for (INT counter = 0; counter < sizeImage.cy; counter++)
|
||||
{
|
||||
POINT pt0 = { 0, counter }, pt1 = { sizeImage.cx, counter };
|
||||
ImageToCanvas(pt0);
|
||||
ImageToCanvas(pt1);
|
||||
::MoveToEx(hdcMem, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem, pt1.x, pt1.y);
|
||||
::MoveToEx(hdcMem0, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem0, pt1.x, pt1.y);
|
||||
}
|
||||
for (INT counter = 0; counter < sizeImage.cx; counter++)
|
||||
{
|
||||
POINT pt0 = { counter, 0 }, pt1 = { counter, sizeImage.cy };
|
||||
ImageToCanvas(pt0);
|
||||
ImageToCanvas(pt1);
|
||||
::MoveToEx(hdcMem, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem, pt1.x, pt1.y);
|
||||
::MoveToEx(hdcMem0, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem0, pt1.x, pt1.y);
|
||||
}
|
||||
::DeleteObject(::SelectObject(hdcMem, oldPen));
|
||||
::DeleteObject(::SelectObject(hdcMem0, oldPen));
|
||||
}
|
||||
|
||||
// Draw selection
|
||||
if (selectionModel.m_bShow)
|
||||
{
|
||||
RECT rcSelection = selectionModel.m_rc;
|
||||
ImageToCanvas(rcSelection);
|
||||
// Draw overlay #2 on hdcMem0
|
||||
toolsModel.OnDrawOverlayOnCanvas(hdcMem0);
|
||||
|
||||
::InflateRect(&rcSelection, GRIP_SIZE, GRIP_SIZE);
|
||||
drawSizeBoxes(hdcMem, &rcSelection, TRUE, &rcPaint);
|
||||
::InflateRect(&rcSelection, -GRIP_SIZE, -GRIP_SIZE);
|
||||
|
||||
INT iSaveDC = ::SaveDC(hdcMem);
|
||||
::IntersectClipRect(hdcMem, rcImage.left, rcImage.top, rcImage.right, rcImage.bottom);
|
||||
selectionModel.DrawSelection(hdcMem, &rcSelection, paletteModel.GetBgColor(),
|
||||
toolsModel.IsBackgroundTransparent());
|
||||
::RestoreDC(hdcMem, iSaveDC);
|
||||
}
|
||||
|
||||
// Draw new frame if any
|
||||
// Draw new frame on hdcMem0 if any
|
||||
if (m_whereHit != HIT_NONE && !::IsRectEmpty(&m_rcNew))
|
||||
DrawXorRect(hdcMem, &m_rcNew);
|
||||
DrawXorRect(hdcMem0, &m_rcNew);
|
||||
|
||||
// Transfer the bits
|
||||
// Transfer the bits (hDC <-- hdcMem0)
|
||||
::BitBlt(hDC,
|
||||
rcPaint.left, rcPaint.top,
|
||||
rcPaint.right - rcPaint.left, rcPaint.bottom - rcPaint.top,
|
||||
hdcMem, rcPaint.left, rcPaint.top, SRCCOPY);
|
||||
hdcMem0, rcPaint.left, rcPaint.top, SRCCOPY);
|
||||
|
||||
::DeleteObject(::SelectObject(hdcMem, hbmOld));
|
||||
::DeleteDC(hdcMem);
|
||||
// Clean up hdcMem0
|
||||
::SelectObject(hdcMem0, hbm0Old);
|
||||
::DeleteDC(hdcMem0);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::Update(HWND hwndFrom)
|
||||
@@ -258,9 +271,14 @@ LRESULT CCanvasWindow::OnLRButtonDown(BOOL bLeftButton, UINT nMsg, WPARAM wParam
|
||||
{
|
||||
if (bLeftButton)
|
||||
{
|
||||
UnZoomed(pt);
|
||||
CanvasToImage(pt);
|
||||
StartSelectionDrag(hitSelection, pt);
|
||||
}
|
||||
else
|
||||
{
|
||||
canvasWindow.ClientToScreen(&pt);
|
||||
mainWindow.TrackPopupMenu(pt, 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -376,15 +394,15 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
{
|
||||
CString strCoord;
|
||||
strCoord.Format(_T("%ld, %ld"), pt.x, pt.y);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_drawing)
|
||||
{
|
||||
// values displayed in statusbar
|
||||
LONG xRel = pt.x - start.x;
|
||||
LONG yRel = pt.y - start.y;
|
||||
LONG xRel = pt.x - g_ptStart.x;
|
||||
LONG yRel = pt.y - g_ptStart.y;
|
||||
|
||||
switch (toolsModel.GetActiveTool())
|
||||
{
|
||||
@@ -393,13 +411,13 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
case TOOL_RECTSEL:
|
||||
case TOOL_TEXT:
|
||||
if (xRel < 0)
|
||||
xRel = (pt.x < 0) ? -start.x : xRel;
|
||||
xRel = (pt.x < 0) ? -g_ptStart.x : xRel;
|
||||
else if (pt.x > imageModel.GetWidth())
|
||||
xRel = imageModel.GetWidth() - start.x;
|
||||
xRel = imageModel.GetWidth() - g_ptStart.x;
|
||||
if (yRel < 0)
|
||||
yRel = (pt.y < 0) ? -start.y : yRel;
|
||||
yRel = (pt.y < 0) ? -g_ptStart.y : yRel;
|
||||
else if (pt.y > imageModel.GetHeight())
|
||||
yRel = imageModel.GetHeight() - start.y;
|
||||
yRel = imageModel.GetHeight() - g_ptStart.y;
|
||||
break;
|
||||
|
||||
// while drawing, update cursor coordinates only for tools 3, 7, 8, 9, 14
|
||||
@@ -411,7 +429,7 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
{
|
||||
CString strCoord;
|
||||
strCoord.Format(_T("%ld, %ld"), pt.x, pt.y);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -431,13 +449,13 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
{
|
||||
toolsModel.OnMouseMove(TRUE, pt.x, pt.y);
|
||||
Invalidate(FALSE);
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_TEXT) || (toolsModel.GetActiveTool() == TOOL_RECTSEL) || (toolsModel.GetActiveTool() == TOOL_FREESEL))
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_TEXT) || toolsModel.IsSelection())
|
||||
{
|
||||
CString strSize;
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_LINE) && (GetAsyncKeyState(VK_SHIFT) < 0))
|
||||
yRel = xRel;
|
||||
strSize.Format(_T("%ld x %ld"), xRel, yRel);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -451,7 +469,7 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_LINE) && (GetAsyncKeyState(VK_SHIFT) < 0))
|
||||
yRel = xRel;
|
||||
strSize.Format(_T("%ld x %ld"), xRel, yRel);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -507,7 +525,7 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
// Display new size
|
||||
CString strSize;
|
||||
strSize.Format(_T("%d x %d"), cxImage, cyImage);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
|
||||
CRect rc = { 0, 0, cxImage, cyImage };
|
||||
switch (m_whereHit)
|
||||
@@ -549,7 +567,7 @@ LRESULT CCanvasWindow::OnLRButtonUp(BOOL bLeftButton, UINT nMsg, WPARAM wParam,
|
||||
m_drawing = FALSE;
|
||||
toolsModel.OnButtonUp(bLeftButton, pt.x, pt.y);
|
||||
Invalidate(FALSE);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM)_T(""));
|
||||
return 0;
|
||||
}
|
||||
else if (m_hitSelection != HIT_NONE && bLeftButton)
|
||||
@@ -596,7 +614,7 @@ LRESULT CCanvasWindow::OnLRButtonUp(BOOL bLeftButton, UINT nMsg, WPARAM wParam,
|
||||
}
|
||||
::SetRectEmpty(&m_rcNew);
|
||||
|
||||
imageSaved = FALSE;
|
||||
g_imageSaved = FALSE;
|
||||
|
||||
m_whereHit = HIT_NONE;
|
||||
toolsModel.resetTool(); // resets the point-buffer of the polygon and bezier functions
|
||||
@@ -621,6 +639,15 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
::GetCursorPos(&pt);
|
||||
ScreenToClient(&pt);
|
||||
|
||||
CRect rcClient;
|
||||
GetClientRect(&rcClient);
|
||||
|
||||
if (!::PtInRect(&rcClient, pt))
|
||||
{
|
||||
bHandled = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
CANVAS_HITTEST hitSelection = SelectionHitTest(pt);
|
||||
if (hitSelection != HIT_NONE)
|
||||
{
|
||||
@@ -632,24 +659,25 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
CRect rcImage;
|
||||
GetImageRect(rcImage);
|
||||
ImageToCanvas(rcImage);
|
||||
|
||||
if (::PtInRect(&rcImage, pt))
|
||||
{
|
||||
switch (toolsModel.GetActiveTool())
|
||||
{
|
||||
case TOOL_FILL:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_FILL)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_FILL)));
|
||||
break;
|
||||
case TOOL_COLOR:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_COLOR)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_COLOR)));
|
||||
break;
|
||||
case TOOL_ZOOM:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_ZOOM)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_ZOOM)));
|
||||
break;
|
||||
case TOOL_PEN:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_PEN)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_PEN)));
|
||||
break;
|
||||
case TOOL_AIRBRUSH:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_AIRBRUSH)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_AIRBRUSH)));
|
||||
break;
|
||||
default:
|
||||
::SetCursor(::LoadCursor(NULL, IDC_CROSS));
|
||||
@@ -658,7 +686,7 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
}
|
||||
|
||||
if (selectionModel.m_bShow || !setCursorOnSizeBox(CanvasHitTest(pt)))
|
||||
::SetCursor(::LoadCursor(NULL, IDC_ARROW));
|
||||
bHandled = FALSE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -693,7 +721,7 @@ LRESULT CCanvasWindow::OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOO
|
||||
|
||||
LRESULT CCanvasWindow::OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM)_T(""));
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM)_T(""));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -731,7 +759,7 @@ VOID CCanvasWindow::finishDrawing()
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
CANVAS_HITTEST CCanvasWindow::SelectionHitTest(POINT ptZoomed)
|
||||
CANVAS_HITTEST CCanvasWindow::SelectionHitTest(POINT ptImage)
|
||||
{
|
||||
if (!selectionModel.m_bShow)
|
||||
return HIT_NONE;
|
||||
@@ -741,28 +769,51 @@ CANVAS_HITTEST CCanvasWindow::SelectionHitTest(POINT ptZoomed)
|
||||
::OffsetRect(&rcSelection, GRIP_SIZE - GetScrollPos(SB_HORZ), GRIP_SIZE - GetScrollPos(SB_VERT));
|
||||
::InflateRect(&rcSelection, GRIP_SIZE, GRIP_SIZE);
|
||||
|
||||
return getSizeBoxHitTest(ptZoomed, &rcSelection);
|
||||
return getSizeBoxHitTest(ptImage, &rcSelection);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::StartSelectionDrag(CANVAS_HITTEST hit, POINT ptUnZoomed)
|
||||
VOID CCanvasWindow::StartSelectionDrag(CANVAS_HITTEST hit, POINT ptImage)
|
||||
{
|
||||
m_hitSelection = hit;
|
||||
selectionModel.m_ptHit = ptUnZoomed;
|
||||
selectionModel.m_ptHit = ptImage;
|
||||
selectionModel.TakeOff();
|
||||
|
||||
SetCapture();
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::SelectionDragging(POINT ptUnZoomed)
|
||||
VOID CCanvasWindow::SelectionDragging(POINT ptImage)
|
||||
{
|
||||
selectionModel.Dragging(m_hitSelection, ptUnZoomed);
|
||||
selectionModel.Dragging(m_hitSelection, ptImage);
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::EndSelectionDrag(POINT ptUnZoomed)
|
||||
VOID CCanvasWindow::EndSelectionDrag(POINT ptImage)
|
||||
{
|
||||
selectionModel.Dragging(m_hitSelection, ptUnZoomed);
|
||||
selectionModel.Dragging(m_hitSelection, ptImage);
|
||||
m_hitSelection = HIT_NONE;
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::MoveSelection(INT xDelta, INT yDelta)
|
||||
{
|
||||
if (!selectionModel.m_bShow)
|
||||
return;
|
||||
|
||||
selectionModel.TakeOff();
|
||||
::OffsetRect(&selectionModel.m_rc, xDelta, yDelta);
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
LRESULT CCanvasWindow::OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
SetTextColor((HDC)wParam, paletteModel.GetFgColor());
|
||||
SetBkMode((HDC)wParam, TRANSPARENT);
|
||||
return (LRESULT)GetStockObject(NULL_BRUSH);
|
||||
}
|
||||
|
||||
LRESULT CCanvasWindow::OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
imageModel.NotifyImageChanged();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -11,7 +11,8 @@
|
||||
class CCanvasWindow : public CWindowImpl<CCanvasWindow>
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(_T("ReactOSPaintCanvas"), CS_DBLCLKS, COLOR_APPWORKSPACE)
|
||||
DECLARE_WND_CLASS_EX(_T("ReactOSPaintCanvas"), CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
|
||||
COLOR_APPWORKSPACE)
|
||||
|
||||
BEGIN_MSG_MAP(CCanvasWindow)
|
||||
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
||||
@@ -31,9 +32,12 @@ public:
|
||||
MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel)
|
||||
MESSAGE_HANDLER(WM_CANCELMODE, OnCancelMode)
|
||||
MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged)
|
||||
MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColorEdit)
|
||||
MESSAGE_HANDLER(WM_PALETTEMODELCOLORCHANGED, OnPaletteModelColorChanged)
|
||||
END_MSG_MAP()
|
||||
|
||||
CCanvasWindow();
|
||||
virtual ~CCanvasWindow();
|
||||
|
||||
BOOL m_drawing;
|
||||
|
||||
@@ -46,11 +50,13 @@ public:
|
||||
VOID CanvasToImage(POINT& pt, BOOL bZoomed = FALSE);
|
||||
VOID CanvasToImage(RECT& rc, BOOL bZoomed = FALSE);
|
||||
VOID GetImageRect(RECT& rc);
|
||||
VOID MoveSelection(INT xDelta, INT yDelta);
|
||||
|
||||
protected:
|
||||
CANVAS_HITTEST m_hitSelection;
|
||||
CANVAS_HITTEST m_whereHit;
|
||||
POINT m_ptOrig; // The origin of drag start
|
||||
HBITMAP m_ahbmCached[2]; // The cached buffer bitmaps
|
||||
CRect m_rcNew;
|
||||
|
||||
CANVAS_HITTEST CanvasHitTest(POINT pt);
|
||||
@@ -59,10 +65,10 @@ protected:
|
||||
VOID OnHVScroll(WPARAM wParam, INT fnBar);
|
||||
VOID drawZoomFrame(INT mouseX, INT mouseY);
|
||||
|
||||
CANVAS_HITTEST SelectionHitTest(POINT ptZoomed);
|
||||
VOID StartSelectionDrag(CANVAS_HITTEST hit, POINT ptUnZoomed);
|
||||
VOID SelectionDragging(POINT ptUnZoomed);
|
||||
VOID EndSelectionDrag(POINT ptUnZoomed);
|
||||
CANVAS_HITTEST SelectionHitTest(POINT ptImage);
|
||||
VOID StartSelectionDrag(CANVAS_HITTEST hit, POINT ptImage);
|
||||
VOID SelectionDragging(POINT ptImage);
|
||||
VOID EndSelectionDrag(POINT ptImage);
|
||||
|
||||
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnHScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
@@ -81,6 +87,8 @@ protected:
|
||||
LRESULT OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCancelMode(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
|
||||
LRESULT OnLRButtonDown(BOOL bLeftButton, UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnLRButtonDblClk(BOOL bLeftButton, UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
|
@@ -20,16 +20,6 @@
|
||||
#define WM_TOOLSMODELSETTINGSCHANGED (WM_APP + 1)
|
||||
#define WM_TOOLSMODELZOOMCHANGED (WM_APP + 2)
|
||||
#define WM_PALETTEMODELCOLORCHANGED (WM_APP + 3)
|
||||
#define WM_PALETTEMODELPALETTECHANGED (WM_APP + 4)
|
||||
#define WM_IMAGEMODELDIMENSIONSCHANGED (WM_APP + 5)
|
||||
#define WM_IMAGEMODELIMAGECHANGED (WM_APP + 6)
|
||||
#define WM_SELECTIONMODELREFRESHNEEDED (WM_APP + 7)
|
||||
|
||||
/* width of the rectangle defined by a RECT structure */
|
||||
#define RECT_WIDTH(a) ((a).right - (a).left)
|
||||
|
||||
/* height of the rectangle defined by a RECT structure */
|
||||
#define RECT_HEIGHT(a) ((a).bottom - (a).top)
|
||||
|
||||
/* this simplifies checking and unchecking menu items */
|
||||
#define CHECKED_IF(a) ((a) ? (MF_CHECKED | MF_BYCOMMAND) : (MF_UNCHECKED | MF_BYCOMMAND))
|
||||
|
@@ -73,8 +73,6 @@ LRESULT CMirrorRotateDialog::OnRadioButton12(WORD wNotifyCode, WORD wID, HWND hW
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
LRESULT CAttributesDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
newWidth = imageModel.GetWidth();
|
||||
@@ -85,21 +83,29 @@ LRESULT CAttributesDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam,
|
||||
SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE);
|
||||
SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE);
|
||||
|
||||
if (isAFile)
|
||||
if (g_isAFile)
|
||||
{
|
||||
TCHAR date[100];
|
||||
TCHAR temp[100];
|
||||
GetDateFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, date, _countof(date));
|
||||
GetTimeFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, temp, _countof(temp));
|
||||
GetDateFormat(LOCALE_USER_DEFAULT, 0, &g_fileTime, NULL, date, _countof(date));
|
||||
GetTimeFormat(LOCALE_USER_DEFAULT, 0, &g_fileTime, NULL, temp, _countof(temp));
|
||||
_tcscat(date, _T(" "));
|
||||
_tcscat(date, temp);
|
||||
CString strSize;
|
||||
strSize.Format(IDS_FILESIZE, fileSize);
|
||||
strSize.Format(IDS_FILESIZE, g_fileSize);
|
||||
SetDlgItemText(IDD_ATTRIBUTESTEXT6, date);
|
||||
SetDlgItemText(IDD_ATTRIBUTESTEXT7, strSize);
|
||||
}
|
||||
|
||||
CString strUnit;
|
||||
GetDlgItemText(IDD_ATTRIBUTESTEXT8, strUnit);
|
||||
|
||||
CString strRes;
|
||||
strRes.Format(IDS_PRINTRES, (INT)PpmFromDpi(g_xDpi), (INT)PpmFromDpi(g_yDpi));
|
||||
if (strUnit == L"dpi")
|
||||
strRes.Format(IDS_PRINTRES, ROUND(g_xDpi), ROUND(g_yDpi));
|
||||
else
|
||||
strRes.Format(IDS_PRINTRES, ROUND(PpcmFromDpi(g_xDpi)), ROUND(PpcmFromDpi(g_yDpi)));
|
||||
|
||||
SetDlgItemText(IDD_ATTRIBUTESTEXT8, strRes);
|
||||
return 0;
|
||||
}
|
||||
@@ -146,9 +152,9 @@ LRESULT CAttributesDialog::OnRadioButton1(WORD wNotifyCode, WORD wID, HWND hWndC
|
||||
LRESULT CAttributesDialog::OnRadioButton2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
||||
{
|
||||
CString strNum;
|
||||
strNum.Format(_T("%.3lf"), newWidth * 100 / PpmFromDpi(g_xDpi));
|
||||
strNum.Format(_T("%.3lf"), newWidth / PpcmFromDpi(g_xDpi));
|
||||
SetDlgItemText(IDD_ATTRIBUTESEDIT1, strNum);
|
||||
strNum.Format(_T("%.3lf"), newHeight * 100 / PpmFromDpi(g_yDpi));
|
||||
strNum.Format(_T("%.3lf"), newHeight / PpcmFromDpi(g_yDpi));
|
||||
SetDlgItemText(IDD_ATTRIBUTESEDIT2, strNum);
|
||||
return 0;
|
||||
}
|
||||
@@ -173,7 +179,7 @@ LRESULT CAttributesDialog::OnEdit1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOO
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2))
|
||||
{
|
||||
GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, _countof(tempS));
|
||||
newWidth = max(1, (int) (_tcstod(tempS, NULL) * PpmFromDpi(g_xDpi) / 100));
|
||||
newWidth = max(1, (int) (_tcstod(tempS, NULL) * PpcmFromDpi(g_xDpi)));
|
||||
}
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3))
|
||||
{
|
||||
@@ -198,7 +204,7 @@ LRESULT CAttributesDialog::OnEdit2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOO
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2))
|
||||
{
|
||||
GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, _countof(tempS));
|
||||
newHeight = max(1, (int) (_tcstod(tempS, NULL) * PpmFromDpi(g_yDpi) / 100));
|
||||
newHeight = max(1, (int) (_tcstod(tempS, NULL) * PpcmFromDpi(g_yDpi)));
|
||||
}
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3))
|
||||
{
|
||||
@@ -234,9 +240,9 @@ LRESULT CStretchSkewDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
|
||||
CString strrcAngle;
|
||||
BOOL tr1, tr2, tr3, tr4;
|
||||
|
||||
strrcIntNumbers.LoadString(hProgInstance, IDS_INTNUMBERS);
|
||||
strrcPercentage.LoadString(hProgInstance, IDS_PERCENTAGE);
|
||||
strrcAngle.LoadString(hProgInstance, IDS_ANGLE);
|
||||
strrcIntNumbers.LoadString(g_hinstExe, IDS_INTNUMBERS);
|
||||
strrcPercentage.LoadString(g_hinstExe, IDS_PERCENTAGE);
|
||||
strrcAngle.LoadString(g_hinstExe, IDS_ANGLE);
|
||||
|
||||
percentage.x = GetDlgItemInt(IDD_STRETCHSKEWEDITHSTRETCH, &tr1, FALSE);
|
||||
percentage.y = GetDlgItemInt(IDD_STRETCHSKEWEDITVSTRETCH, &tr2, FALSE);
|
||||
@@ -341,11 +347,11 @@ void CFontsDialog::InitToolbar()
|
||||
SendMessage(hwndToolbar, TB_SETBUTTONWIDTH, 0, MAKELPARAM(20, 20));
|
||||
|
||||
TBADDBITMAP AddBitmap;
|
||||
AddBitmap.hInst = hProgInstance;
|
||||
AddBitmap.hInst = g_hinstExe;
|
||||
AddBitmap.nID = IDB_FONTSTOOLBAR;
|
||||
SendMessage(hwndToolbar, TB_ADDBITMAP, 4, (LPARAM)&AddBitmap);
|
||||
|
||||
HIMAGELIST himl = ImageList_LoadImage(hProgInstance, MAKEINTRESOURCE(IDB_FONTSTOOLBAR),
|
||||
HIMAGELIST himl = ImageList_LoadImage(g_hinstExe, MAKEINTRESOURCE(IDB_FONTSTOOLBAR),
|
||||
16, 8, RGB(255, 0, 255), IMAGE_BITMAP,
|
||||
LR_CREATEDIBSECTION);
|
||||
SendMessage(hwndToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl);
|
||||
@@ -505,7 +511,7 @@ LRESULT CFontsDialog::OnNotify(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
|
||||
if (pnmhdr->code == TTN_NEEDTEXT)
|
||||
{
|
||||
LPTOOLTIPTEXT pToolTip = reinterpret_cast<LPTOOLTIPTEXT>(lParam);
|
||||
pToolTip->hinst = hProgInstance;
|
||||
pToolTip->hinst = g_hinstExe;
|
||||
switch (pnmhdr->idFrom)
|
||||
{
|
||||
case IDM_BOLD: pToolTip->lpszText = MAKEINTRESOURCE(IDS_BOLD); break;
|
||||
|
@@ -9,17 +9,18 @@
|
||||
#include "precomp.h"
|
||||
#include <math.h>
|
||||
|
||||
INT fileSize = 0;
|
||||
INT g_fileSize = 0;
|
||||
float g_xDpi = 96;
|
||||
float g_yDpi = 96;
|
||||
SYSTEMTIME fileTime;
|
||||
SYSTEMTIME g_fileTime;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
// Convert DPI (dots per inch) into PPM (pixels per meter)
|
||||
float PpmFromDpi(float dpi)
|
||||
// Convert DPI (dots per inch) into PPCM (pixels per centimeter)
|
||||
float PpcmFromDpi(float dpi)
|
||||
{
|
||||
return dpi / 0.0254; // 1 DPI is 0.0254 meter.
|
||||
// 1 DPI is 0.0254 meter. 1 centimeter is 1/100 meter.
|
||||
return dpi / (0.0254f * 100.0f);
|
||||
}
|
||||
|
||||
HBITMAP
|
||||
@@ -32,10 +33,29 @@ CreateDIBWithProperties(int width, int height)
|
||||
bmi.bmiHeader.biHeight = height;
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = 24;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
return CreateDIBSection(NULL, &bmi, DIB_RGB_COLORS, NULL, NULL, 0);
|
||||
}
|
||||
|
||||
HBITMAP
|
||||
CreateMonoBitmap(int width, int height, BOOL bWhite)
|
||||
{
|
||||
HBITMAP hbm = CreateBitmap(width, height, 1, 1, NULL);
|
||||
if (hbm == NULL)
|
||||
return NULL;
|
||||
|
||||
if (bWhite)
|
||||
{
|
||||
HDC hdc = CreateCompatibleDC(NULL);
|
||||
HGDIOBJ hbmOld = SelectObject(hdc, hbm);
|
||||
RECT rc = { 0, 0, width, height };
|
||||
FillRect(hdc, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));
|
||||
SelectObject(hdc, hbmOld);
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
|
||||
return hbm;
|
||||
}
|
||||
|
||||
HBITMAP
|
||||
CreateColorDIB(int width, int height, COLORREF rgb)
|
||||
{
|
||||
@@ -59,6 +79,54 @@ CreateColorDIB(int width, int height, COLORREF rgb)
|
||||
return ret;
|
||||
}
|
||||
|
||||
HBITMAP CopyMonoImage(HBITMAP hbm, INT cx, INT cy)
|
||||
{
|
||||
BITMAP bm;
|
||||
if (!GetObject(hbm, sizeof(bm), &bm))
|
||||
return NULL;
|
||||
|
||||
if (cx == 0 || cy == 0)
|
||||
{
|
||||
cx = bm.bmWidth;
|
||||
cy = bm.bmHeight;
|
||||
}
|
||||
|
||||
HBITMAP hbmNew = CreateBitmap(cx, cy, 1, 1, NULL);
|
||||
if (!hbmNew)
|
||||
return NULL;
|
||||
|
||||
HDC hdc1 = CreateCompatibleDC(NULL);
|
||||
HDC hdc2 = CreateCompatibleDC(NULL);
|
||||
HGDIOBJ hbm1Old = SelectObject(hdc1, hbm);
|
||||
HGDIOBJ hbm2Old = SelectObject(hdc2, hbmNew);
|
||||
StretchBlt(hdc2, 0, 0, cx, cy, hdc1, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
|
||||
SelectObject(hdc1, hbm1Old);
|
||||
SelectObject(hdc2, hbm2Old);
|
||||
DeleteDC(hdc1);
|
||||
DeleteDC(hdc2);
|
||||
return hbmNew;
|
||||
}
|
||||
|
||||
HBITMAP CachedBufferDIB(HBITMAP hbm, int minimalWidth, int minimalHeight)
|
||||
{
|
||||
if (minimalWidth <= 0)
|
||||
minimalWidth = 1;
|
||||
if (minimalHeight <= 0)
|
||||
minimalHeight = 1;
|
||||
|
||||
BITMAP bm;
|
||||
if (!GetObject(hbm, sizeof(bm), &bm))
|
||||
hbm = NULL;
|
||||
|
||||
if (hbm && minimalWidth <= bm.bmWidth && minimalHeight <= bm.bmHeight)
|
||||
return hbm;
|
||||
|
||||
if (hbm)
|
||||
DeleteObject(hbm);
|
||||
|
||||
return CreateDIBWithProperties((minimalWidth * 3) / 2, (minimalHeight * 3) / 2);
|
||||
}
|
||||
|
||||
int
|
||||
GetDIBWidth(HBITMAP hBitmap)
|
||||
{
|
||||
@@ -75,7 +143,7 @@ GetDIBHeight(HBITMAP hBitmap)
|
||||
return bm.bmHeight;
|
||||
}
|
||||
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC)
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPCTSTR FileName, HDC hDC)
|
||||
{
|
||||
CImageDx img;
|
||||
img.Attach(hBitmap);
|
||||
@@ -94,15 +162,15 @@ BOOL SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC)
|
||||
// update time and size
|
||||
FILETIME ft;
|
||||
FileTimeToLocalFileTime(&find.ftLastWriteTime, &ft);
|
||||
FileTimeToSystemTime(&ft, &fileTime);
|
||||
fileSize = find.nFileSizeLow;
|
||||
FileTimeToSystemTime(&ft, &g_fileTime);
|
||||
g_fileSize = find.nFileSizeLow;
|
||||
|
||||
// TODO: update hRes and vRes
|
||||
|
||||
registrySettings.SetMostRecentFile(FileName);
|
||||
|
||||
isAFile = TRUE;
|
||||
imageSaved = TRUE;
|
||||
g_isAFile = TRUE;
|
||||
g_imageSaved = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -130,33 +198,33 @@ HBITMAP SetBitmapAndInfo(HBITMAP hBitmap, LPCTSTR name, DWORD dwFileSize, BOOL i
|
||||
g_yDpi = GetDeviceCaps(hScreenDC, LOGPIXELSY);
|
||||
ReleaseDC(NULL, hScreenDC);
|
||||
|
||||
ZeroMemory(&fileTime, sizeof(fileTime));
|
||||
ZeroMemory(&g_fileTime, sizeof(g_fileTime));
|
||||
}
|
||||
|
||||
// update image
|
||||
imageModel.Insert(hBitmap);
|
||||
imageModel.PushImageForUndo(hBitmap);
|
||||
imageModel.ClearHistory();
|
||||
|
||||
// update fileSize
|
||||
fileSize = dwFileSize;
|
||||
// update g_fileSize
|
||||
g_fileSize = dwFileSize;
|
||||
|
||||
// update filepathname
|
||||
// update g_szFileName
|
||||
if (name && name[0])
|
||||
GetFullPathName(name, _countof(filepathname), filepathname, NULL);
|
||||
GetFullPathName(name, _countof(g_szFileName), g_szFileName, NULL);
|
||||
else
|
||||
LoadString(hProgInstance, IDS_DEFAULTFILENAME, filepathname, _countof(filepathname));
|
||||
LoadString(g_hinstExe, IDS_DEFAULTFILENAME, g_szFileName, _countof(g_szFileName));
|
||||
|
||||
// set title
|
||||
CString strTitle;
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(filepathname));
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(g_szFileName));
|
||||
mainWindow.SetWindowText(strTitle);
|
||||
|
||||
// update file info and recent
|
||||
isAFile = isFile;
|
||||
if (isAFile)
|
||||
registrySettings.SetMostRecentFile(filepathname);
|
||||
g_isAFile = isFile;
|
||||
if (g_isAFile)
|
||||
registrySettings.SetMostRecentFile(g_szFileName);
|
||||
|
||||
imageSaved = TRUE;
|
||||
g_imageSaved = TRUE;
|
||||
|
||||
return hBitmap;
|
||||
}
|
||||
@@ -184,7 +252,7 @@ HBITMAP DoLoadImageFile(HWND hwnd, LPCTSTR name, BOOL fIsMainFile)
|
||||
{
|
||||
FILETIME ft;
|
||||
FileTimeToLocalFileTime(&find.ftLastWriteTime, &ft);
|
||||
FileTimeToSystemTime(&ft, &fileTime);
|
||||
FileTimeToSystemTime(&ft, &g_fileTime);
|
||||
return SetBitmapAndInfo(NULL, name, dwFileSize, TRUE);
|
||||
}
|
||||
}
|
||||
@@ -213,7 +281,7 @@ HBITMAP DoLoadImageFile(HWND hwnd, LPCTSTR name, BOOL fIsMainFile)
|
||||
{
|
||||
FILETIME ft;
|
||||
FileTimeToLocalFileTime(&find.ftLastWriteTime, &ft);
|
||||
FileTimeToSystemTime(&ft, &fileTime);
|
||||
FileTimeToSystemTime(&ft, &g_fileTime);
|
||||
SetBitmapAndInfo(hBitmap, name, dwFileSize, TRUE);
|
||||
}
|
||||
|
||||
@@ -263,7 +331,7 @@ HBITMAP Rotate90DegreeBlt(HDC hDC1, INT cx, INT cy, BOOL bRight, BOOL bMono)
|
||||
#define M_PI 3.14159265
|
||||
#endif
|
||||
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical)
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical, BOOL bMono)
|
||||
{
|
||||
if (nDegree == 0)
|
||||
return CopyDIBImage(hbm);
|
||||
@@ -281,7 +349,11 @@ HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical)
|
||||
if (dx == 0 && dy == 0)
|
||||
return CopyDIBImage(hbm);
|
||||
|
||||
HBITMAP hbmNew = CreateColorDIB(cx + dx, cy + dy, RGB(255, 255, 255));
|
||||
HBITMAP hbmNew;
|
||||
if (bMono)
|
||||
hbmNew = CreateMonoBitmap(cx + dx, cy + dy, FALSE);
|
||||
else
|
||||
hbmNew = CreateColorDIB(cx + dx, cy + dy, RGB(255, 255, 255));
|
||||
if (!hbmNew)
|
||||
return NULL;
|
||||
|
||||
@@ -309,7 +381,140 @@ HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical)
|
||||
BitBlt(hDC2, delta, y, cx, 1, hDC1, 0, y, SRCCOPY);
|
||||
}
|
||||
}
|
||||
|
||||
SelectObject(hDC2, hbm2Old);
|
||||
DeleteDC(hDC2);
|
||||
return hbmNew;
|
||||
}
|
||||
|
||||
struct BITMAPINFODX : BITMAPINFO
|
||||
{
|
||||
RGBQUAD bmiColorsAdditional[256 - 1];
|
||||
};
|
||||
|
||||
HGLOBAL BitmapToClipboardDIB(HBITMAP hBitmap)
|
||||
{
|
||||
BITMAP bm;
|
||||
if (!GetObject(hBitmap, sizeof(BITMAP), &bm))
|
||||
return NULL;
|
||||
|
||||
BITMAPINFODX bmi;
|
||||
ZeroMemory(&bmi, sizeof(bmi));
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biWidth = bm.bmWidth;
|
||||
bmi.bmiHeader.biHeight = bm.bmHeight;
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = bm.bmBitsPixel;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
bmi.bmiHeader.biSizeImage = bm.bmWidthBytes * bm.bmHeight;
|
||||
|
||||
INT cColors;
|
||||
if (bm.bmBitsPixel < 16)
|
||||
cColors = 1 << bm.bmBitsPixel;
|
||||
else
|
||||
cColors = 0;
|
||||
|
||||
HDC hDC = CreateCompatibleDC(NULL);
|
||||
|
||||
if (cColors)
|
||||
{
|
||||
HGDIOBJ hbmOld = SelectObject(hDC, hBitmap);
|
||||
cColors = GetDIBColorTable(hDC, 0, cColors, bmi.bmiColors);
|
||||
SelectObject(hDC, hbmOld);
|
||||
}
|
||||
|
||||
DWORD cbColors = cColors * sizeof(RGBQUAD);
|
||||
DWORD dwSize = sizeof(BITMAPINFOHEADER) + cbColors + bmi.bmiHeader.biSizeImage;
|
||||
HGLOBAL hGlobal = GlobalAlloc(GHND | GMEM_SHARE, dwSize);
|
||||
if (hGlobal)
|
||||
{
|
||||
LPBYTE pb = (LPBYTE)GlobalLock(hGlobal);
|
||||
if (pb)
|
||||
{
|
||||
CopyMemory(pb, &bmi, sizeof(BITMAPINFOHEADER));
|
||||
pb += sizeof(BITMAPINFOHEADER);
|
||||
|
||||
CopyMemory(pb, bmi.bmiColors, cbColors);
|
||||
pb += cbColors;
|
||||
|
||||
GetDIBits(hDC, hBitmap, 0, bm.bmHeight, pb, &bmi, DIB_RGB_COLORS);
|
||||
|
||||
GlobalUnlock(hGlobal);
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalFree(hGlobal);
|
||||
hGlobal = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
DeleteDC(hDC);
|
||||
|
||||
return hGlobal;
|
||||
}
|
||||
|
||||
HBITMAP BitmapFromClipboardDIB(HGLOBAL hGlobal)
|
||||
{
|
||||
LPBYTE pb = (LPBYTE)GlobalLock(hGlobal);
|
||||
if (!pb)
|
||||
return NULL;
|
||||
|
||||
LPBITMAPINFO pbmi = (LPBITMAPINFO)pb;
|
||||
pb += pbmi->bmiHeader.biSize;
|
||||
|
||||
INT cColors = 0, cbColors = 0;
|
||||
if (pbmi->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
|
||||
{
|
||||
LPBITMAPCOREINFO pbmci = (LPBITMAPCOREINFO)pbmi;
|
||||
WORD BitCount = pbmci->bmciHeader.bcBitCount;
|
||||
if (BitCount < 16)
|
||||
{
|
||||
cColors = (1 << BitCount);
|
||||
cbColors = cColors * sizeof(RGBTRIPLE);
|
||||
pb += cbColors;
|
||||
}
|
||||
}
|
||||
else if (pbmi->bmiHeader.biSize >= sizeof(BITMAPINFOHEADER))
|
||||
{
|
||||
WORD BitCount = pbmi->bmiHeader.biBitCount;
|
||||
if (BitCount < 16)
|
||||
{
|
||||
cColors = (1 << BitCount);
|
||||
cbColors = cColors * sizeof(RGBQUAD);
|
||||
pb += cbColors;
|
||||
}
|
||||
}
|
||||
|
||||
HDC hDC = CreateCompatibleDC(NULL);
|
||||
HBITMAP hBitmap = CreateDIBSection(hDC, pbmi, DIB_RGB_COLORS, NULL, NULL, 0);
|
||||
if (hBitmap)
|
||||
{
|
||||
SetDIBits(hDC, hBitmap, 0, labs(pbmi->bmiHeader.biHeight), pb, pbmi, DIB_RGB_COLORS);
|
||||
}
|
||||
DeleteDC(hDC);
|
||||
|
||||
GlobalUnlock(hGlobal);
|
||||
|
||||
return hBitmap;
|
||||
}
|
||||
|
||||
HBITMAP BitmapFromHEMF(HENHMETAFILE hEMF)
|
||||
{
|
||||
ENHMETAHEADER header;
|
||||
if (!GetEnhMetaFileHeader(hEMF, sizeof(header), &header))
|
||||
return NULL;
|
||||
|
||||
CRect rc = *(LPRECT)&header.rclBounds;
|
||||
INT cx = rc.Width(), cy = rc.Height();
|
||||
HBITMAP hbm = CreateColorDIB(cx, cy, RGB(255, 255, 255));
|
||||
if (!hbm)
|
||||
return NULL;
|
||||
|
||||
HDC hDC = CreateCompatibleDC(NULL);
|
||||
HGDIOBJ hbmOld = SelectObject(hDC, hbm);
|
||||
PlayEnhMetaFile(hDC, hEMF, &rc);
|
||||
SelectObject(hDC, hbmOld);
|
||||
DeleteDC(hDC);
|
||||
|
||||
return hbm;
|
||||
}
|
||||
|
@@ -9,7 +9,11 @@
|
||||
#pragma once
|
||||
|
||||
HBITMAP CreateDIBWithProperties(int width, int height);
|
||||
HBITMAP CreateMonoBitmap(int width, int height, BOOL bWhite);
|
||||
HBITMAP CreateColorDIB(int width, int height, COLORREF rgb);
|
||||
HBITMAP CachedBufferDIB(HBITMAP hbm, int minimalWidth, int minimalHeight);
|
||||
|
||||
HBITMAP CopyMonoImage(HBITMAP hbm, INT cx = 0, INT cy = 0);
|
||||
|
||||
static inline HBITMAP CopyDIBImage(HBITMAP hbm, INT cx = 0, INT cy = 0)
|
||||
{
|
||||
@@ -20,7 +24,7 @@ int GetDIBWidth(HBITMAP hbm);
|
||||
|
||||
int GetDIBHeight(HBITMAP hbm);
|
||||
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC);
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPCTSTR FileName, HDC hDC);
|
||||
|
||||
HBITMAP DoLoadImageFile(HWND hwnd, LPCTSTR name, BOOL fIsMainFile);
|
||||
|
||||
@@ -30,6 +34,12 @@ HBITMAP SetBitmapAndInfo(HBITMAP hBitmap, LPCTSTR name, DWORD dwFileSize, BOOL i
|
||||
|
||||
HBITMAP Rotate90DegreeBlt(HDC hDC1, INT cx, INT cy, BOOL bRight, BOOL bMono);
|
||||
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical);
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical, BOOL bMono = FALSE);
|
||||
|
||||
float PpmFromDpi(float dpi);
|
||||
float PpcmFromDpi(float dpi);
|
||||
|
||||
#define ROUND(x) (INT)((x) + 0.5)
|
||||
|
||||
HGLOBAL BitmapToClipboardDIB(HBITMAP hBitmap);
|
||||
HBITMAP BitmapFromClipboardDIB(HGLOBAL hGlobal);
|
||||
HBITMAP BitmapFromHEMF(HENHMETAFILE hEMF);
|
||||
|
@@ -116,46 +116,52 @@ 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 a, b;
|
||||
HPEN oldPen;
|
||||
HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
|
||||
LONG b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
HBRUSH hbr = ::CreateSolidBrush(color);
|
||||
|
||||
b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
|
||||
for(a = 0; a <= b; a++)
|
||||
Rectangle(hdc,
|
||||
(x1 * (b - a) + x2 * a) / b - radius,
|
||||
(y1 * (b - a) + y2 * a) / b - radius,
|
||||
(x1 * (b - a) + x2 * a) / b + radius,
|
||||
(y1 * (b - a) + y2 * a) / b + radius);
|
||||
DeleteObject(SelectObject(hdc, oldBrush));
|
||||
DeleteObject(SelectObject(hdc, oldPen));
|
||||
for (LONG a = 0; a <= b; a++)
|
||||
{
|
||||
LONG cx = (x1 * (b - a) + x2 * a) / b;
|
||||
LONG cy = (y1 * (b - a) + y2 * a) / b;
|
||||
RECT rc = { cx - radius, cy - radius, cx + radius, cy + radius };
|
||||
::FillRect(hdc, &rc, hbr);
|
||||
}
|
||||
|
||||
::DeleteObject(hbr);
|
||||
}
|
||||
|
||||
void
|
||||
Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius)
|
||||
{
|
||||
LONG a, b, x, y;
|
||||
b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
LONG b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
|
||||
for(a = 0; a <= b; a++)
|
||||
for(y = (y1 * (b - a) + y2 * a) / b - radius + 1;
|
||||
y < (y1 * (b - a) + y2 * a) / b + radius + 1; y++)
|
||||
for(x = (x1 * (b - a) + x2 * a) / b - radius + 1;
|
||||
x < (x1 * (b - a) + x2 * a) / b + radius + 1; x++)
|
||||
if (GetPixel(hdc, x, y) == fg)
|
||||
SetPixel(hdc, x, y, bg);
|
||||
for (LONG a = 0; a <= b; a++)
|
||||
{
|
||||
LONG cx = (x1 * (b - a) + x2 * a) / b;
|
||||
LONG cy = (y1 * (b - a) + y2 * a) / b;
|
||||
RECT rc = { cx - radius, cy - radius, cx + radius, cy + radius };
|
||||
for (LONG y = rc.top; y < rc.bottom; ++y)
|
||||
{
|
||||
for (LONG x = rc.left; x < rc.right; ++x)
|
||||
{
|
||||
if (::GetPixel(hdc, x, y) == fg)
|
||||
::SetPixelV(hdc, x, y, bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r)
|
||||
{
|
||||
LONG a, b;
|
||||
|
||||
for(b = -r; b <= r; b++)
|
||||
for(a = -r; a <= r; a++)
|
||||
if ((a * a + b * b <= r * r) && (rand() % 4 == 0))
|
||||
SetPixel(hdc, x + a, y + b, color);
|
||||
for (LONG dy = -r; dy <= r; dy++)
|
||||
{
|
||||
for (LONG dx = -r; dx <= r; dx++)
|
||||
{
|
||||
if ((dx * dx + dy * dy <= r * r) && (rand() % r == 0))
|
||||
::SetPixelV(hdc, x + dx, y + dy, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -183,7 +189,7 @@ Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style)
|
||||
case 2:
|
||||
MoveToEx(hdc, x1, y1, NULL);
|
||||
LineTo(hdc, x2, y2);
|
||||
SetPixel(hdc, x2, y2, color);
|
||||
::SetPixelV(hdc, x2, y2, color);
|
||||
break;
|
||||
case 3:
|
||||
for(a = 0; a <= b; a++)
|
||||
@@ -366,9 +372,9 @@ ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
|
||||
|
||||
void DrawXorRect(HDC hdc, const RECT *prc)
|
||||
{
|
||||
HGDIOBJ oldPen = ::SelectObject(hdc, ::CreatePen(PS_SOLID, 0, RGB(255, 255, 255)));
|
||||
HGDIOBJ oldPen = ::SelectObject(hdc, ::CreatePen(PS_SOLID, 0, RGB(0, 0, 0)));
|
||||
HGDIOBJ oldBrush = ::SelectObject(hdc, ::GetStockObject(NULL_BRUSH));
|
||||
INT oldRop2 = SetROP2(hdc, R2_XORPEN);
|
||||
INT oldRop2 = SetROP2(hdc, R2_NOTXORPEN);
|
||||
::Rectangle(hdc, prc->left, prc->top, prc->right, prc->bottom);
|
||||
::SetROP2(hdc, oldRop2);
|
||||
::SelectObject(hdc, oldBrush);
|
||||
|
@@ -23,8 +23,8 @@ HWND CFullscreenWindow::DoCreate()
|
||||
|
||||
LRESULT CFullscreenWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
SendMessage(WM_SETICON, ICON_BIG, (LPARAM) LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
SendMessage(WM_SETICON, ICON_SMALL, (LPARAM) LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
SendMessage(WM_SETICON, ICON_BIG, (LPARAM) LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
SendMessage(WM_SETICON, ICON_SMALL, (LPARAM) LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -50,12 +50,6 @@ LRESULT CFullscreenWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CFullscreenWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
Invalidate(TRUE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CFullscreenWindow::OnGetText(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
// return caption of the main window, instead
|
||||
|
@@ -11,7 +11,8 @@
|
||||
class CFullscreenWindow : public CWindowImpl<CFullscreenWindow>
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(_T("FullscreenWindow"), CS_DBLCLKS, COLOR_BACKGROUND)
|
||||
DECLARE_WND_CLASS_EX(_T("FullscreenWindow"), CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
|
||||
COLOR_BACKGROUND)
|
||||
|
||||
BEGIN_MSG_MAP(CFullscreenWindow)
|
||||
MESSAGE_HANDLER(WM_CREATE, OnCreate)
|
||||
@@ -19,7 +20,6 @@ public:
|
||||
MESSAGE_HANDLER(WM_KEYDOWN, OnCloseOrKeyDownOrLButtonDown)
|
||||
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnCloseOrKeyDownOrLButtonDown)
|
||||
MESSAGE_HANDLER(WM_PAINT, OnPaint)
|
||||
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
||||
MESSAGE_HANDLER(WM_GETTEXT, OnGetText)
|
||||
END_MSG_MAP()
|
||||
|
||||
@@ -29,6 +29,5 @@ private:
|
||||
LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCloseOrKeyDownOrLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnGetText(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
};
|
||||
|
@@ -10,18 +10,16 @@
|
||||
|
||||
/* VARIABLES declared in main.cpp ***********************************/
|
||||
|
||||
extern BOOL askBeforeEnlarging;
|
||||
extern BOOL g_askBeforeEnlarging;
|
||||
|
||||
extern POINT start;
|
||||
extern POINT last;
|
||||
extern POINT g_ptStart, g_ptEnd;
|
||||
|
||||
extern HINSTANCE hProgInstance;
|
||||
extern HINSTANCE g_hinstExe;
|
||||
|
||||
extern TCHAR filepathname[MAX_LONG_PATH];
|
||||
extern BOOL isAFile;
|
||||
extern BOOL imageSaved;
|
||||
|
||||
extern BOOL showGrid;
|
||||
extern TCHAR g_szFileName[MAX_LONG_PATH];
|
||||
extern BOOL g_isAFile;
|
||||
extern BOOL g_imageSaved;
|
||||
extern BOOL g_showGrid;
|
||||
|
||||
extern CMainWindow mainWindow;
|
||||
|
||||
@@ -40,11 +38,11 @@ extern ToolsModel toolsModel;
|
||||
extern SelectionModel selectionModel;
|
||||
extern PaletteModel paletteModel;
|
||||
|
||||
extern HWND hStatusBar;
|
||||
extern HWND g_hStatusBar;
|
||||
extern float g_xDpi;
|
||||
extern float g_yDpi;
|
||||
extern INT fileSize;
|
||||
extern SYSTEMTIME fileTime;
|
||||
extern INT g_fileSize;
|
||||
extern SYSTEMTIME g_fileTime;
|
||||
|
||||
extern CFullscreenWindow fullscreenWindow;
|
||||
extern CMiniatureWindow miniature;
|
||||
|
@@ -4,6 +4,7 @@
|
||||
* FILE: base/applications/mspaint/history.cpp
|
||||
* PURPOSE: Undo and redo functionality
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* Katayama Hirofumi MZ
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -12,178 +13,159 @@ ImageModel imageModel;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
void ImageModel::NotifyDimensionsChanged()
|
||||
{
|
||||
if (canvasWindow.IsWindow())
|
||||
canvasWindow.SendMessage(WM_IMAGEMODELDIMENSIONSCHANGED);
|
||||
}
|
||||
|
||||
void ImageModel::NotifyImageChanged()
|
||||
{
|
||||
if (canvasWindow.IsWindow())
|
||||
canvasWindow.SendMessage(WM_IMAGEMODELIMAGECHANGED);
|
||||
canvasWindow.Invalidate(FALSE);
|
||||
if (miniature.IsWindow())
|
||||
miniature.Invalidate(FALSE);
|
||||
}
|
||||
|
||||
ImageModel::ImageModel()
|
||||
: m_hDrawingDC(::CreateCompatibleDC(NULL))
|
||||
, m_currInd(0)
|
||||
, m_undoSteps(0)
|
||||
, m_redoSteps(0)
|
||||
{
|
||||
currInd = 0;
|
||||
undoSteps = 0;
|
||||
redoSteps = 0;
|
||||
imageSaved = TRUE;
|
||||
ZeroMemory(m_hBms, sizeof(m_hBms));
|
||||
|
||||
// prepare a minimal usable bitmap
|
||||
int imgXRes = 1;
|
||||
int imgYRes = 1;
|
||||
m_hBms[0] = CreateColorDIB(1, 1, RGB(255, 255, 255));
|
||||
m_hbmOld = ::SelectObject(m_hDrawingDC, m_hBms[0]);
|
||||
|
||||
hDrawingDC = CreateCompatibleDC(NULL);
|
||||
SelectObject(hDrawingDC, CreatePen(PS_SOLID, 0, paletteModel.GetFgColor()));
|
||||
SelectObject(hDrawingDC, CreateSolidBrush(paletteModel.GetBgColor()));
|
||||
|
||||
hBms[0] = CreateDIBWithProperties(imgXRes, imgYRes);
|
||||
SelectObject(hDrawingDC, hBms[0]);
|
||||
Rectangle(hDrawingDC, 0 - 1, 0 - 1, imgXRes + 1, imgYRes + 1);
|
||||
g_imageSaved = TRUE;
|
||||
}
|
||||
|
||||
void ImageModel::CopyPrevious()
|
||||
ImageModel::~ImageModel()
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, currInd);
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = CopyDIBImage(hBms[currInd]);
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
imageSaved = FALSE;
|
||||
::DeleteDC(m_hDrawingDC);
|
||||
|
||||
for (size_t i = 0; i < HISTORYSIZE; ++i)
|
||||
{
|
||||
if (m_hBms[i])
|
||||
::DeleteObject(m_hBms[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void ImageModel::Undo(BOOL bClearRedo)
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, undoSteps);
|
||||
if (undoSteps > 0)
|
||||
{
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
selectionModel.m_bShow = FALSE;
|
||||
currInd = (currInd + HISTORYSIZE - 1) % HISTORYSIZE;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
undoSteps--;
|
||||
if (bClearRedo)
|
||||
redoSteps = 0;
|
||||
else if (redoSteps < HISTORYSIZE - 1)
|
||||
redoSteps++;
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_undoSteps);
|
||||
if (!CanUndo())
|
||||
return;
|
||||
|
||||
selectionModel.HideSelection();
|
||||
|
||||
// Select previous item
|
||||
m_currInd = (m_currInd + HISTORYSIZE - 1) % HISTORYSIZE;
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
m_undoSteps--;
|
||||
if (bClearRedo)
|
||||
m_redoSteps = 0;
|
||||
else if (m_redoSteps < HISTORYSIZE - 1)
|
||||
m_redoSteps++;
|
||||
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Redo()
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, redoSteps);
|
||||
if (redoSteps > 0)
|
||||
{
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
selectionModel.m_bShow = FALSE;
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
redoSteps--;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_redoSteps);
|
||||
if (!CanRedo())
|
||||
return;
|
||||
|
||||
selectionModel.HideSelection();
|
||||
|
||||
// Select next item
|
||||
m_currInd = (m_currInd + 1) % HISTORYSIZE;
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
m_redoSteps--;
|
||||
if (m_undoSteps < HISTORYSIZE - 1)
|
||||
m_undoSteps++;
|
||||
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::ResetToPrevious()
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, currInd);
|
||||
DeleteObject(hBms[currInd]);
|
||||
hBms[currInd] = CopyDIBImage(hBms[(currInd + HISTORYSIZE - 1) % HISTORYSIZE]);
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_currInd);
|
||||
|
||||
// Revert current item with previous item
|
||||
::DeleteObject(m_hBms[m_currInd]);
|
||||
m_hBms[m_currInd] = CopyDIBImage(m_hBms[(m_currInd + HISTORYSIZE - 1) % HISTORYSIZE]);
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::ClearHistory()
|
||||
{
|
||||
undoSteps = 0;
|
||||
redoSteps = 0;
|
||||
m_undoSteps = 0;
|
||||
m_redoSteps = 0;
|
||||
}
|
||||
|
||||
void ImageModel::Insert(HBITMAP hbm)
|
||||
void ImageModel::PushImageForUndo(HBITMAP hbm)
|
||||
{
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = hbm;
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_currInd);
|
||||
|
||||
// Go to the next item with an HBITMAP or current item
|
||||
::DeleteObject(m_hBms[(m_currInd + 1) % HISTORYSIZE]);
|
||||
m_hBms[(m_currInd + 1) % HISTORYSIZE] = (hbm ? hbm : CopyDIBImage(m_hBms[m_currInd]));
|
||||
m_currInd = (m_currInd + 1) % HISTORYSIZE;
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
if (m_undoSteps < HISTORYSIZE - 1)
|
||||
m_undoSteps++;
|
||||
m_redoSteps = 0;
|
||||
|
||||
g_imageSaved = FALSE;
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Crop(int nWidth, int nHeight, int nOffsetX, int nOffsetY)
|
||||
{
|
||||
HDC hdc;
|
||||
HPEN oldPen;
|
||||
HBRUSH oldBrush;
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
|
||||
// We cannot create bitmaps of size zero
|
||||
if (nWidth <= 0)
|
||||
nWidth = 1;
|
||||
if (nHeight <= 0)
|
||||
nHeight = 1;
|
||||
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = CreateDIBWithProperties(nWidth, nHeight);
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
// Create an HBITMAP
|
||||
HBITMAP hbmCropped = CreateDIBWithProperties(nWidth, nHeight);
|
||||
if (!hbmCropped)
|
||||
return;
|
||||
|
||||
hdc = CreateCompatibleDC(hDrawingDC);
|
||||
SelectObject(hdc, hBms[currInd]);
|
||||
// Select the HBITMAP by memory DC
|
||||
HDC hdcMem = ::CreateCompatibleDC(m_hDrawingDC);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdcMem, hbmCropped);
|
||||
|
||||
oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, paletteModel.GetBgColor()));
|
||||
oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(paletteModel.GetBgColor()));
|
||||
Rectangle(hdc, 0, 0, nWidth, nHeight);
|
||||
BitBlt(hdc, -nOffsetX, -nOffsetY, GetWidth(), GetHeight(), hDrawingDC, 0, 0, SRCCOPY);
|
||||
DeleteObject(SelectObject(hdc, oldBrush));
|
||||
DeleteObject(SelectObject(hdc, oldPen));
|
||||
DeleteDC(hdc);
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
// Fill background of the HBITMAP
|
||||
RECT rcBack = { 0, 0, nWidth, nHeight };
|
||||
HBRUSH hbrBack = ::CreateSolidBrush(paletteModel.GetBgColor());
|
||||
::FillRect(hdcMem, &rcBack, hbrBack);
|
||||
::DeleteObject(hbrBack);
|
||||
|
||||
// Copy the old content
|
||||
::BitBlt(hdcMem, -nOffsetX, -nOffsetY, GetWidth(), GetHeight(), m_hDrawingDC, 0, 0, SRCCOPY);
|
||||
|
||||
// Clean up
|
||||
::SelectObject(hdcMem, hbmOld);
|
||||
::DeleteDC(hdcMem);
|
||||
|
||||
// Push it
|
||||
PushImageForUndo(hbmCropped);
|
||||
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::SaveImage(LPTSTR lpFileName)
|
||||
void ImageModel::SaveImage(LPCTSTR lpFileName)
|
||||
{
|
||||
SaveDIBToFile(hBms[currInd], lpFileName, hDrawingDC);
|
||||
SaveDIBToFile(m_hBms[m_currInd], lpFileName, m_hDrawingDC);
|
||||
}
|
||||
|
||||
BOOL ImageModel::IsImageSaved() const
|
||||
{
|
||||
return imageSaved;
|
||||
}
|
||||
|
||||
BOOL ImageModel::HasUndoSteps() const
|
||||
{
|
||||
return undoSteps > 0;
|
||||
}
|
||||
|
||||
BOOL ImageModel::HasRedoSteps() const
|
||||
{
|
||||
return redoSteps > 0;
|
||||
return g_imageSaved;
|
||||
}
|
||||
|
||||
void ImageModel::StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSkewDegX, int nSkewDegY)
|
||||
@@ -194,65 +176,57 @@ void ImageModel::StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSk
|
||||
INT newHeight = oldHeight * nStretchPercentY / 100;
|
||||
if (oldWidth != newWidth || oldHeight != newHeight)
|
||||
{
|
||||
HBITMAP hbm0 = CopyDIBImage(hBms[currInd], newWidth, newHeight);
|
||||
Insert(hbm0);
|
||||
HBITMAP hbm0 = CopyDIBImage(m_hBms[m_currInd], newWidth, newHeight);
|
||||
PushImageForUndo(hbm0);
|
||||
}
|
||||
if (nSkewDegX)
|
||||
{
|
||||
HBITMAP hbm1 = SkewDIB(hDrawingDC, hBms[currInd], nSkewDegX, FALSE);
|
||||
Insert(hbm1);
|
||||
HBITMAP hbm1 = SkewDIB(m_hDrawingDC, m_hBms[m_currInd], nSkewDegX, FALSE);
|
||||
PushImageForUndo(hbm1);
|
||||
}
|
||||
if (nSkewDegY)
|
||||
{
|
||||
HBITMAP hbm2 = SkewDIB(hDrawingDC, hBms[currInd], nSkewDegY, TRUE);
|
||||
Insert(hbm2);
|
||||
HBITMAP hbm2 = SkewDIB(m_hDrawingDC, m_hBms[m_currInd], nSkewDegY, TRUE);
|
||||
PushImageForUndo(hbm2);
|
||||
}
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
int ImageModel::GetWidth() const
|
||||
{
|
||||
return GetDIBWidth(hBms[currInd]);
|
||||
return GetDIBWidth(m_hBms[m_currInd]);
|
||||
}
|
||||
|
||||
int ImageModel::GetHeight() const
|
||||
{
|
||||
return GetDIBHeight(hBms[currInd]);
|
||||
return GetDIBHeight(m_hBms[m_currInd]);
|
||||
}
|
||||
|
||||
void ImageModel::InvertColors()
|
||||
{
|
||||
RECT rect = {0, 0, GetWidth(), GetHeight()};
|
||||
CopyPrevious();
|
||||
InvertRect(hDrawingDC, &rect);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Clear(COLORREF color)
|
||||
{
|
||||
Rectangle(hDrawingDC, 0 - 1, 0 - 1, GetWidth() + 1, GetHeight() + 1);
|
||||
PushImageForUndo();
|
||||
InvertRect(m_hDrawingDC, &rect);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
HDC ImageModel::GetDC()
|
||||
{
|
||||
return hDrawingDC;
|
||||
return m_hDrawingDC;
|
||||
}
|
||||
|
||||
void ImageModel::FlipHorizontally()
|
||||
{
|
||||
CopyPrevious();
|
||||
StretchBlt(hDrawingDC, GetWidth() - 1, 0, -GetWidth(), GetHeight(), GetDC(), 0, 0,
|
||||
PushImageForUndo();
|
||||
StretchBlt(m_hDrawingDC, GetWidth() - 1, 0, -GetWidth(), GetHeight(), GetDC(), 0, 0,
|
||||
GetWidth(), GetHeight(), SRCCOPY);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::FlipVertically()
|
||||
{
|
||||
CopyPrevious();
|
||||
StretchBlt(hDrawingDC, 0, GetHeight() - 1, GetWidth(), -GetHeight(), GetDC(), 0, 0,
|
||||
PushImageForUndo();
|
||||
StretchBlt(m_hDrawingDC, 0, GetHeight() - 1, GetWidth(), -GetHeight(), GetDC(), 0, 0,
|
||||
GetWidth(), GetHeight(), SRCCOPY);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
@@ -261,41 +235,36 @@ void ImageModel::RotateNTimes90Degrees(int iN)
|
||||
{
|
||||
switch (iN)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = Rotate90DegreeBlt(hDrawingDC, GetWidth(), GetHeight(), iN == 1, FALSE);
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
imageSaved = FALSE;
|
||||
NotifyDimensionsChanged();
|
||||
break;
|
||||
case 2:
|
||||
CopyPrevious();
|
||||
StretchBlt(hDrawingDC, GetWidth() - 1, GetHeight() - 1, -GetWidth(), -GetHeight(), GetDC(),
|
||||
0, 0, GetWidth(), GetHeight(), SRCCOPY);
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
{
|
||||
HBITMAP hbm = Rotate90DegreeBlt(m_hDrawingDC, GetWidth(), GetHeight(), iN == 1, FALSE);
|
||||
if (hbm)
|
||||
PushImageForUndo(hbm);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
PushImageForUndo();
|
||||
StretchBlt(m_hDrawingDC, GetWidth() - 1, GetHeight() - 1, -GetWidth(), -GetHeight(),
|
||||
m_hDrawingDC, 0, 0, GetWidth(), GetHeight(), SRCCOPY);
|
||||
break;
|
||||
}
|
||||
}
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::DeleteSelection()
|
||||
{
|
||||
if (!selectionModel.m_bShow)
|
||||
return;
|
||||
|
||||
selectionModel.TakeOff();
|
||||
selectionModel.m_bShow = FALSE;
|
||||
selectionModel.ClearColor();
|
||||
selectionModel.ClearMask();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Bound(POINT& pt)
|
||||
void ImageModel::Clamp(POINT& pt) const
|
||||
{
|
||||
pt.x = max(0, min(pt.x, GetWidth()));
|
||||
pt.y = max(0, min(pt.y, GetHeight()));
|
||||
}
|
||||
|
||||
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
|
||||
return ret;
|
||||
}
|
||||
|
@@ -13,38 +13,37 @@
|
||||
|
||||
class ImageModel
|
||||
{
|
||||
private:
|
||||
void NotifyDimensionsChanged();
|
||||
void NotifyImageChanged();
|
||||
HDC hDrawingDC;
|
||||
public:
|
||||
HBITMAP hBms[HISTORYSIZE];
|
||||
private:
|
||||
int currInd;
|
||||
int undoSteps;
|
||||
int redoSteps;
|
||||
public:
|
||||
ImageModel();
|
||||
void CopyPrevious(void);
|
||||
virtual ~ImageModel();
|
||||
|
||||
HDC GetDC();
|
||||
BOOL CanUndo() const { return m_undoSteps > 0; }
|
||||
BOOL CanRedo() const { return m_redoSteps > 0; }
|
||||
void PushImageForUndo(HBITMAP hbm = NULL);
|
||||
void ResetToPrevious(void);
|
||||
void Undo(BOOL bClearRedo = FALSE);
|
||||
void Redo(void);
|
||||
void ResetToPrevious(void);
|
||||
void ClearHistory(void);
|
||||
void Insert(HBITMAP hbm);
|
||||
void Crop(int nWidth, int nHeight, int nOffsetX = 0, int nOffsetY = 0);
|
||||
void SaveImage(LPTSTR lpFileName);
|
||||
void SaveImage(LPCTSTR lpFileName);
|
||||
BOOL IsImageSaved() const;
|
||||
BOOL HasUndoSteps() const;
|
||||
BOOL HasRedoSteps() const;
|
||||
void StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSkewDegX = 0, int nSkewDegY = 0);
|
||||
int GetWidth() const;
|
||||
int GetHeight() const;
|
||||
HBITMAP CopyBitmap();
|
||||
void InvertColors();
|
||||
void Clear(COLORREF color = 0x00ffffff);
|
||||
HDC GetDC();
|
||||
void FlipHorizontally();
|
||||
void FlipVertically();
|
||||
void RotateNTimes90Degrees(int iN);
|
||||
void DeleteSelection();
|
||||
void Bound(POINT& pt);
|
||||
void Clamp(POINT& pt) const;
|
||||
void NotifyImageChanged();
|
||||
|
||||
protected:
|
||||
HDC m_hDrawingDC; // The device context for this class
|
||||
int m_currInd; // The current index in m_hBms
|
||||
int m_undoSteps; // The undo-able count
|
||||
int m_redoSteps; // The redo-able count
|
||||
HBITMAP m_hBms[HISTORYSIZE]; // A rotation buffer of HBITMAPs
|
||||
HGDIOBJ m_hbmOld;
|
||||
};
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Принадлежности"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ширина:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Височина:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Дата на файла:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Файлов размер:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Разделителна:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Единици", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Инчове", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Сантиметри", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Всички файлове"
|
||||
IDS_ALLPICTUREFILES "Снимки"
|
||||
IDS_FILESIZE "%d разряда"
|
||||
IDS_PRINTRES "%d x %d точки на метър"
|
||||
IDS_INTNUMBERS "Моля въведете само числа!"
|
||||
IDS_PERCENTAGE "Процента може да бъде между 1 и 500."
|
||||
IDS_ANGLE "Ъгълът трябва да бъде между -89 и 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Наклонен"
|
||||
IDS_UNDERLINE "Подчертан"
|
||||
IDS_VERTICAL "Вертикален"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributy"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Šířka:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Výška:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Datum změny:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Velikost souboru:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Rozlišení:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Jednotka", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Palce", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centimetry", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Všechny soubory"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bajtů"
|
||||
IDS_PRINTRES "%d x %d pixelů na metr"
|
||||
IDS_INTNUMBERS "Zadávejte pouze celá čísla!"
|
||||
IDS_PERCENTAGE "Měřítko musí být mezi 1 a 500."
|
||||
IDS_ANGLE "Úhel musí být -89 a 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attribute"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Breite:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Höhe:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Dateidatum:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dateigröße:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Auflösung:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Maßeinheit", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Zoll", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Alle Dateien"
|
||||
IDS_ALLPICTUREFILES "Alle Bilddateien"
|
||||
IDS_FILESIZE "%d Bytes"
|
||||
IDS_PRINTRES "%d x %d Pixel pro Meter"
|
||||
IDS_INTNUMBERS "Bitte geben Sie nur ganze Zahlen ein!"
|
||||
IDS_PERCENTAGE "Der Prozentsatz muss zwischen 1 und 500 liegen."
|
||||
IDS_ANGLE "Der Winkel muss zwischen -89 und 89 liegen."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributes"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Width:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Height:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "File &date:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File &size:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolution:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "dpi", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Units", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inches", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d dots per inch"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributes"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Width:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Height:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "File &date:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File &size:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolution:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "dpi", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Units", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inches", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d dots per inch"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -102,6 +102,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -146,16 +165,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributos"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Anchura:", IDD_ATTRIBUTESTEXT1, 10, 42, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Altura:", IDD_ATTRIBUTESTEXT2, 101, 42, 23, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Fecha modificación:", IDD_ATTRIBUTESTEXT3, 3, 5, 67, 10, SS_RIGHT
|
||||
LTEXT "Espacio en disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10, SS_RIGHT
|
||||
LTEXT "Resolución:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10, SS_RIGHT
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT6, 73, 5, 80, 10
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT7, 73, 15, 80, 10
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT8, 73, 25, 80, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 73, 25, 80, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unidades ", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Pulgadas", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centímetros", IDD_ATTRIBUTESRB2, 60, 69, 51, 10
|
||||
@@ -234,7 +253,6 @@ BEGIN
|
||||
IDS_ALLFILES "Todos los archivos"
|
||||
IDS_ALLPICTUREFILES "Todos los archivos de imagen"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d píxeles/m"
|
||||
IDS_INTNUMBERS "Sólo se admiten números sin decimales."
|
||||
IDS_PERCENTAGE "El porcentaje debe de estar entre 1 y 500."
|
||||
IDS_ANGLE "El ángulo debe de estar entre -89 y 89."
|
||||
@@ -244,4 +262,6 @@ BEGIN
|
||||
IDS_ITALIC "Cursiva"
|
||||
IDS_UNDERLINE "Subrayado"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribuudid"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Laius:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Pikkus:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Faili &kuupäev:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Faili &suurus:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolutsioon:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Pole saadaval", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Pole saadaval", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Pole saadaval", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Ühikud", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Tollid", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Kõik failid"
|
||||
IDS_ALLPICTUREFILES "Kõik Pildifailid"
|
||||
IDS_FILESIZE "%d baiti"
|
||||
IDS_PRINTRES "%d x %d pikslit meetri kohta"
|
||||
IDS_INTNUMBERS "Palun sisesta ainult terviklike numbreid!"
|
||||
IDS_PERCENTAGE "Protsent peab 1 ja 500 vahemikus olema."
|
||||
IDS_ANGLE "Nurk peab -89 ja 89 vahemikus olema."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -92,6 +92,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,16 +155,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributuak"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Zabalera:", IDD_ATTRIBUTESTEXT1, 10, 42, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Altuera:", IDD_ATTRIBUTESTEXT2, 82, 42, 23, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Azken gordetze-data:", IDD_ATTRIBUTESTEXT3, 10, 5, 80, 10
|
||||
LTEXT "Diskoko tamaina:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Bereizmena:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT6, 80, 5, 70, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT7, 80, 15, 70, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT8, 80, 25, 70, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 80, 25, 70, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unitateak ", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Hazbetea", IDD_ATTRIBUTESRB1, 12, 69, 42, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 60, 69, 30, 10
|
||||
@@ -224,7 +243,6 @@ BEGIN
|
||||
IDS_ALLFILES "Fitxategi gustiak"
|
||||
IDS_ALLPICTUREFILES "Argazki fitxategi guztiak"
|
||||
IDS_FILESIZE "%d byte-k"
|
||||
IDS_PRINTRES "%d x %d pixel-ak metro"
|
||||
IDS_INTNUMBERS "Mezedez sartu zembaki oso bakarrik!"
|
||||
IDS_PERCENTAGE "Ehuneko 1 eta 500 tartean izan behar da."
|
||||
IDS_ANGLE "Angelu -89 eta 89 tartean izan behar da."
|
||||
@@ -234,4 +252,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -92,6 +92,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,16 +155,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributs"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Largeur :", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Hauteur :", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Dernier enregistrement du fichier :", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Taille sur le disque :", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Résolution :", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unités", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Pouces", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -224,7 +243,6 @@ BEGIN
|
||||
IDS_ALLFILES "Tous les fichiers"
|
||||
IDS_ALLPICTUREFILES "Toutes les images"
|
||||
IDS_FILESIZE "%d octets"
|
||||
IDS_PRINTRES "%d x %d pixels par mètre"
|
||||
IDS_INTNUMBERS "Veuillez entrer des nombres entiers uniquement !"
|
||||
IDS_PERCENTAGE "Le pourcentage doit être entre 1 et 500."
|
||||
IDS_ANGLE "L'angle doit être entre -89 et 89."
|
||||
@@ -234,4 +252,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -92,6 +92,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -138,16 +157,16 @@ EXSTYLE WS_EX_LAYOUTRTL
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "תכונות"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "רוחב:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "גובה:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "תאריך קובץ:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "גודל קובץ:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "גודל תמונה:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "לא זמין", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "לא זמין", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "לא זמין", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "יחידות מדידה", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "אינצ'ים", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "סנטימטרים", IDD_ATTRIBUTESRB2, 55, 69, 51, 10
|
||||
@@ -227,7 +246,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d בתים"
|
||||
IDS_PRINTRES, "%d x %d פיקסלים למטר"
|
||||
IDS_INTNUMBERS, "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE, "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE, "The angle must be between -89 and 89."
|
||||
@@ -237,4 +255,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -92,6 +92,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,16 +155,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attribútumok"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Szélesség:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Magasság:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Fájl dátuma:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Fájlméret:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Felbontás:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nem elérhető", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nem elérhető", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nem elérhető", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Egység", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Hüvelyk", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -224,7 +243,6 @@ BEGIN
|
||||
IDS_ALLFILES "Minden fájl"
|
||||
IDS_ALLPICTUREFILES "Minden képfájl"
|
||||
IDS_FILESIZE "%d bájt"
|
||||
IDS_PRINTRES "%d x %d pixel per méter"
|
||||
IDS_INTNUMBERS "Kérem csak egész számokat írjon be!"
|
||||
IDS_PERCENTAGE "A százaléknak 1 és 500 között kell lennie."
|
||||
IDS_ANGLE "A szögnek -89 és 89 között kell lennie."
|
||||
@@ -234,4 +252,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribut"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Lebar:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Tinggi:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "T&anggal berkas:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "&Ukuran berkas:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolusi:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Satuan", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inci", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Semua Berkas"
|
||||
IDS_ALLPICTUREFILES "Semua Berkas Gambar"
|
||||
IDS_FILESIZE "%d byte"
|
||||
IDS_PRINTRES "%d x %d piksel per meter"
|
||||
IDS_INTNUMBERS "Mohon hanya masukkan angka!"
|
||||
IDS_PERCENTAGE "Persentasi harus antara 1 and 500."
|
||||
IDS_ANGLE "Sudut hanya tersedia antara -89 and 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributi"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Larghezza:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Altezza:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ultimo salvataggio:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dimensioni su disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Risoluzione:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unità di misura", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Pollici", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per metro"
|
||||
IDS_INTNUMBERS "Si prega di inserire solo numeri interi!"
|
||||
IDS_PERCENTAGE "La percentuale deve essere compresa tra 1 e 500."
|
||||
IDS_ANGLE "L'angolo deve essere compreso tra -89 e 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -78,7 +78,7 @@ BEGIN
|
||||
POPUP "画像(&I)"
|
||||
BEGIN
|
||||
MENUITEM "回転と反転(&M)\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "伸縮/傾斜(&S)\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "伸縮と傾斜(&S)\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "切り取り(&C)", IDM_IMAGECROP
|
||||
MENUITEM "色の反転(&I)\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
MENUITEM "画像の属性(&A)\tCtrl+E", IDM_IMAGEATTRIBUTES
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "切り取り(&T)\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "コピー(&C)\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "貼り付け(&P)\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "選択範囲の削除(&L)\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "すべて選択(&A)\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "ファイルへコピー(&O)...", IDM_EDITCOPYTO
|
||||
MENUITEM "ファイルから貼り付け(&F)...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "回転と反転(&M)\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "伸縮と傾斜(&S)\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "色の反転(&I)\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "MS UI Gothic"
|
||||
CAPTION "画像の属性"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "幅(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高さ(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "ファイルの日付(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "ファイルのサイズ(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解像度(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "利用不可", IDD_ATTRIBUTESTEXT6, 75, 5, 90, 10
|
||||
LTEXT "利用不可", IDD_ATTRIBUTESTEXT7, 75, 15, 90, 10
|
||||
LTEXT "利用不可", IDD_ATTRIBUTESTEXT8, 75, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 75, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "単位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "インチ(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "すべてのファイル"
|
||||
IDS_ALLPICTUREFILES "すべての画像ファイル"
|
||||
IDS_FILESIZE "%d バイト"
|
||||
IDS_PRINTRES "%d x %d ピクセル/メートル"
|
||||
IDS_INTNUMBERS "整数だけを入力して下さい!"
|
||||
IDS_PERCENTAGE "百分率は 1 から 500 の間でなければなりません。"
|
||||
IDS_ANGLE "角度は -89 から 89 の間でなければなりません。"
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "斜体"
|
||||
IDS_UNDERLINE "下線"
|
||||
IDS_VERTICAL "縦書き"
|
||||
IDS_PRINTRES "%d x %d ピクセル/cm"
|
||||
IDS_CANTPASTE "クリップボードからの貼り付けに失敗しました。データ形式が間違っているか、未対応です。"
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Kenmerken"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Breedte:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Hoogte:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Datum laatst gewijzigd:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Bestandsgrootte:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolutie:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Eenheden", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Inch", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Alle bestanden"
|
||||
IDS_ALLPICTUREFILES "Alle beeldbestanden"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributter"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Bredde:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Høyde:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Fildato:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Filstørrelse:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Oppløsning:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Ikke tilgjengelig", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Ikke tilgjengelig", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Ikke tilgjengelig", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Enheter", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Tommer", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centimeter", IDD_ATTRIBUTESRB2, 52, 69, 55, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Alle filer"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -101,6 +101,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -145,16 +164,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atrybuty"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Szerokość:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Wysokość:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Data:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Rozmiar:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Rozdzielczość:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Brak danych", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Brak danych", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Brak danych", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Jednostki", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Cale", IDD_ATTRIBUTESRB1, 12, 69, 35, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centy&metry", IDD_ATTRIBUTESRB2, 52, 69, 55, 10
|
||||
@@ -233,7 +252,6 @@ BEGIN
|
||||
IDS_ALLFILES "Wszystkie pliki"
|
||||
IDS_ALLPICTUREFILES "Wszystkie pliki graficzne"
|
||||
IDS_FILESIZE "%d bajtów"
|
||||
IDS_PRINTRES "%d x %d pikseli na metr"
|
||||
IDS_INTNUMBERS "Wprowadź liczbę całkowitą."
|
||||
IDS_PERCENTAGE "Wprowadź liczbę całkowitą z zakresu od 1 do 500."
|
||||
IDS_ANGLE "Wprowadź liczbę całkowitą z zakresu od -89 do 89."
|
||||
@@ -243,4 +261,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributos"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Largura:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Altura:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Data do arquivo:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Tamanho do arquivo:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolução:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unidades", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "P&olegadas", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Todos os arquivos"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -19,19 +19,19 @@ BEGIN
|
||||
MENUITEM "&Guardar\tCtrl+G", IDM_FILESAVE
|
||||
MENUITEM "Guardar &como...", IDM_FILESAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "From Scanner or Camera...", IDM_FILEFROMSCANNERORCAMERA
|
||||
MENUITEM "Scaner ou Câmera...", IDM_FILEFROMSCANNERORCAMERA
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Page View", IDM_FILEPAGEVIEW
|
||||
MENUITEM "Page Setup...", IDM_FILEPAGESETUP
|
||||
MENUITEM "Print...\tCtrl+P", IDM_FILEPRINT
|
||||
MENUITEM "Pré-visualizar", IDM_FILEPAGEVIEW
|
||||
MENUITEM "Configurar página...", IDM_FILEPAGESETUP
|
||||
MENUITEM "Imprimir...\tCtrl+P", IDM_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Send...", IDM_FILESEND
|
||||
MENUITEM "Enviar para...", IDM_FILESEND
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Definir como fundo (Mosaico)", IDM_FILEASWALLPAPERPLANE
|
||||
MENUITEM "Definir como fundo (Centrado)", IDM_FILEASWALLPAPERCENTERED
|
||||
MENUITEM "Definir como fundo (Esticado)", IDM_FILEASWALLPAPERSTRETCHED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Most recently used file", IDM_FILEMOSTRECENTLYUSEDFILE, GRAYED
|
||||
MENUITEM "Recente", IDM_FILEMOSTRECENTLYUSEDFILE, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sai&r\tAlt+F4", IDM_FILEEXIT
|
||||
END
|
||||
@@ -43,9 +43,9 @@ BEGIN
|
||||
MENUITEM "Cor&tar\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "&Copiar\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "Co&lar\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "Limpar &seleção\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "&Inverter seleção", IDM_EDITINVERTSELECTION
|
||||
MENUITEM "Selecionar &tudo\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM "Limpar &selecção\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "&Inverter selecção", IDM_EDITINVERTSELECTION
|
||||
MENUITEM "Seleccionar &tudo\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opiar para...", IDM_EDITCOPYTO
|
||||
MENUITEM "Colar &de...", IDM_EDITPASTEFROM
|
||||
@@ -59,7 +59,7 @@ BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Zoom"
|
||||
BEGIN
|
||||
POPUP "User defined"
|
||||
POPUP "Personalizado"
|
||||
BEGIN
|
||||
MENUITEM "12,5%", IDM_VIEWZOOM125
|
||||
MENUITEM "25%", IDM_VIEWZOOM25
|
||||
@@ -70,8 +70,8 @@ BEGIN
|
||||
MENUITEM "800%", IDM_VIEWZOOM800
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Show grid\tCtrl+M", IDM_VIEWSHOWGRID
|
||||
MENUITEM "Show miniature", IDM_VIEWSHOWMINIATURE
|
||||
MENUITEM "Mostrar grelha\tCtrl+M", IDM_VIEWSHOWGRID
|
||||
MENUITEM "Mostrar miniatura", IDM_VIEWSHOWMINIATURE
|
||||
END
|
||||
MENUITEM "&Ver mapa de bits\tCtrl+B", IDM_VIEWFULLSCREEN
|
||||
END
|
||||
@@ -89,8 +89,8 @@ BEGIN
|
||||
BEGIN
|
||||
MENUITEM "&Editar cores...", IDM_COLORSEDITPALETTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
|
||||
MENUITEM "Old palette", IDM_COLORSOLDPALETTE
|
||||
MENUITEM "Palete moderna", IDM_COLORSMODERNPALETTE
|
||||
MENUITEM "Palete antiga", IDM_COLORSOLDPALETTE
|
||||
END
|
||||
POPUP "&Ajuda"
|
||||
BEGIN
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^O", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributos"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Largura:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Altura:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Data do arquivo:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Tamanho do arquivo:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Data do ficheiro:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Tamanho no disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolução:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT6, 80, 5, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT7, 80, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 80, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unidades", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "P&olegadas", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -169,9 +188,9 @@ END
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Stretch and skew image"
|
||||
CAPTION "Esticar e inclinar imagem"
|
||||
BEGIN
|
||||
GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
|
||||
GROUPBOX "Esticar", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
|
||||
ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
|
||||
LTEXT "Horizontal:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
|
||||
@@ -180,21 +199,21 @@ BEGIN
|
||||
LTEXT "Vertical:", IDD_STRETCHSKEWTEXTVSTRETCH, 45, 49, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITVSTRETCH, 90, 48, 32, 12
|
||||
LTEXT "%", IDD_STRETCHSKEWTEXTVPERCENT, 125, 49, 15, 10
|
||||
GROUPBOX "Skew", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66
|
||||
GROUPBOX "Inclinar", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66
|
||||
ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
|
||||
LTEXT "Horizontal:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
|
||||
LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
|
||||
LTEXT "graus", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
|
||||
ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
|
||||
LTEXT "Vertical:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
|
||||
LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
|
||||
LTEXT "graus", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
|
||||
END
|
||||
|
||||
IDD_FONTS DIALOG 0, 0, 225, 25
|
||||
CAPTION "Fonts"
|
||||
CAPTION "Tipos de letra"
|
||||
STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
|
||||
EXSTYLE WS_EX_TOOLWINDOW
|
||||
FONT 8, "MS Shell Dlg"
|
||||
@@ -212,9 +231,9 @@ BEGIN
|
||||
IDS_INFOTEXT "Disponível sob a licença GNU Lesser General Public License (LGPL, visite www.gnu.org)"
|
||||
IDS_SAVEPROMPTTEXT "Pretende guardar as alterações a %s?"
|
||||
IDS_DEFAULTFILENAME "Imagem"
|
||||
IDS_MINIATURETITLE "Miniature"
|
||||
IDS_TOOLTIP1 "Selecionar forma livre"
|
||||
IDS_TOOLTIP2 "Selecionar"
|
||||
IDS_MINIATURETITLE "Miniatura"
|
||||
IDS_TOOLTIP1 "Seleccionar forma livre"
|
||||
IDS_TOOLTIP2 "Seleccionar"
|
||||
IDS_TOOLTIP3 "Borracha/Apagar cor"
|
||||
IDS_TOOLTIP4 "Preencher com cor"
|
||||
IDS_TOOLTIP5 "Escolher cor"
|
||||
@@ -223,23 +242,24 @@ BEGIN
|
||||
IDS_TOOLTIP8 "Pincel"
|
||||
IDS_TOOLTIP9 "Aerógrafo"
|
||||
IDS_TOOLTIP10 "Texto"
|
||||
IDS_TOOLTIP11 "Linnha"
|
||||
IDS_TOOLTIP11 "Linha"
|
||||
IDS_TOOLTIP12 "Curva"
|
||||
IDS_TOOLTIP13 "Retângulo"
|
||||
IDS_TOOLTIP14 "Polígono"
|
||||
IDS_TOOLTIP15 "Elipse"
|
||||
IDS_TOOLTIP16 "Retângulo arredondado"
|
||||
IDS_ALLFILES "Todos os arquivos"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_ALLFILES "Todos os ficheiros"
|
||||
IDS_ALLPICTUREFILES "Todos os ficheiros de imagem"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
IDS_LOADERRORTEXT "The file %s could not be loaded."
|
||||
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?"
|
||||
IDS_BOLD "Bold"
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_INTNUMBERS "Por favor, introduza apenas números inteiros!"
|
||||
IDS_PERCENTAGE "A percentagem deve estar entre 1 e 500."
|
||||
IDS_ANGLE "O ângulo deve estar entre -89 e 89."
|
||||
IDS_LOADERRORTEXT "O ficheiro %s não pôde ser carregado."
|
||||
IDS_ENLARGEPROMPTTEXT "A imagem na área de transferência é maior que o bitmap.\nDeseja ampliar o bitmap?"
|
||||
IDS_BOLD "Negrito"
|
||||
IDS_ITALIC "Itálico"
|
||||
IDS_UNDERLINE "Sublinhado"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -101,6 +101,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -145,16 +164,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribute"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Lățime:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Înălțime:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Dată fișier:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dimensiune:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Rezoluție:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Indisponibil", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Indisponibil", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Indisponibil", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unități", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "țoli", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -233,7 +252,6 @@ BEGIN
|
||||
IDS_ALLFILES "Orice fișier"
|
||||
IDS_ALLPICTUREFILES "Toate fișierele imagine"
|
||||
IDS_FILESIZE "%d octeți"
|
||||
IDS_PRINTRES "%d x %d pixeli pe metru"
|
||||
IDS_INTNUMBERS "Introduceți doar numere întregi!"
|
||||
IDS_PERCENTAGE "Procentajul trebuie să fie între 1 și 500."
|
||||
IDS_ANGLE "Unghiul trebuie să fie între -89 și 89."
|
||||
@@ -243,4 +261,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Subliniat"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -92,6 +92,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,16 +155,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Атрибуты"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ширина:", IDD_ATTRIBUTESTEXT1, 10, 42, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Высота:", IDD_ATTRIBUTESTEXT2, 80, 42, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Дата сохранения:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Размер на диске:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Разрешение:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Единицы измерения", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "д&юймы", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "с&м", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -224,7 +243,6 @@ BEGIN
|
||||
IDS_ALLFILES "Все файлы"
|
||||
IDS_ALLPICTUREFILES "Все файлы изображений"
|
||||
IDS_FILESIZE "%d байт"
|
||||
IDS_PRINTRES "%d x %d пикселей на метр"
|
||||
IDS_INTNUMBERS, "Необходимо вводить только целые числа!"
|
||||
IDS_PERCENTAGE, "Процент должен быть в интервале от 1 до 500."
|
||||
IDS_ANGLE, "Угол должен быть в интервале от -89 до 89."
|
||||
@@ -234,4 +252,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -101,6 +101,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -145,16 +164,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribúty"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Šírka:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Výška:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Dátum zmeny:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10 //File date
|
||||
LTEXT "Veľkosť súboru:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10 //File size
|
||||
LTEXT "Rozlíšenie:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Jednotky", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "palce", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -233,7 +252,6 @@ BEGIN
|
||||
IDS_ALLFILES "Všetky súbory"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bajtov"
|
||||
IDS_PRINTRES "%d x %d pixelov na meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -243,4 +261,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributet"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Gjerësi:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Lartësi:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "File &data:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File &mase:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolucioni:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Jo në dispozicion", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Jo në dispozicion", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Jo në dispozicion", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Njësitë", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inq", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Ju lutem shkruani numra integrale vetëm!"
|
||||
IDS_PERCENTAGE "Përqindja duhet të jetë në mes 1 dhe 500."
|
||||
IDS_ANGLE "Këndi duhet të jetë në mes -89 dhe 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -92,6 +92,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,16 +155,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attribut"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Bredd:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Höjd:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Fildatum:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Filstorlek:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Upplösning:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Ej tillgänglig", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Ej tillgänglig", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Ej tillgänglig", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Enheter", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "tum", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -224,7 +243,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixlar per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -234,4 +252,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Öznitelikler"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&En:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Boy:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Dosya Tarihi:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dosya Boyutu:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Çözünürlük:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Yok", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Yok", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Yok", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Birim", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&İnç", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Tüm Dosyalar"
|
||||
IDS_ALLPICTUREFILES "Tüm Resim Dosyaları"
|
||||
IDS_FILESIZE "%d bayt"
|
||||
IDS_PRINTRES "Metre başına %d x %d piksel"
|
||||
IDS_INTNUMBERS "Lütfen yalnızca tamsayı giriniz!"
|
||||
IDS_PERCENTAGE "Yüzde 1 ile 500 arasında olmalıdır."
|
||||
IDS_ANGLE "Açı -89 ile 89 arasında olmalıdır."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "İtalik"
|
||||
IDS_UNDERLINE "Altı Çizgili"
|
||||
IDS_VERTICAL "Düşey"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Атрибути"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ширина:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Висота:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Дата файлу:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Розмір файлу:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Розширення:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Недоступно", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Недоступно", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Недоступно", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Одиниці вимірювання", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "дюйми", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "см", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Усі файли"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d байт"
|
||||
IDS_PRINTRES "%d x %d пікс. на метр"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Thuộc tính"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Chiều rộng:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Chiều cao:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ngày tạo &tập tin:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Kích thước &tập tin :", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Độ phân giải:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Đơn vị", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inch (1 inch = 2,54 cm)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Tất cả tập tin"
|
||||
IDS_ALLPICTUREFILES "Tất cả tập tin hình ảnh"
|
||||
IDS_FILESIZE "%d byte"
|
||||
IDS_PRINTRES "%d x %d điểm ảnh trong một mét"
|
||||
IDS_INTNUMBERS "Xin vui lòng chỉ nhập số tự nhiên khác không (0)!"
|
||||
IDS_PERCENTAGE "Giá trị phần trăm phải ở giữa 1 và 500."
|
||||
IDS_ANGLE "Giá trị của góc phải ở giữa -89 và 89."
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -102,6 +102,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -146,16 +165,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "宋体"
|
||||
CAPTION "属性"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "宽度(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "文件日期(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "文件大小(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "分辨率(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "单位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "英寸(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "厘米(&M)", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -234,7 +253,6 @@ BEGIN
|
||||
IDS_ALLFILES "所有文件"
|
||||
IDS_ALLPICTUREFILES "所有图片文件"
|
||||
IDS_FILESIZE "%d 字节"
|
||||
IDS_PRINTRES "%d x %d 像素每米"
|
||||
IDS_INTNUMBERS "请只输入整数!"
|
||||
IDS_PERCENTAGE "百分比必须在 1 至 500 之间。"
|
||||
IDS_ANGLE "角度必须在 -89 与 89 之间。"
|
||||
@@ -244,4 +262,6 @@ BEGIN
|
||||
IDS_ITALIC "斜体"
|
||||
IDS_UNDERLINE "下划线"
|
||||
IDS_VERTICAL "垂直"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "新細明體"
|
||||
CAPTION "內容"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "寬度(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "檔案日期(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "檔案大小(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解析度(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "單位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "英寸(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "厘米(&M)", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "所有檔案"
|
||||
IDS_ALLPICTUREFILES "所有圖像檔案"
|
||||
IDS_FILESIZE "%d 位元組"
|
||||
IDS_PRINTRES "%d x %d 像素每米"
|
||||
IDS_INTNUMBERS "請輸入整數!"
|
||||
IDS_PERCENTAGE "所佔百分比必須介乎 1 至 500 之間。"
|
||||
IDS_ANGLE "角度必須介乎 -89 至 89 之間。"
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "斜體"
|
||||
IDS_UNDERLINE "底線"
|
||||
IDS_VERTICAL "垂直"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,16 +163,16 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "新細明體"
|
||||
CAPTION "內容"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "寬度(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 30, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "檔案日期(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "檔案大小(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解析度(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "單位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "英寸(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "厘米(&M)", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "所有檔案"
|
||||
IDS_ALLPICTUREFILES "所有圖像檔案"
|
||||
IDS_FILESIZE "%d 位元組"
|
||||
IDS_PRINTRES "%d x %d 畫素每米"
|
||||
IDS_INTNUMBERS "請輸入整數!"
|
||||
IDS_PERCENTAGE "所佔百分比必須介於 1 和 500 之間。"
|
||||
IDS_ANGLE "角度必須介於 -89 和 89 之間。"
|
||||
@@ -242,4 +260,6 @@ BEGIN
|
||||
IDS_ITALIC "斜體"
|
||||
IDS_UNDERLINE "底線"
|
||||
IDS_VERTICAL "垂直"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
END
|
||||
|
@@ -8,15 +8,13 @@
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
POINT start;
|
||||
POINT last;
|
||||
|
||||
BOOL askBeforeEnlarging = FALSE; // TODO: initialize from registry
|
||||
HINSTANCE hProgInstance = NULL;
|
||||
TCHAR filepathname[MAX_LONG_PATH] = { 0 };
|
||||
BOOL isAFile = FALSE;
|
||||
BOOL imageSaved = FALSE;
|
||||
BOOL showGrid = FALSE;
|
||||
POINT g_ptStart, g_ptEnd;
|
||||
BOOL g_askBeforeEnlarging = FALSE; // TODO: initialize from registry
|
||||
HINSTANCE g_hinstExe = NULL;
|
||||
TCHAR g_szFileName[MAX_LONG_PATH] = { 0 };
|
||||
BOOL g_isAFile = FALSE;
|
||||
BOOL g_imageSaved = FALSE;
|
||||
BOOL g_showGrid = FALSE;
|
||||
|
||||
CMainWindow mainWindow;
|
||||
|
||||
@@ -81,7 +79,7 @@ BOOL CMainWindow::GetOpenFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
|
||||
{
|
||||
// The "All Files" item text
|
||||
CString strAllPictureFiles;
|
||||
strAllPictureFiles.LoadString(hProgInstance, IDS_ALLPICTUREFILES);
|
||||
strAllPictureFiles.LoadString(g_hinstExe, IDS_ALLPICTUREFILES);
|
||||
|
||||
// Get the import filter
|
||||
CSimpleArray<GUID> aguidFileTypesI;
|
||||
@@ -92,7 +90,7 @@ BOOL CMainWindow::GetOpenFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
|
||||
ZeroMemory(&ofn, sizeof(ofn));
|
||||
ofn.lStructSize = sizeof(ofn);
|
||||
ofn.hwndOwner = m_hWnd;
|
||||
ofn.hInstance = hProgInstance;
|
||||
ofn.hInstance = g_hinstExe;
|
||||
ofn.lpstrFilter = strFilter;
|
||||
ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY;
|
||||
ofn.lpstrDefExt = L"png";
|
||||
@@ -119,19 +117,24 @@ BOOL CMainWindow::GetSaveFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
|
||||
ZeroMemory(&sfn, sizeof(sfn));
|
||||
sfn.lStructSize = sizeof(sfn);
|
||||
sfn.hwndOwner = m_hWnd;
|
||||
sfn.hInstance = hProgInstance;
|
||||
sfn.hInstance = g_hinstExe;
|
||||
sfn.lpstrFilter = strFilter;
|
||||
sfn.Flags = OFN_EXPLORER | OFN_OVERWRITEPROMPT | OFN_ENABLEHOOK;
|
||||
sfn.lpfnHook = OFNHookProc;
|
||||
sfn.lpstrDefExt = L"png";
|
||||
|
||||
// Choose PNG
|
||||
for (INT i = 0; i < aguidFileTypesE.GetSize(); ++i)
|
||||
LPWSTR pchDotExt = PathFindExtensionW(pszFile);
|
||||
if (*pchDotExt == UNICODE_NULL)
|
||||
{
|
||||
if (aguidFileTypesE[i] == Gdiplus::ImageFormatPNG)
|
||||
// Choose PNG
|
||||
wcscat(pszFile, L".png");
|
||||
for (INT i = 0; i < aguidFileTypesE.GetSize(); ++i)
|
||||
{
|
||||
sfn.nFilterIndex = i + 1;
|
||||
break;
|
||||
if (aguidFileTypesE[i] == Gdiplus::ImageFormatPNG)
|
||||
{
|
||||
sfn.nFilterIndex = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -159,6 +162,7 @@ BOOL CMainWindow::ChooseColor(IN OUT COLORREF *prgbColor)
|
||||
choosecolor.lpCustColors = custColors;
|
||||
}
|
||||
|
||||
choosecolor.Flags = CC_RGBINIT;
|
||||
choosecolor.rgbResult = *prgbColor;
|
||||
if (!::ChooseColor(&choosecolor))
|
||||
return FALSE;
|
||||
@@ -169,10 +173,10 @@ BOOL CMainWindow::ChooseColor(IN OUT COLORREF *prgbColor)
|
||||
|
||||
HWND CMainWindow::DoCreate()
|
||||
{
|
||||
::LoadString(hProgInstance, IDS_DEFAULTFILENAME, filepathname, _countof(filepathname));
|
||||
::LoadString(g_hinstExe, IDS_DEFAULTFILENAME, g_szFileName, _countof(g_szFileName));
|
||||
|
||||
CString strTitle;
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(filepathname));
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(g_szFileName));
|
||||
|
||||
RECT& rc = registrySettings.WindowPlacement.rcNormalPosition;
|
||||
return Create(HWND_DESKTOP, rc, strTitle, WS_OVERLAPPEDWINDOW, WS_EX_ACCEPTFILES);
|
||||
@@ -187,7 +191,7 @@ _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, INT nC
|
||||
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
|
||||
#endif
|
||||
|
||||
hProgInstance = hInstance;
|
||||
g_hinstExe = hInstance;
|
||||
|
||||
// Initialize common controls library
|
||||
INITCOMMONCONTROLSEX iccx;
|
||||
|
@@ -5,6 +5,7 @@
|
||||
* PURPOSE: Window procedure of the main window and all children apart from
|
||||
* hPalWin, hToolSettings and hSelection
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* Katayama Hirofumi MZ
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -13,6 +14,17 @@ CMiniatureWindow miniature;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
CMiniatureWindow::CMiniatureWindow()
|
||||
: m_hbmCached(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
CMiniatureWindow::~CMiniatureWindow()
|
||||
{
|
||||
if (m_hbmCached)
|
||||
::DeleteObject(m_hbmCached);
|
||||
}
|
||||
|
||||
HWND CMiniatureWindow::DoCreate(HWND hwndParent)
|
||||
{
|
||||
if (m_hWnd)
|
||||
@@ -26,12 +38,36 @@ HWND CMiniatureWindow::DoCreate(HWND hwndParent)
|
||||
};
|
||||
|
||||
TCHAR strTitle[100];
|
||||
::LoadString(hProgInstance, IDS_MINIATURETITLE, strTitle, _countof(strTitle));
|
||||
::LoadString(g_hinstExe, IDS_MINIATURETITLE, strTitle, _countof(strTitle));
|
||||
|
||||
DWORD style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME;
|
||||
return Create(hwndParent, rc, strTitle, style, WS_EX_PALETTEWINDOW);
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
if (IsWindowVisible() && !IsIconic() && !IsZoomed())
|
||||
{
|
||||
CRect rc;
|
||||
GetWindowRect(&rc);
|
||||
registrySettings.ThumbXPos = rc.left;
|
||||
registrySettings.ThumbYPos = rc.top;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
if (IsWindowVisible() && !IsIconic() && !IsZoomed())
|
||||
{
|
||||
CRect rc;
|
||||
GetWindowRect(&rc);
|
||||
registrySettings.ThumbWidth = rc.Width();
|
||||
registrySettings.ThumbHeight = rc.Height();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
ShowWindow(SW_HIDE);
|
||||
@@ -39,16 +75,55 @@ LRESULT CMiniatureWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
return TRUE; /* Avoid flickering */
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
RECT rc;
|
||||
GetClientRect(&rc);
|
||||
|
||||
// Start painting
|
||||
PAINTSTRUCT ps;
|
||||
HDC hDC = BeginPaint(&ps);
|
||||
StretchBlt(hDC, 0, 0, rc.right, rc.bottom,
|
||||
imageModel.GetDC(), 0, 0, imageModel.GetWidth(), imageModel.GetHeight(),
|
||||
SRCCOPY);
|
||||
if (!hDC)
|
||||
return 0;
|
||||
|
||||
// Use a memory bitmap to reduce flickering
|
||||
HDC hdcMem = ::CreateCompatibleDC(hDC);
|
||||
m_hbmCached = CachedBufferDIB(m_hbmCached, rc.right, rc.bottom);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdcMem, m_hbmCached);
|
||||
|
||||
// FIXME: Consider aspect ratio
|
||||
|
||||
// Fill the background
|
||||
::FillRect(hdcMem, &rc, (HBRUSH)(COLOR_BTNFACE + 1));
|
||||
|
||||
// Draw the image (hdcMem <-- imageModel)
|
||||
int cxImage = imageModel.GetWidth();
|
||||
int cyImage = imageModel.GetHeight();
|
||||
::StretchBlt(hdcMem, 0, 0, rc.right, rc.bottom,
|
||||
imageModel.GetDC(), 0, 0, cxImage, cyImage,
|
||||
SRCCOPY);
|
||||
|
||||
// Move the image (hDC <-- hdcMem)
|
||||
::BitBlt(hDC, 0, 0, rc.right, rc.bottom, hdcMem, 0, 0, SRCCOPY);
|
||||
|
||||
// Clean up
|
||||
::SelectObject(hdcMem, hbmOld);
|
||||
::DeleteDC(hdcMem);
|
||||
|
||||
EndPaint(&ps);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnGetMinMaxInfo(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
// Avoid too small
|
||||
LPMINMAXINFO pInfo = (LPMINMAXINFO)lParam;
|
||||
pInfo->ptMinTrackSize.x = 100;
|
||||
pInfo->ptMinTrackSize.y = 75;
|
||||
return 0;
|
||||
}
|
||||
|
@@ -12,17 +12,31 @@
|
||||
class CMiniatureWindow : public CWindowImpl<CMiniatureWindow>
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(_T("MiniatureWindow"), CS_DBLCLKS, COLOR_BTNFACE)
|
||||
DECLARE_WND_CLASS_EX(_T("MiniatureWindow"), CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
|
||||
COLOR_BTNFACE)
|
||||
|
||||
BEGIN_MSG_MAP(CMiniatureWindow)
|
||||
MESSAGE_HANDLER(WM_MOVE, OnMove)
|
||||
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
||||
MESSAGE_HANDLER(WM_CLOSE, OnClose)
|
||||
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
|
||||
MESSAGE_HANDLER(WM_PAINT, OnPaint)
|
||||
MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)
|
||||
END_MSG_MAP()
|
||||
|
||||
CMiniatureWindow();
|
||||
virtual ~CMiniatureWindow();
|
||||
|
||||
HWND DoCreate(HWND hwndParent);
|
||||
|
||||
private:
|
||||
protected:
|
||||
HBITMAP m_hbmCached; // Cached buffer bitmap
|
||||
|
||||
LRESULT OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnGetMinMaxInfo(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,17 @@ CPaletteWindow paletteWindow;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
CPaletteWindow::CPaletteWindow()
|
||||
: m_hbmCached(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
CPaletteWindow::~CPaletteWindow()
|
||||
{
|
||||
if (m_hbmCached)
|
||||
::DeleteObject(m_hbmCached);
|
||||
}
|
||||
|
||||
static VOID drawColorBox(HDC hDC, LPCRECT prc, COLORREF rgbColor, UINT nBorder)
|
||||
{
|
||||
RECT rc = *prc;
|
||||
@@ -76,8 +87,8 @@ LRESULT CPaletteWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& b
|
||||
/* To avoid flickering, we use a memory bitmap.
|
||||
The left and top values are zeros in client rectangle */
|
||||
HDC hMemDC = ::CreateCompatibleDC(hDC);
|
||||
HBITMAP hbm = ::CreateCompatibleBitmap(hDC, rcClient.right, rcClient.bottom);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hMemDC, hbm);
|
||||
m_hbmCached = CachedBufferDIB(m_hbmCached, rcClient.right, rcClient.bottom);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hMemDC, m_hbmCached);
|
||||
|
||||
/* Fill the background (since WM_ERASEBKGND handling is disabled) */
|
||||
::FillRect(hMemDC, &rcClient, (HBRUSH)(COLOR_3DFACE + 1));
|
||||
@@ -121,7 +132,7 @@ LRESULT CPaletteWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& b
|
||||
/* Transfer bits (hDC <-- hMemDC) */
|
||||
::BitBlt(hDC, 0, 0, rcClient.right, rcClient.bottom, hMemDC, 0, 0, SRCCOPY);
|
||||
|
||||
::DeleteObject(::SelectObject(hMemDC, hbmOld));
|
||||
::SelectObject(hMemDC, hbmOld);
|
||||
::DeleteDC(hMemDC);
|
||||
EndPaint(&ps);
|
||||
return 0;
|
||||
@@ -170,13 +181,7 @@ LRESULT CPaletteWindow::OnRButtonDblClk(UINT nMsg, WPARAM wParam, LPARAM lParam,
|
||||
|
||||
LRESULT CPaletteWindow::OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
InvalidateRect(NULL, FALSE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CPaletteWindow::OnPaletteModelPaletteChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
InvalidateRect(NULL, FALSE);
|
||||
Invalidate(FALSE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -27,9 +27,14 @@ public:
|
||||
MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
|
||||
MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
|
||||
MESSAGE_HANDLER(WM_PALETTEMODELCOLORCHANGED, OnPaletteModelColorChanged)
|
||||
MESSAGE_HANDLER(WM_PALETTEMODELPALETTECHANGED, OnPaletteModelPaletteChanged)
|
||||
END_MSG_MAP()
|
||||
|
||||
CPaletteWindow();
|
||||
virtual ~CPaletteWindow();
|
||||
|
||||
protected:
|
||||
HBITMAP m_hbmCached; // Cached buffer bitmap
|
||||
|
||||
LRESULT OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
@@ -39,7 +44,6 @@ public:
|
||||
LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaletteModelPaletteChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
|
||||
protected:
|
||||
INT DoHitTest(INT xPos, INT yPos) const;
|
||||
|
@@ -106,5 +106,5 @@ void PaletteModel::NotifyColorChanged()
|
||||
void PaletteModel::NotifyPaletteChanged()
|
||||
{
|
||||
if (paletteWindow.IsWindow())
|
||||
paletteWindow.SendMessage(WM_PALETTEMODELPALETTECHANGED);
|
||||
paletteWindow.Invalidate(FALSE);
|
||||
}
|
||||
|
@@ -30,6 +30,7 @@
|
||||
#define IDI_VERTSKEW 538
|
||||
|
||||
#define ID_MENU 501
|
||||
#define ID_POPUPMENU 502
|
||||
|
||||
#define IDM_FILENEW 201
|
||||
#define IDM_FILEOPEN 202
|
||||
@@ -206,7 +207,6 @@
|
||||
#define IDS_ALLFILES 926
|
||||
#define IDS_ALLPICTUREFILES 927
|
||||
#define IDS_FILESIZE 928
|
||||
#define IDS_PRINTRES 929
|
||||
|
||||
#define IDS_INTNUMBERS 930
|
||||
#define IDS_PERCENTAGE 931
|
||||
@@ -219,3 +219,5 @@
|
||||
#define IDS_ITALIC 936
|
||||
#define IDS_UNDERLINE 937
|
||||
#define IDS_VERTICAL 938
|
||||
#define IDS_PRINTRES 939
|
||||
#define IDS_CANTPASTE 940
|
||||
|
@@ -18,9 +18,12 @@ SelectionModel::SelectionModel()
|
||||
, m_hbmMask(NULL)
|
||||
, m_ptStack(NULL)
|
||||
, m_iPtSP(0)
|
||||
, m_rgbBack(RGB(255, 255, 255))
|
||||
, m_bShow(FALSE)
|
||||
, m_bContentChanged(FALSE)
|
||||
{
|
||||
::SetRectEmpty(&m_rc);
|
||||
::SetRectEmpty(&m_rcOld);
|
||||
m_ptHit.x = m_ptHit.y = -1;
|
||||
}
|
||||
|
||||
@@ -57,25 +60,13 @@ void SelectionModel::PushToPtStack(POINT pt)
|
||||
#undef GROW_COUNT
|
||||
}
|
||||
|
||||
void SelectionModel::ShiftPtStack(BOOL bPlus)
|
||||
void SelectionModel::ShiftPtStack(INT dx, INT dy)
|
||||
{
|
||||
if (bPlus)
|
||||
for (INT i = 0; i < m_iPtSP; ++i)
|
||||
{
|
||||
for (INT i = 0; i < m_iPtSP; ++i)
|
||||
{
|
||||
POINT& pt = m_ptStack[i];
|
||||
pt.x += m_rc.left;
|
||||
pt.y += m_rc.top;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (INT i = 0; i < m_iPtSP; ++i)
|
||||
{
|
||||
POINT& pt = m_ptStack[i];
|
||||
pt.x -= m_rc.left;
|
||||
pt.y -= m_rc.top;
|
||||
}
|
||||
POINT& pt = m_ptStack[i];
|
||||
pt.x += dx;
|
||||
pt.y += dy;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,16 +84,16 @@ void SelectionModel::BuildMaskFromPtStack()
|
||||
rc.right += 1;
|
||||
rc.bottom += 1;
|
||||
|
||||
m_rc = rc;
|
||||
|
||||
ShiftPtStack(FALSE);
|
||||
m_rc = m_rcOld = rc;
|
||||
|
||||
ClearMask();
|
||||
|
||||
ShiftPtStack(-m_rcOld.left, -m_rcOld.top);
|
||||
|
||||
HDC hdcMem = ::CreateCompatibleDC(NULL);
|
||||
m_hbmMask = ::CreateBitmap(rc.Width(), rc.Height(), 1, 1, NULL);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdcMem, m_hbmMask);
|
||||
FillRect(hdcMem, &rc, (HBRUSH)::GetStockObject(BLACK_BRUSH));
|
||||
::FillRect(hdcMem, &rc, (HBRUSH)::GetStockObject(BLACK_BRUSH));
|
||||
HGDIOBJ hPenOld = ::SelectObject(hdcMem, GetStockObject(NULL_PEN));
|
||||
HGDIOBJ hbrOld = ::SelectObject(hdcMem, GetStockObject(WHITE_BRUSH));
|
||||
::Polygon(hdcMem, m_ptStack, m_iPtSP);
|
||||
@@ -110,34 +101,47 @@ void SelectionModel::BuildMaskFromPtStack()
|
||||
::SelectObject(hdcMem, hPenOld);
|
||||
::SelectObject(hdcMem, hbmOld);
|
||||
::DeleteDC(hdcMem);
|
||||
|
||||
ShiftPtStack(+m_rcOld.left, +m_rcOld.top);
|
||||
}
|
||||
|
||||
void SelectionModel::DrawBackgroundPoly(HDC hDCImage, COLORREF crBg)
|
||||
{
|
||||
ShiftPtStack(TRUE);
|
||||
if (::IsRectEmpty(&m_rcOld))
|
||||
return;
|
||||
|
||||
HGDIOBJ hPenOld = ::SelectObject(hDCImage, ::GetStockObject(NULL_PEN));
|
||||
HGDIOBJ hbrOld = ::SelectObject(hDCImage, ::CreateSolidBrush(crBg));
|
||||
::Polygon(hDCImage, m_ptStack, m_iPtSP);
|
||||
::DeleteObject(::SelectObject(hDCImage, hbrOld));
|
||||
::SelectObject(hDCImage, hPenOld);
|
||||
|
||||
ShiftPtStack(FALSE);
|
||||
}
|
||||
|
||||
void SelectionModel::DrawBackgroundRect(HDC hDCImage, COLORREF crBg)
|
||||
{
|
||||
Rect(hDCImage, m_rc.left, m_rc.top, m_rc.right, m_rc.bottom, crBg, crBg, 0, 1);
|
||||
if (::IsRectEmpty(&m_rcOld))
|
||||
return;
|
||||
|
||||
Rect(hDCImage, m_rcOld.left, m_rcOld.top, m_rcOld.right, m_rcOld.bottom, crBg, crBg, 0, 1);
|
||||
}
|
||||
|
||||
void SelectionModel::DrawSelection(HDC hDCImage, LPCRECT prc, COLORREF crBg, BOOL bBgTransparent)
|
||||
void SelectionModel::DrawBackground(HDC hDCImage)
|
||||
{
|
||||
CRect rc = *prc;
|
||||
if (toolsModel.GetActiveTool() == TOOL_FREESEL)
|
||||
DrawBackgroundPoly(hDCImage, paletteModel.GetBgColor());
|
||||
else
|
||||
DrawBackgroundRect(hDCImage, paletteModel.GetBgColor());
|
||||
}
|
||||
|
||||
void SelectionModel::DrawSelection(HDC hDCImage, COLORREF crBg, BOOL bBgTransparent)
|
||||
{
|
||||
CRect rc = m_rc;
|
||||
if (::IsRectEmpty(&rc))
|
||||
return;
|
||||
|
||||
BITMAP bm;
|
||||
GetObject(m_hbmColor, sizeof(BITMAP), &bm);
|
||||
if (!GetObject(m_hbmColor, sizeof(BITMAP), &bm))
|
||||
return;
|
||||
|
||||
COLORREF keyColor = (bBgTransparent ? crBg : CLR_INVALID);
|
||||
|
||||
@@ -161,53 +165,71 @@ void SelectionModel::GetSelectionContents(HDC hDCImage)
|
||||
::DeleteDC(hMemDC);
|
||||
}
|
||||
|
||||
BOOL SelectionModel::IsLanded() const
|
||||
{
|
||||
return !m_hbmColor;
|
||||
}
|
||||
|
||||
BOOL SelectionModel::TakeOff()
|
||||
{
|
||||
if (m_hbmColor || ::IsRectEmpty(&m_rc))
|
||||
if (!IsLanded() || ::IsRectEmpty(&m_rc))
|
||||
return FALSE;
|
||||
|
||||
HDC hDCImage = imageModel.GetDC();
|
||||
GetSelectionContents(hDCImage);
|
||||
m_rgbBack = paletteModel.GetBgColor();
|
||||
GetSelectionContents(imageModel.GetDC());
|
||||
|
||||
if (toolsModel.GetActiveTool() == TOOL_FREESEL)
|
||||
{
|
||||
DrawBackgroundPoly(hDCImage, paletteModel.GetBgColor());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (toolsModel.GetActiveTool() == TOOL_RECTSEL)
|
||||
ClearMask();
|
||||
DrawBackgroundRect(hDCImage, paletteModel.GetBgColor());
|
||||
}
|
||||
|
||||
canvasWindow.Invalidate(FALSE);
|
||||
m_rcOld = m_rc;
|
||||
|
||||
imageModel.NotifyImageChanged();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void SelectionModel::Landing()
|
||||
{
|
||||
if (!m_hbmColor)
|
||||
if (IsLanded() && !m_bShow)
|
||||
{
|
||||
imageModel.NotifyImageChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
DrawSelection(imageModel.GetDC(), &m_rc, paletteModel.GetBgColor(), toolsModel.IsBackgroundTransparent());
|
||||
m_bShow = FALSE;
|
||||
|
||||
::SetRectEmpty(&m_rc);
|
||||
ClearMask();
|
||||
ClearColor();
|
||||
if (m_bContentChanged ||
|
||||
(!::EqualRect(m_rc, m_rcOld) && !::IsRectEmpty(m_rc) && !::IsRectEmpty(m_rcOld)))
|
||||
{
|
||||
imageModel.PushImageForUndo();
|
||||
|
||||
imageModel.CopyPrevious();
|
||||
canvasWindow.m_drawing = FALSE;
|
||||
toolsModel.OnDrawOverlayOnImage(imageModel.GetDC());
|
||||
}
|
||||
|
||||
HideSelection();
|
||||
}
|
||||
|
||||
void SelectionModel::InsertFromHBITMAP(HBITMAP hBm, INT x, INT y)
|
||||
void SelectionModel::InsertFromHBITMAP(HBITMAP hbmColor, INT x, INT y, HBITMAP hbmMask)
|
||||
{
|
||||
::DeleteObject(m_hbmColor);
|
||||
m_hbmColor = CopyDIBImage(hBm);
|
||||
m_hbmColor = hbmColor;
|
||||
|
||||
m_rc.left = x;
|
||||
m_rc.top = y;
|
||||
m_rc.right = m_rc.left + GetDIBWidth(hBm);
|
||||
m_rc.bottom = m_rc.top + GetDIBHeight(hBm);
|
||||
m_rc.right = x + GetDIBWidth(hbmColor);
|
||||
m_rc.bottom = y + GetDIBHeight(hbmColor);
|
||||
|
||||
ClearMask();
|
||||
if (hbmMask)
|
||||
{
|
||||
::DeleteObject(m_hbmMask);
|
||||
m_hbmMask = hbmMask;
|
||||
}
|
||||
else
|
||||
{
|
||||
ClearMask();
|
||||
}
|
||||
|
||||
NotifyContentChanged();
|
||||
}
|
||||
|
||||
void SelectionModel::FlipHorizontally()
|
||||
@@ -229,7 +251,7 @@ void SelectionModel::FlipHorizontally()
|
||||
}
|
||||
::DeleteDC(hdcMem);
|
||||
|
||||
NotifyRefreshNeeded();
|
||||
NotifyContentChanged();
|
||||
}
|
||||
|
||||
void SelectionModel::FlipVertically()
|
||||
@@ -251,7 +273,7 @@ void SelectionModel::FlipVertically()
|
||||
}
|
||||
::DeleteDC(hdcMem);
|
||||
|
||||
NotifyRefreshNeeded();
|
||||
NotifyContentChanged();
|
||||
}
|
||||
|
||||
void SelectionModel::RotateNTimes90Degrees(int iN)
|
||||
@@ -262,9 +284,10 @@ void SelectionModel::RotateNTimes90Degrees(int iN)
|
||||
|
||||
switch (iN)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
case 1: /* rotate 90 degrees */
|
||||
case 3: /* rotate 270 degrees */
|
||||
TakeOff();
|
||||
|
||||
if (m_hbmColor)
|
||||
{
|
||||
hbmOld = ::SelectObject(hdcMem, m_hbmColor);
|
||||
@@ -281,10 +304,13 @@ void SelectionModel::RotateNTimes90Degrees(int iN)
|
||||
::DeleteObject(m_hbmMask);
|
||||
m_hbmMask = hbm;
|
||||
}
|
||||
|
||||
SwapWidthAndHeight();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 2: /* rotate 180 degrees */
|
||||
TakeOff();
|
||||
|
||||
if (m_hbmColor)
|
||||
{
|
||||
hbmOld = ::SelectObject(hdcMem, m_hbmColor);
|
||||
@@ -303,7 +329,15 @@ void SelectionModel::RotateNTimes90Degrees(int iN)
|
||||
}
|
||||
|
||||
::DeleteDC(hdcMem);
|
||||
NotifyRefreshNeeded();
|
||||
NotifyContentChanged();
|
||||
}
|
||||
|
||||
static void AttachHBITMAP(HBITMAP *phbm, HBITMAP hbmNew)
|
||||
{
|
||||
if (hbmNew == NULL)
|
||||
return;
|
||||
::DeleteObject(*phbm);
|
||||
*phbm = hbmNew;
|
||||
}
|
||||
|
||||
void SelectionModel::StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSkewDegX, int nSkewDegY)
|
||||
@@ -313,47 +347,55 @@ void SelectionModel::StretchSkew(int nStretchPercentX, int nStretchPercentY, int
|
||||
|
||||
TakeOff();
|
||||
|
||||
INT oldWidth = m_rc.Width();
|
||||
INT oldHeight = m_rc.Height();
|
||||
INT oldWidth = m_rc.Width(), oldHeight = m_rc.Height();
|
||||
INT newWidth = oldWidth * nStretchPercentX / 100;
|
||||
INT newHeight = oldHeight * nStretchPercentY / 100;
|
||||
|
||||
HBITMAP hbmColor = m_hbmColor, hbmMask = m_hbmMask;
|
||||
|
||||
if (hbmMask == NULL)
|
||||
hbmMask = CreateMonoBitmap(oldWidth, oldHeight, TRUE);
|
||||
|
||||
if (oldWidth != newWidth || oldHeight != newHeight)
|
||||
{
|
||||
HBITMAP hbm0 = CopyDIBImage(m_hbmColor, newWidth, newHeight);
|
||||
InsertFromHBITMAP(hbm0, m_rc.left, m_rc.top);
|
||||
::DeleteObject(hbm0);
|
||||
AttachHBITMAP(&hbmColor, CopyDIBImage(hbmColor, newWidth, newHeight));
|
||||
AttachHBITMAP(&hbmMask, CopyMonoImage(hbmMask, newWidth, newHeight));
|
||||
}
|
||||
|
||||
HGDIOBJ hbmOld;
|
||||
HDC hDC = ::CreateCompatibleDC(NULL);
|
||||
|
||||
if (nSkewDegX)
|
||||
{
|
||||
::SelectObject(hDC, m_hbmColor);
|
||||
HBITMAP hbm1 = SkewDIB(hDC, m_hbmColor, nSkewDegX, FALSE);
|
||||
InsertFromHBITMAP(hbm1, m_rc.left, m_rc.top);
|
||||
::DeleteObject(hbm1);
|
||||
hbmOld = ::SelectObject(hDC, hbmColor);
|
||||
AttachHBITMAP(&hbmColor, SkewDIB(hDC, hbmColor, nSkewDegX, FALSE));
|
||||
::SelectObject(hDC, hbmMask);
|
||||
AttachHBITMAP(&hbmMask, SkewDIB(hDC, hbmMask, nSkewDegX, FALSE, TRUE));
|
||||
::SelectObject(hDC, hbmOld);
|
||||
}
|
||||
|
||||
if (nSkewDegY)
|
||||
{
|
||||
::SelectObject(hDC, m_hbmColor);
|
||||
HBITMAP hbm2 = SkewDIB(hDC, m_hbmColor, nSkewDegY, TRUE);
|
||||
InsertFromHBITMAP(hbm2, m_rc.left, m_rc.top);
|
||||
::DeleteObject(hbm2);
|
||||
hbmOld = ::SelectObject(hDC, hbmColor);
|
||||
AttachHBITMAP(&hbmColor, SkewDIB(hDC, hbmColor, nSkewDegY, TRUE));
|
||||
::SelectObject(hDC, hbmMask);
|
||||
AttachHBITMAP(&hbmMask, SkewDIB(hDC, hbmMask, nSkewDegY, TRUE, TRUE));
|
||||
::SelectObject(hDC, hbmOld);
|
||||
}
|
||||
|
||||
::DeleteDC(hDC);
|
||||
|
||||
InsertFromHBITMAP(hbmColor, m_rc.left, m_rc.top, hbmMask);
|
||||
|
||||
m_bShow = TRUE;
|
||||
NotifyRefreshNeeded();
|
||||
NotifyContentChanged();
|
||||
}
|
||||
|
||||
HBITMAP SelectionModel::GetBitmap()
|
||||
HBITMAP SelectionModel::CopyBitmap()
|
||||
{
|
||||
if (m_hbmColor == NULL)
|
||||
GetSelectionContents(imageModel.GetDC());
|
||||
return m_hbmColor;
|
||||
return CopyDIBImage(m_hbmColor);
|
||||
}
|
||||
|
||||
int SelectionModel::PtStackSize() const
|
||||
@@ -417,11 +459,6 @@ void SelectionModel::Dragging(CANVAS_HITTEST hit, POINT pt)
|
||||
m_ptHit = pt;
|
||||
}
|
||||
|
||||
void SelectionModel::NotifyRefreshNeeded()
|
||||
{
|
||||
canvasWindow.Invalidate(FALSE);
|
||||
}
|
||||
|
||||
void SelectionModel::ClearMask()
|
||||
{
|
||||
if (m_hbmMask)
|
||||
@@ -440,15 +477,55 @@ void SelectionModel::ClearColor()
|
||||
}
|
||||
}
|
||||
|
||||
void SelectionModel::CancelSelection()
|
||||
void SelectionModel::HideSelection()
|
||||
{
|
||||
m_bShow = m_bContentChanged = FALSE;
|
||||
ClearColor();
|
||||
ClearMask();
|
||||
::SetRectEmpty(&m_rc);
|
||||
::SetRectEmpty(&m_rcOld);
|
||||
imageModel.NotifyImageChanged();
|
||||
}
|
||||
|
||||
void SelectionModel::DeleteSelection()
|
||||
{
|
||||
if (!m_bShow)
|
||||
return;
|
||||
|
||||
imageModel.CopyPrevious();
|
||||
if (m_bShow)
|
||||
imageModel.Undo(TRUE);
|
||||
TakeOff();
|
||||
imageModel.PushImageForUndo();
|
||||
DrawBackground(imageModel.GetDC());
|
||||
|
||||
m_bShow = FALSE;
|
||||
canvasWindow.Invalidate(FALSE);
|
||||
HideSelection();
|
||||
}
|
||||
|
||||
void SelectionModel::InvertSelection()
|
||||
{
|
||||
TakeOff();
|
||||
|
||||
BITMAP bm;
|
||||
::GetObject(m_hbmColor, sizeof(bm), &bm);
|
||||
|
||||
HDC hdc = ::CreateCompatibleDC(NULL);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdc, m_hbmColor);
|
||||
RECT rc = { 0, 0, bm.bmWidth, bm.bmHeight };
|
||||
::InvertRect(hdc, &rc);
|
||||
::SelectObject(hdc, hbmOld);
|
||||
::DeleteDC(hdc);
|
||||
|
||||
NotifyContentChanged();
|
||||
}
|
||||
|
||||
void SelectionModel::NotifyContentChanged()
|
||||
{
|
||||
m_bContentChanged = TRUE;
|
||||
imageModel.NotifyImageChanged();
|
||||
}
|
||||
|
||||
void SelectionModel::SwapWidthAndHeight()
|
||||
{
|
||||
INT cx = m_rc.Width();
|
||||
INT cy = m_rc.Height();
|
||||
m_rc.right = m_rc.left + cy;
|
||||
m_rc.bottom = m_rc.top + cx;
|
||||
}
|
||||
|
@@ -18,9 +18,12 @@ private:
|
||||
int m_iPtSP;
|
||||
|
||||
public:
|
||||
COLORREF m_rgbBack;
|
||||
BOOL m_bShow;
|
||||
BOOL m_bContentChanged;
|
||||
CRect m_rc; // in image pixel coordinates
|
||||
POINT m_ptHit; // in image pixel coordinates
|
||||
CRect m_rcOld; // in image pixel coordinates
|
||||
|
||||
SelectionModel();
|
||||
~SelectionModel();
|
||||
@@ -33,30 +36,35 @@ public:
|
||||
|
||||
BOOL TakeOff();
|
||||
void Landing();
|
||||
BOOL IsLanded() const;
|
||||
void HideSelection();
|
||||
void DeleteSelection();
|
||||
|
||||
HBITMAP GetBitmap();
|
||||
HBITMAP CopyBitmap();
|
||||
void GetSelectionContents(HDC hDCImage);
|
||||
void DrawFramePoly(HDC hDCImage);
|
||||
void DrawBackground(HDC hDCImage);
|
||||
void DrawBackgroundPoly(HDC hDCImage, COLORREF crBg);
|
||||
void DrawBackgroundRect(HDC hDCImage, COLORREF crBg);
|
||||
void DrawSelection(HDC hDCImage, LPCRECT prc, COLORREF crBg = 0, BOOL bBgTransparent = FALSE);
|
||||
void InsertFromHBITMAP(HBITMAP hBm, INT x = 0, INT y = 0);
|
||||
void DrawSelection(HDC hDCImage, COLORREF crBg = 0, BOOL bBgTransparent = FALSE);
|
||||
void InsertFromHBITMAP(HBITMAP hbmColor, INT x = 0, INT y = 0, HBITMAP hbmMask = NULL);
|
||||
|
||||
// operation
|
||||
void FlipHorizontally();
|
||||
void FlipVertically();
|
||||
void RotateNTimes90Degrees(int iN);
|
||||
void StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSkewDegX, int nSkewDegY);
|
||||
void InvertSelection();
|
||||
|
||||
void CancelSelection();
|
||||
void NotifyRefreshNeeded();
|
||||
void Dragging(CANVAS_HITTEST hit, POINT pt);
|
||||
void ClearMask();
|
||||
void ClearColor();
|
||||
void NotifyContentChanged();
|
||||
|
||||
private:
|
||||
SelectionModel(const SelectionModel&);
|
||||
SelectionModel& operator=(const SelectionModel&);
|
||||
|
||||
void ShiftPtStack(BOOL bPlus);
|
||||
void ShiftPtStack(INT dx, INT dy);
|
||||
void SwapWidthAndHeight();
|
||||
};
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user