mirror of
https://github.com/reactos/reactos
synced 2025-10-08 17:32:43 +02:00
Compare commits
66 Commits
ReactOS-0.
...
ReactOS-0.
Author | SHA1 | Date | |
---|---|---|---|
|
516e460d8f | ||
|
63b9b4deb0 | ||
|
c2303ddc07 | ||
|
1657e742fa | ||
|
77bf70ea1b | ||
|
b29c9e77b6 | ||
|
406bab4012 | ||
|
048fd42f18 | ||
|
5cde7752ad | ||
|
1a609600f3 | ||
|
252a82f434 | ||
|
992785856d | ||
|
3d70b834c7 | ||
|
5cb73acf77 | ||
|
a0758e6af2 | ||
|
7f471302fa | ||
|
e2000d687c | ||
|
70ea17266f | ||
|
ad186f071a | ||
|
3a9481e167 | ||
|
2d4fcce6ac | ||
|
db885f7599 | ||
|
5a4a191801 | ||
|
4fc13100c8 | ||
|
8157860973 | ||
|
2b45c71b50 | ||
|
3283ccf304 | ||
|
c9fe6d8ec6 | ||
|
c7de9d4774 | ||
|
d6af3d177f | ||
|
cc4227eabe | ||
|
54a8053846 | ||
|
41b7d7cc64 | ||
|
5cf3adb049 | ||
|
5b1c3ac5d1 | ||
|
3d80c3ab79 | ||
|
c442478f89 | ||
|
6e53d270f1 | ||
|
acb805aa6d | ||
|
e65bfbdf74 | ||
|
3b537a1ef4 | ||
|
0ab5d67525 | ||
|
e2c8edf486 | ||
|
c5a3cc589f | ||
|
67e2ae7446 | ||
|
ebf1904275 | ||
|
24c5b454f9 | ||
|
5f2c9608ab | ||
|
5ecc4d78bb | ||
|
5e0a50ef1a | ||
|
d508cf5a23 | ||
|
dacfdb3f3a | ||
|
d0f7b82948 | ||
|
685051a21b | ||
|
557bc89a2b | ||
|
4d0baaa1c0 | ||
|
92a3d2dfa2 | ||
|
c42e397894 | ||
|
4796a590d0 | ||
|
098f1d0707 | ||
|
fde549f9e8 | ||
|
6605b25ca5 | ||
|
2eac40cac6 | ||
|
18a30e3584 | ||
|
09eac3a2be | ||
|
c26a6d98d7 |
@@ -19,7 +19,7 @@ endif()
|
||||
project(REACTOS)
|
||||
|
||||
# Versioning
|
||||
include(sdk/include/reactos/version.cmake)
|
||||
include(include/reactos/version.cmake)
|
||||
|
||||
# Don't escape preprocessor definition values added via add_definitions
|
||||
cmake_policy(SET CMP0005 OLD)
|
||||
@@ -98,13 +98,13 @@ if(NOT CMAKE_CROSSCOMPILING)
|
||||
add_compile_flags("-fshort-wchar -Wno-multichar")
|
||||
endif()
|
||||
|
||||
include_directories(sdk/include/host)
|
||||
include_directories(include/host)
|
||||
|
||||
if(NOT MSVC)
|
||||
add_subdirectory(dll/win32/dbghelp)
|
||||
endif()
|
||||
add_subdirectory(sdk/tools)
|
||||
add_subdirectory(sdk/lib)
|
||||
add_subdirectory(tools)
|
||||
add_subdirectory(lib)
|
||||
|
||||
if(NOT NEW_STYLE_BUILD)
|
||||
if(NOT MSVC)
|
||||
@@ -227,32 +227,32 @@ else()
|
||||
include(cmake/widl-support.cmake)
|
||||
|
||||
include_directories(
|
||||
sdk/include
|
||||
sdk/include/psdk
|
||||
sdk/include/dxsdk
|
||||
${REACTOS_BINARY_DIR}/sdk/include
|
||||
${REACTOS_BINARY_DIR}/sdk/include/psdk
|
||||
${REACTOS_BINARY_DIR}/sdk/include/dxsdk
|
||||
${REACTOS_BINARY_DIR}/sdk/include/ddk
|
||||
${REACTOS_BINARY_DIR}/sdk/include/reactos
|
||||
sdk/include/crt
|
||||
sdk/include/ddk
|
||||
sdk/include/ndk
|
||||
sdk/include/reactos
|
||||
sdk/include/reactos/libs)
|
||||
include
|
||||
include/psdk
|
||||
include/dxsdk
|
||||
${REACTOS_BINARY_DIR}/include
|
||||
${REACTOS_BINARY_DIR}/include/psdk
|
||||
${REACTOS_BINARY_DIR}/include/dxsdk
|
||||
${REACTOS_BINARY_DIR}/include/ddk
|
||||
${REACTOS_BINARY_DIR}/include/reactos
|
||||
include/crt
|
||||
include/ddk
|
||||
include/ndk
|
||||
include/reactos
|
||||
include/reactos/libs)
|
||||
|
||||
if(ARCH STREQUAL "arm")
|
||||
include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/arm)
|
||||
include_directories(${REACTOS_SOURCE_DIR}/include/reactos/arm)
|
||||
endif()
|
||||
|
||||
add_dependency_header()
|
||||
|
||||
add_subdirectory(sdk/include/xdk)
|
||||
add_subdirectory(sdk/include/psdk)
|
||||
add_subdirectory(sdk/include/dxsdk)
|
||||
add_subdirectory(sdk/include/reactos/wine)
|
||||
add_subdirectory(sdk/include/reactos/mc)
|
||||
add_subdirectory(sdk/include/asm)
|
||||
add_subdirectory(include/xdk)
|
||||
add_subdirectory(include/psdk)
|
||||
add_subdirectory(include/dxsdk)
|
||||
add_subdirectory(include/reactos/wine)
|
||||
add_subdirectory(include/reactos/mc)
|
||||
add_subdirectory(include/asm)
|
||||
|
||||
if(NO_ROSSYM)
|
||||
include(cmake/baseaddress_dwarf.cmake)
|
||||
@@ -271,12 +271,12 @@ else()
|
||||
add_subdirectory(dll)
|
||||
add_subdirectory(drivers)
|
||||
add_subdirectory(hal)
|
||||
add_subdirectory(sdk/lib)
|
||||
add_subdirectory(lib)
|
||||
add_subdirectory(media)
|
||||
add_subdirectory(modules)
|
||||
add_subdirectory(ntoskrnl)
|
||||
add_subdirectory(subsystems)
|
||||
add_subdirectory(sdk/tools/wpp)
|
||||
add_subdirectory(tools/wpp)
|
||||
add_subdirectory(win32ss)
|
||||
|
||||
# Create the registry hives
|
||||
@@ -285,7 +285,7 @@ else()
|
||||
# Create {bootcd, livecd, bootcdregtest}.lst
|
||||
create_iso_lists()
|
||||
|
||||
file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/sdk/include/reactos)
|
||||
file(MAKE_DIRECTORY ${REACTOS_BINARY_DIR}/include/reactos)
|
||||
|
||||
add_dependency_footer()
|
||||
endif()
|
||||
|
2615
reactos/Doxyfile
2615
reactos/Doxyfile
File diff suppressed because it is too large
Load Diff
@@ -24,10 +24,6 @@ HICON hSmIcon;
|
||||
HICON hBgIcon;
|
||||
SETTINGS Settings;
|
||||
|
||||
/* GetUName prototype */
|
||||
typedef int (WINAPI * GETUNAME)(WORD wCharCode, LPWSTR lpbuf);
|
||||
GETUNAME GetUName;
|
||||
|
||||
/* Font-enumeration callback */
|
||||
static
|
||||
int
|
||||
@@ -261,20 +257,6 @@ UpdateSettings(HWND hDlg)
|
||||
}
|
||||
#endif
|
||||
|
||||
VOID
|
||||
UpdateStatusBar(WCHAR wch)
|
||||
{
|
||||
WCHAR buff[MAX_PATH];
|
||||
WCHAR szDesc[MAX_PATH];
|
||||
|
||||
if (GetUName)
|
||||
{
|
||||
GetUName(wch, szDesc);
|
||||
wsprintfW(buff, L"U+%04X: %s", wch, szDesc);
|
||||
SendMessageW(hStatusWnd, SB_SETTEXT, 0, (LPARAM)buff);
|
||||
}
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
ChangeView(HWND hWnd)
|
||||
@@ -589,7 +571,6 @@ wWinMain(HINSTANCE hInst,
|
||||
INT Ret = 1;
|
||||
HMODULE hRichEd20;
|
||||
MSG Msg;
|
||||
HINSTANCE hGetUName = NULL;
|
||||
|
||||
hInstance = hInst;
|
||||
|
||||
@@ -597,18 +578,6 @@ wWinMain(HINSTANCE hInst,
|
||||
iccx.dwICC = ICC_TAB_CLASSES;
|
||||
InitCommonControlsEx(&iccx);
|
||||
|
||||
/* Loading the GetUName function */
|
||||
hGetUName = LoadLibraryW(L"getuname.dll");
|
||||
if (hGetUName != NULL)
|
||||
{
|
||||
GetUName = (GETUNAME) GetProcAddress(hGetUName, "GetUName");
|
||||
if (GetUName == NULL)
|
||||
{
|
||||
FreeLibrary(hGetUName);
|
||||
hGetUName = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (RegisterMapClasses(hInstance))
|
||||
{
|
||||
hRichEd20 = LoadLibraryW(L"RICHED20.DLL");
|
||||
@@ -634,8 +603,5 @@ wWinMain(HINSTANCE hInst,
|
||||
UnregisterMapClasses(hInstance);
|
||||
}
|
||||
|
||||
if (hGetUName != NULL)
|
||||
FreeLibrary(hGetUName);
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
@@ -4,18 +4,18 @@ IDD_CHARMAP DIALOGEX 6, 6, 292, 224
|
||||
FONT 8, "MS Shell Dlg", 0, 0
|
||||
STYLE DS_SHELLFONT | WS_CHILD | WS_VISIBLE
|
||||
BEGIN
|
||||
LTEXT "&Font:", IDC_STATIC, 6, 7, 24, 9
|
||||
LTEXT "Font:", IDC_STATIC, 6, 7, 24, 9
|
||||
COMBOBOX IDC_FONTCOMBO, 36, 5, 210, 210, WS_CHILD | WS_VISIBLE |
|
||||
WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT | CBS_HASSTRINGS
|
||||
PUSHBUTTON "&Help", IDC_CMHELP, 249, 5, 35, 13
|
||||
PUSHBUTTON "Help", IDC_CMHELP, 249, 5, 35, 13
|
||||
CONTROL "", IDC_FONTMAP, "FontMapWnd", WS_CHILD | WS_VISIBLE | WS_TABSTOP |
|
||||
WS_VSCROLL, 20, 22, 266, 156
|
||||
LTEXT "Ch&aracters to copy:", IDC_STATIC, 6, 188, 66, 9
|
||||
LTEXT "Characters to copy:", IDC_STATIC, 6, 188, 66, 9
|
||||
CONTROL "", IDC_TEXTBOX, RICHEDIT_CLASS, ES_AUTOHSCROLL | WS_BORDER |
|
||||
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
|
||||
DEFPUSHBUTTON "&Select", IDC_SELECT, 194, 186, 44, 13
|
||||
PUSHBUTTON "&Copy", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
|
||||
CONTROL "Ad&vanced view", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
|
||||
DEFPUSHBUTTON "Select", IDC_SELECT, 194, 186, 44, 13
|
||||
PUSHBUTTON "Copy", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
|
||||
CONTROL "Advanced view", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP, 8, 208, 95, 10
|
||||
END
|
||||
|
||||
@@ -23,14 +23,14 @@ IDD_ADVANCED DIALOGEX 0, 0, 292, 64
|
||||
STYLE DS_SHELLFONT | WS_CHILD
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Charse&t:", IDC_STATIC, 8, 8, 48, 8
|
||||
LTEXT "Charset:", IDC_STATIC, 8, 8, 48, 8
|
||||
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "&Group by:", IDC_STATIC, 8, 28, 50, 8
|
||||
LTEXT "Group by:", IDC_STATIC, 8, 28, 50, 8
|
||||
COMBOBOX IDC_COMBO_GROUPBY, 72, 24, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON "Sea&rch", IDC_BUTTON_SEARCH, 200, 44, 50, 14
|
||||
PUSHBUTTON "Search", IDC_BUTTON_SEARCH, 200, 44, 50, 14
|
||||
EDITTEXT IDC_EDIT_SEARCH, 72, 44, 116, 14, ES_AUTOHSCROLL
|
||||
LTEXT "S&earch for:", IDC_STATIC, 8, 48, 42, 8
|
||||
LTEXT "&Unicode:", IDC_STATIC, 200, 8, 30, 8
|
||||
LTEXT "Search for:", IDC_STATIC, 8, 48, 42, 8
|
||||
LTEXT "Unicode:", IDC_STATIC, 200, 8, 30, 8
|
||||
EDITTEXT IDC_EDIT_UNICODE, 236, 4, 28, 12, ES_AUTOHSCROLL
|
||||
END
|
||||
|
||||
@@ -40,7 +40,7 @@ FONT 8, "MS Shell Dlg", 0, 0
|
||||
STYLE DS_SHELLFONT | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_MODALFRAME
|
||||
BEGIN
|
||||
LTEXT "Character Map v0.1\nCopyright (C) 2007 Ged Murphy (gedmurphy@reactos.org)", IDC_STATIC, 48, 7, 150, 36
|
||||
PUSHBUTTON "&Close", IDOK, 75, 162, 44, 15
|
||||
PUSHBUTTON "Close", IDOK, 75, 162, 44, 15
|
||||
ICON IDI_ICON, IDC_STATIC, 10, 10, 7, 30
|
||||
EDITTEXT IDC_LICENSE_EDIT, 8, 44, 194, 107, WS_VISIBLE | WS_VSCROLL |
|
||||
WS_TABSTOP | ES_READONLY | ES_MULTILINE
|
||||
|
@@ -140,7 +140,6 @@ LrgCellWndProc(HWND hwnd,
|
||||
EndPaint(hwnd,
|
||||
&ps);
|
||||
|
||||
UpdateStatusBar(infoPtr->pActiveCell->ch);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -74,7 +74,6 @@ BOOL RegisterMapClasses(HINSTANCE hInstance);
|
||||
VOID UnregisterMapClasses(HINSTANCE hInstance);
|
||||
|
||||
/* charmap.c */
|
||||
VOID UpdateStatusBar(WCHAR wch);
|
||||
extern VOID ChangeMapFont(HWND hDlg);
|
||||
|
||||
/* settings.c */
|
||||
|
@@ -8,7 +8,7 @@ if(NOT MSVC)
|
||||
endif()
|
||||
|
||||
include_directories(
|
||||
${REACTOS_SOURCE_DIR}/sdk/lib/atl
|
||||
${REACTOS_SOURCE_DIR}/lib/atl
|
||||
includes)
|
||||
|
||||
list(APPEND SOURCE
|
||||
|
@@ -2,9 +2,9 @@
|
||||
list(APPEND SOURCE
|
||||
clipbrd.c
|
||||
cliputils.c
|
||||
winutils.c
|
||||
fileutils.c
|
||||
scrollutils.c
|
||||
winutils.c
|
||||
precomp.h)
|
||||
|
||||
add_executable(clipbrd ${SOURCE} clipbrd.rc)
|
||||
|
@@ -58,28 +58,7 @@ static void SaveClipboardToFile(void)
|
||||
return;
|
||||
}
|
||||
|
||||
WriteClipboardFile(szFileName, CLIP_FMT_NT /* CLIP_FMT_31 */);
|
||||
|
||||
CloseClipboard();
|
||||
}
|
||||
|
||||
static void LoadClipboardDataFromFile(LPWSTR lpszFileName)
|
||||
{
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance,
|
||||
STRING_DELETE_MSG, STRING_DELETE_TITLE,
|
||||
MB_ICONWARNING | MB_YESNO) != IDYES)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
return;
|
||||
}
|
||||
|
||||
EmptyClipboard();
|
||||
ReadClipboardFile(lpszFileName);
|
||||
WriteClipboardFile(szFileName);
|
||||
|
||||
CloseClipboard();
|
||||
}
|
||||
@@ -108,7 +87,19 @@ static void LoadClipboardFromFile(void)
|
||||
if (!GetOpenFileNameW(&ofn))
|
||||
return;
|
||||
|
||||
LoadClipboardDataFromFile(szFileName);
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
|
||||
{
|
||||
EmptyClipboard();
|
||||
ReadClipboardFile(szFileName);
|
||||
}
|
||||
|
||||
CloseClipboard();
|
||||
}
|
||||
|
||||
static void LoadClipboardFromDrop(HDROP hDrop)
|
||||
@@ -118,7 +109,19 @@ static void LoadClipboardFromDrop(HDROP hDrop)
|
||||
DragQueryFileW(hDrop, 0, szFileName, ARRAYSIZE(szFileName));
|
||||
DragFinish(hDrop);
|
||||
|
||||
LoadClipboardDataFromFile(szFileName);
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
return;
|
||||
}
|
||||
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
|
||||
{
|
||||
EmptyClipboard();
|
||||
ReadClipboardFile(szFileName);
|
||||
}
|
||||
|
||||
CloseClipboard();
|
||||
}
|
||||
|
||||
static void SetDisplayFormat(UINT uFormat)
|
||||
@@ -166,7 +169,7 @@ static void InitMenuPopup(HMENU hMenu, LPARAM index)
|
||||
DrawMenuBar(Globals.hMainWnd);
|
||||
}
|
||||
|
||||
static void UpdateDisplayMenu(void)
|
||||
void UpdateDisplayMenu(void)
|
||||
{
|
||||
UINT uFormat;
|
||||
WCHAR szFormatName[MAX_FMT_NAME_LEN + 1];
|
||||
@@ -190,7 +193,7 @@ static void UpdateDisplayMenu(void)
|
||||
uFormat = EnumClipboardFormats(0);
|
||||
while (uFormat)
|
||||
{
|
||||
RetrieveClipboardFormatName(Globals.hInstance, uFormat, TRUE, szFormatName, ARRAYSIZE(szFormatName));
|
||||
RetrieveClipboardFormatName(Globals.hInstance, uFormat, szFormatName, ARRAYSIZE(szFormatName));
|
||||
|
||||
if (!IsClipboardFormatSupported(uFormat))
|
||||
{
|
||||
@@ -231,14 +234,10 @@ static int ClipboardCommandHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||
|
||||
case CMD_DELETE:
|
||||
{
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance,
|
||||
STRING_DELETE_MSG, STRING_DELETE_TITLE,
|
||||
MB_ICONWARNING | MB_YESNO) != IDYES)
|
||||
if (MessageBoxRes(Globals.hMainWnd, Globals.hInstance, STRING_DELETE_MSG, STRING_DELETE_TITLE, MB_ICONWARNING | MB_YESNO) == IDYES)
|
||||
{
|
||||
break;
|
||||
DeleteClipboardContent();
|
||||
}
|
||||
|
||||
DeleteClipboardContent();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -259,7 +258,7 @@ static int ClipboardCommandHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l
|
||||
WCHAR szTitle[MAX_STRING_LEN];
|
||||
HICON hIcon;
|
||||
|
||||
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIPBRD_ICON));
|
||||
hIcon = LoadIconW(Globals.hInstance, MAKEINTRESOURCE(CLIP_ICON));
|
||||
LoadStringW(Globals.hInstance, STRING_CLIPBOARD, szTitle, ARRAYSIZE(szTitle));
|
||||
ShellAboutW(Globals.hMainWnd, szTitle, 0, hIcon);
|
||||
DeleteObject(hIcon);
|
||||
@@ -280,8 +279,10 @@ static void ClipboardPaintHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
PAINTSTRUCT ps;
|
||||
RECT rc;
|
||||
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
if (!OpenClipboard(NULL))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
hdc = BeginPaint(hWnd, &ps);
|
||||
GetClientRect(hWnd, &rc);
|
||||
@@ -317,18 +318,18 @@ static void ClipboardPaintHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
break;
|
||||
}
|
||||
|
||||
case CF_METAFILEPICT:
|
||||
{
|
||||
PlayMetaFileFromClipboard(hdc, &rc);
|
||||
break;
|
||||
}
|
||||
|
||||
case CF_ENHMETAFILE:
|
||||
{
|
||||
PlayEnhMetaFileFromClipboard(hdc, &rc);
|
||||
break;
|
||||
}
|
||||
|
||||
case CF_METAFILEPICT:
|
||||
{
|
||||
PlayMetaFileFromClipboard(hdc, &rc);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
DrawTextFromResource(Globals.hInstance, ERROR_UNSUPPORTED_FORMAT, hdc, &rc, DT_CENTER | DT_WORDBREAK | DT_NOPREFIX);
|
||||
@@ -345,28 +346,6 @@ static LRESULT WINAPI MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
{
|
||||
switch(uMsg)
|
||||
{
|
||||
case WM_CREATE:
|
||||
{
|
||||
Globals.hMenu = GetMenu(hWnd);
|
||||
Globals.hWndNext = SetClipboardViewer(hWnd);
|
||||
UpdateDisplayMenu();
|
||||
SetDisplayFormat(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CLOSE:
|
||||
{
|
||||
DestroyWindow(hWnd);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
ChangeClipboardChain(hWnd, Globals.hWndNext);
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_PAINT:
|
||||
{
|
||||
ClipboardPaintHandler(hWnd, uMsg, wParam, lParam);
|
||||
@@ -416,6 +395,28 @@ static LRESULT WINAPI MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CREATE:
|
||||
{
|
||||
Globals.hMenu = GetMenu(hWnd);
|
||||
Globals.hWndNext = SetClipboardViewer(hWnd);
|
||||
UpdateDisplayMenu();
|
||||
SetDisplayFormat(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CLOSE:
|
||||
{
|
||||
DestroyWindow(hWnd);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_DESTROY:
|
||||
{
|
||||
ChangeClipboardChain(hWnd, Globals.hWndNext);
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CHANGECBCHAIN:
|
||||
{
|
||||
if ((HWND)wParam == Globals.hWndNext)
|
||||
@@ -533,7 +534,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||
wndclass.cbSize = sizeof(wndclass);
|
||||
wndclass.lpfnWndProc = MainWndProc;
|
||||
wndclass.hInstance = hInstance;
|
||||
wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIPBRD_ICON));
|
||||
wndclass.hIcon = LoadIconW(hInstance, MAKEINTRESOURCEW(CLIP_ICON));
|
||||
wndclass.hCursor = LoadCursorW(0, IDC_ARROW);
|
||||
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
||||
wndclass.lpszMenuName = MAKEINTRESOURCEW(MAIN_MENU);
|
||||
@@ -573,10 +574,6 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
}
|
||||
|
||||
/* If the user provided a path to a clipboard data file, try to open it */
|
||||
if (lpCmdLine != NULL && *lpCmdLine)
|
||||
LoadClipboardDataFromFile(lpCmdLine);
|
||||
|
||||
UpdateLinesToScroll();
|
||||
|
||||
while (GetMessageW(&msg, 0, 0, 0))
|
||||
|
@@ -8,8 +8,7 @@
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "clipbrd.exe"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
CLIPBRD_ICON ICON "res/clipbrd.ico"
|
||||
CLPFILE_ICON ICON "res/clpfile.ico"
|
||||
CLIP_ICON ICON "res/clipbrd.ico"
|
||||
|
||||
#include <reactos/manifest_exe.rc>
|
||||
|
||||
|
@@ -8,61 +8,73 @@
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
static int
|
||||
GetPredefinedClipboardFormatName(HINSTANCE hInstance,
|
||||
UINT uFormat,
|
||||
BOOL Unicode,
|
||||
PVOID lpszFormat,
|
||||
UINT cch)
|
||||
int GetPredefinedClipboardFormatName(HINSTANCE hInstance, UINT uFormat, LPWSTR lpszFormat, UINT cch)
|
||||
{
|
||||
static
|
||||
struct FORMAT_NAME
|
||||
{
|
||||
UINT uFormat;
|
||||
UINT uResID;
|
||||
} uFormatList[] = {
|
||||
/* Table sorted in increasing order of CF_xxx values, please keep it this way! */
|
||||
{CF_TEXT , STRING_CF_TEXT }, // 1
|
||||
{CF_BITMAP , STRING_CF_BITMAP }, // 2
|
||||
{CF_METAFILEPICT, STRING_CF_METAFILEPICT}, // 3
|
||||
{CF_SYLK , STRING_CF_SYLK }, // 4
|
||||
{CF_DIF , STRING_CF_DIF }, // 5
|
||||
{CF_TIFF , 0/*STRING_CF_TIFF*/ }, // 6
|
||||
{CF_OEMTEXT , STRING_CF_OEMTEXT }, // 7
|
||||
{CF_DIB , STRING_CF_DIB }, // 8
|
||||
{CF_PALETTE , STRING_CF_PALETTE }, // 9
|
||||
{CF_PENDATA , 0/*STRING_CF_PENDATA*/ }, // 10
|
||||
{CF_RIFF , 0/*STRING_CF_RIFF*/ }, // 11
|
||||
{CF_WAVE , 0/*STRING_CF_WAVE*/ }, // 12
|
||||
{CF_UNICODETEXT , STRING_CF_UNICODETEXT }, // 13
|
||||
{CF_ENHMETAFILE , STRING_CF_ENHMETAFILE }, // 14
|
||||
#if(WINVER >= 0x0400)
|
||||
{CF_HDROP , STRING_CF_HDROP }, // 15
|
||||
{CF_LOCALE , STRING_CF_LOCALE }, // 16
|
||||
#endif
|
||||
#if(WINVER >= 0x0500)
|
||||
{CF_DIBV5 , STRING_CF_DIBV5 }, // 17
|
||||
#endif
|
||||
};
|
||||
|
||||
switch (uFormat)
|
||||
{
|
||||
case CF_TEXT: case CF_BITMAP: case CF_METAFILEPICT:
|
||||
case CF_SYLK: case CF_DIF: // case CF_TIFF:
|
||||
case CF_OEMTEXT: case CF_DIB: case CF_PALETTE:
|
||||
// case CF_PENDATA: // case CF_RIFF: // case CF_WAVE:
|
||||
case CF_UNICODETEXT: case CF_ENHMETAFILE:
|
||||
#if(WINVER >= 0x0400)
|
||||
case CF_HDROP: case CF_LOCALE:
|
||||
#endif
|
||||
#if(WINVER >= 0x0500)
|
||||
case CF_DIBV5:
|
||||
#endif
|
||||
case CF_TEXT:
|
||||
{
|
||||
if (Unicode)
|
||||
return LoadStringW(hInstance, uFormatList[uFormat-1].uResID, (LPWSTR)lpszFormat, cch);
|
||||
else
|
||||
return LoadStringA(hInstance, uFormatList[uFormat-1].uResID, (LPSTR)lpszFormat, cch);
|
||||
return LoadStringW(hInstance, STRING_CF_TEXT, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_BITMAP:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_BITMAP, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_OEMTEXT:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_OEMTEXT, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_UNICODETEXT:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_UNICODETEXT, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_DIB:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_DIB, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_LOCALE:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_LOCALE, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_ENHMETAFILE:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_ENHMETAFILE, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_METAFILEPICT:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_METAFILEPICT, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_PALETTE:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_PALETTE, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_DIBV5:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_DIBV5, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_SYLK:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_SYLK, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_DIF:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_DIF, lpszFormat, cch);
|
||||
}
|
||||
|
||||
case CF_HDROP:
|
||||
{
|
||||
return LoadStringW(hInstance, STRING_CF_HDROP, lpszFormat, cch);
|
||||
}
|
||||
|
||||
default:
|
||||
@@ -72,24 +84,13 @@ GetPredefinedClipboardFormatName(HINSTANCE hInstance,
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RetrieveClipboardFormatName(HINSTANCE hInstance,
|
||||
UINT uFormat,
|
||||
BOOL Unicode,
|
||||
PVOID lpszFormat,
|
||||
UINT cch)
|
||||
void RetrieveClipboardFormatName(HINSTANCE hInstance, UINT uFormat, LPWSTR lpszFormat, UINT cch)
|
||||
{
|
||||
if (!GetPredefinedClipboardFormatName(hInstance, uFormat, Unicode, lpszFormat, cch))
|
||||
if (!GetPredefinedClipboardFormatName(hInstance, uFormat, lpszFormat, cch))
|
||||
{
|
||||
if (Unicode)
|
||||
if (!GetClipboardFormatName(uFormat, lpszFormat, cch))
|
||||
{
|
||||
if (!GetClipboardFormatNameW(uFormat, (LPWSTR)lpszFormat, cch))
|
||||
LoadStringW(hInstance, STRING_CF_UNKNOWN, (LPWSTR)lpszFormat, cch);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!GetClipboardFormatNameA(uFormat, (LPSTR)lpszFormat, cch))
|
||||
LoadStringA(hInstance, STRING_CF_UNKNOWN, (LPSTR)lpszFormat, cch);
|
||||
LoadStringW(hInstance, STRING_CF_UNKNOWN, lpszFormat, cch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -6,13 +6,8 @@
|
||||
* PROGRAMMERS: Ricardo Hanke
|
||||
*/
|
||||
|
||||
void
|
||||
RetrieveClipboardFormatName(HINSTANCE hInstance,
|
||||
UINT uFormat,
|
||||
BOOL Unicode,
|
||||
PVOID lpszFormat,
|
||||
UINT cch);
|
||||
|
||||
int GetPredefinedClipboardFormatName(HINSTANCE hInstance, UINT uFormat, LPWSTR lpszFormat, UINT cch);
|
||||
void RetrieveClipboardFormatName(HINSTANCE hInstance, UINT uFormat, LPWSTR lpszFormat, UINT cch);
|
||||
void DeleteClipboardContent(void);
|
||||
UINT GetAutomaticClipboardFormat(void);
|
||||
BOOL IsClipboardFormatSupported(UINT uFormat);
|
||||
|
@@ -4,7 +4,6 @@
|
||||
* FILE: base/applications/clipbrd/fileutils.c
|
||||
* PURPOSE: Clipboard file format helper functions.
|
||||
* PROGRAMMERS: Ricardo Hanke
|
||||
* Hermes Belusca-Maito
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -17,7 +16,9 @@ static HGLOBAL ClipboardReadMemoryBlock(HANDLE hFile, DWORD dwOffset, DWORD dwLe
|
||||
|
||||
hData = GlobalAlloc(GHND, dwLength);
|
||||
if (!hData)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
lpData = GlobalLock(hData);
|
||||
if (!lpData)
|
||||
@@ -45,22 +46,20 @@ static HGLOBAL ClipboardReadMemoryBlock(HANDLE hFile, DWORD dwOffset, DWORD dwLe
|
||||
return hData;
|
||||
}
|
||||
|
||||
static BOOL ClipboardReadMemory(HANDLE hFile, DWORD dwFormat, DWORD dwOffset, DWORD dwLength, WORD FileIdentifier, PVOID lpFormatName)
|
||||
static BOOL ClipboardReadMemory(HANDLE hFile, DWORD dwFormat, DWORD dwOffset, DWORD dwLength, LPCWSTR lpFormatName)
|
||||
{
|
||||
HGLOBAL hData;
|
||||
DWORD dwTemp = 0;
|
||||
DWORD dwTemp;
|
||||
|
||||
hData = ClipboardReadMemoryBlock(hFile, dwOffset, dwLength);
|
||||
if (!hData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ((dwFormat >= 0xC000) && (dwFormat <= 0xFFFF))
|
||||
{
|
||||
if (FileIdentifier == CLIP_FMT_31)
|
||||
dwTemp = RegisterClipboardFormatA((LPCSTR)lpFormatName);
|
||||
else if ((FileIdentifier == CLIP_FMT_NT) || (FileIdentifier == CLIP_FMT_BK))
|
||||
dwTemp = RegisterClipboardFormatW((LPCWSTR)lpFormatName);
|
||||
|
||||
dwTemp = RegisterClipboardFormatW(lpFormatName);
|
||||
if (!dwTemp)
|
||||
{
|
||||
GlobalFree(hData);
|
||||
@@ -81,39 +80,6 @@ static BOOL ClipboardReadMemory(HANDLE hFile, DWORD dwFormat, DWORD dwOffset, DW
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ClipboardWriteMemory(HANDLE hFile, DWORD dwFormat, DWORD dwOffset, PDWORD pdwLength)
|
||||
{
|
||||
HGLOBAL hData;
|
||||
LPVOID lpData;
|
||||
DWORD dwBytesWritten;
|
||||
|
||||
hData = GetClipboardData(dwFormat);
|
||||
if (!hData)
|
||||
return FALSE;
|
||||
|
||||
lpData = GlobalLock(hData);
|
||||
if (!lpData)
|
||||
return FALSE;
|
||||
|
||||
*pdwLength = GlobalSize(hData);
|
||||
|
||||
if (SetFilePointer(hFile, dwOffset, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
|
||||
{
|
||||
GlobalUnlock(hData);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!WriteFile(hFile, lpData, *pdwLength, &dwBytesWritten, NULL))
|
||||
{
|
||||
GlobalUnlock(hData);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
GlobalUnlock(hData);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ClipboardReadPalette(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
|
||||
{
|
||||
LPLOGPALETTE lpPalette;
|
||||
@@ -154,45 +120,6 @@ static BOOL ClipboardReadPalette(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ClipboardReadMetafile(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
|
||||
{
|
||||
HMETAFILE hMf;
|
||||
HGLOBAL hData;
|
||||
LPVOID lpData;
|
||||
|
||||
hData = ClipboardReadMemoryBlock(hFile, dwOffset, dwLength);
|
||||
if (!hData)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
lpData = GlobalLock(hData);
|
||||
if (!lpData)
|
||||
{
|
||||
GlobalFree(hData);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
hMf = SetMetaFileBitsEx(dwLength, lpData);
|
||||
|
||||
GlobalUnlock(hData);
|
||||
GlobalFree(hData);
|
||||
|
||||
if (!hMf)
|
||||
{
|
||||
SetLastError(ERROR_OUTOFMEMORY);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!SetClipboardData(CF_METAFILEPICT, hMf))
|
||||
{
|
||||
DeleteMetaFile(hMf);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ClipboardReadEnhMetafile(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
|
||||
{
|
||||
HENHMETAFILE hEmf;
|
||||
@@ -275,126 +202,53 @@ static BOOL ClipboardReadBitmap(HANDLE hFile, DWORD dwOffset, DWORD dwLength)
|
||||
|
||||
void ReadClipboardFile(LPCWSTR lpFileName)
|
||||
{
|
||||
CLIPFILEHEADER ClipFileHeader;
|
||||
CLIPFORMATHEADER ClipFormatArray;
|
||||
NTCLIPFILEHEADER NtClipFileHeader;
|
||||
NTCLIPFORMATHEADER NtClipFormatArray;
|
||||
PVOID pClipFileHeader;
|
||||
PVOID pClipFormatArray;
|
||||
DWORD SizeOfFileHeader, SizeOfFormatHeader;
|
||||
|
||||
WORD wFileIdentifier;
|
||||
WORD wFormatCount;
|
||||
DWORD dwFormatID;
|
||||
DWORD dwLenData;
|
||||
DWORD dwOffData;
|
||||
PVOID szName;
|
||||
|
||||
CLIPBOARDFILEHEADER cfhFileHeader;
|
||||
CLIPBOARDFORMATHEADER *cfhFormatArray = NULL;
|
||||
HANDLE hFile;
|
||||
DWORD dwBytesRead;
|
||||
BOOL bResult;
|
||||
int i;
|
||||
|
||||
/* Open the file for read access */
|
||||
hFile = CreateFileW(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
hFile = CreateFileW(lpFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Just read enough bytes to get the clipboard file format ID */
|
||||
if (!ReadFile(hFile, &wFileIdentifier, sizeof(wFileIdentifier), &dwBytesRead, NULL))
|
||||
if (!ReadFile(hFile, &cfhFileHeader, sizeof(cfhFileHeader), &dwBytesRead, NULL))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Set data according to the clipboard file format ID */
|
||||
switch (wFileIdentifier)
|
||||
if ((cfhFileHeader.wFileIdentifier != CLIPBOARD_FORMAT_NT) && (cfhFileHeader.wFileIdentifier != CLIPBOARD_FORMAT_BK))
|
||||
{
|
||||
case CLIP_FMT_31:
|
||||
SizeOfFileHeader = sizeof(CLIPFILEHEADER);
|
||||
SizeOfFormatHeader = sizeof(CLIPFORMATHEADER);
|
||||
pClipFileHeader = &ClipFileHeader;
|
||||
pClipFormatArray = &ClipFormatArray;
|
||||
break;
|
||||
|
||||
case CLIP_FMT_NT:
|
||||
case CLIP_FMT_BK:
|
||||
SizeOfFileHeader = sizeof(NTCLIPFILEHEADER);
|
||||
SizeOfFormatHeader = sizeof(NTCLIPFORMATHEADER);
|
||||
pClipFileHeader = &NtClipFileHeader;
|
||||
pClipFormatArray = &NtClipFormatArray;
|
||||
break;
|
||||
|
||||
default:
|
||||
MessageBoxRes(Globals.hMainWnd, Globals.hInstance, ERROR_INVALID_FILE_FORMAT, 0, MB_ICONSTOP | MB_OK);
|
||||
goto done;
|
||||
MessageBoxRes(Globals.hMainWnd, Globals.hInstance, ERROR_INVALID_FILE_FORMAT, 0, MB_ICONSTOP | MB_OK);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Completely read the header */
|
||||
SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
|
||||
if (!ReadFile(hFile, pClipFileHeader, SizeOfFileHeader, &dwBytesRead, NULL) ||
|
||||
dwBytesRead != SizeOfFileHeader)
|
||||
cfhFormatArray = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cfhFileHeader.wFormatCount * sizeof(CLIPBOARDFORMATHEADER));
|
||||
if (!cfhFormatArray)
|
||||
{
|
||||
SetLastError(ERROR_OUTOFMEMORY);
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!ReadFile(hFile, cfhFormatArray, cfhFileHeader.wFormatCount * sizeof(CLIPBOARDFORMATHEADER), &dwBytesRead, NULL))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Get header data */
|
||||
switch (wFileIdentifier)
|
||||
for (i = 0; i < cfhFileHeader.wFormatCount; i++)
|
||||
{
|
||||
case CLIP_FMT_31:
|
||||
assert(wFileIdentifier == ((CLIPFILEHEADER*)pClipFileHeader)->wFileIdentifier);
|
||||
wFormatCount = ((CLIPFILEHEADER*)pClipFileHeader)->wFormatCount;
|
||||
break;
|
||||
|
||||
case CLIP_FMT_NT:
|
||||
case CLIP_FMT_BK:
|
||||
assert(wFileIdentifier == ((NTCLIPFILEHEADER*)pClipFileHeader)->wFileIdentifier);
|
||||
wFormatCount = ((NTCLIPFILEHEADER*)pClipFileHeader)->wFormatCount;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Loop through the format data array */
|
||||
for (i = 0; i < wFormatCount; i++)
|
||||
{
|
||||
if (SetFilePointer(hFile, SizeOfFileHeader + i * SizeOfFormatHeader, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!ReadFile(hFile, pClipFormatArray, SizeOfFormatHeader, &dwBytesRead, NULL))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Get format data */
|
||||
switch (wFileIdentifier)
|
||||
{
|
||||
case CLIP_FMT_31:
|
||||
dwFormatID = ((CLIPFORMATHEADER*)pClipFormatArray)->dwFormatID;
|
||||
dwLenData = ((CLIPFORMATHEADER*)pClipFormatArray)->dwLenData;
|
||||
dwOffData = ((CLIPFORMATHEADER*)pClipFormatArray)->dwOffData;
|
||||
szName = ((CLIPFORMATHEADER*)pClipFormatArray)->szName;
|
||||
break;
|
||||
|
||||
case CLIP_FMT_NT:
|
||||
case CLIP_FMT_BK:
|
||||
dwFormatID = ((NTCLIPFORMATHEADER*)pClipFormatArray)->dwFormatID;
|
||||
dwLenData = ((NTCLIPFORMATHEADER*)pClipFormatArray)->dwLenData;
|
||||
dwOffData = ((NTCLIPFORMATHEADER*)pClipFormatArray)->dwOffData;
|
||||
szName = ((NTCLIPFORMATHEADER*)pClipFormatArray)->szName;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (dwFormatID)
|
||||
switch (cfhFormatArray[i].dwFormatID)
|
||||
{
|
||||
case CF_OWNERDISPLAY:
|
||||
case CF_DSPMETAFILEPICT:
|
||||
case CF_METAFILEPICT:
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -402,191 +256,55 @@ void ReadClipboardFile(LPCWSTR lpFileName)
|
||||
case CF_BITMAP:
|
||||
case CF_DSPBITMAP:
|
||||
{
|
||||
bResult = ClipboardReadBitmap(hFile, dwOffData, dwLenData);
|
||||
bResult = ClipboardReadBitmap(hFile, cfhFormatArray[i].dwOffData, cfhFormatArray[i].dwLenData);
|
||||
break;
|
||||
}
|
||||
|
||||
case CF_METAFILEPICT:
|
||||
case CF_DSPMETAFILEPICT:
|
||||
{
|
||||
bResult = ClipboardReadMetafile(hFile, dwOffData, dwLenData);
|
||||
break;
|
||||
}
|
||||
|
||||
case CF_ENHMETAFILE:
|
||||
case CF_DSPENHMETAFILE:
|
||||
case CF_ENHMETAFILE:
|
||||
{
|
||||
bResult = ClipboardReadEnhMetafile(hFile, dwOffData, dwLenData);
|
||||
bResult = ClipboardReadEnhMetafile(hFile, cfhFormatArray[i].dwOffData, cfhFormatArray[i].dwLenData);
|
||||
break;
|
||||
}
|
||||
|
||||
case CF_PALETTE:
|
||||
{
|
||||
bResult = ClipboardReadPalette(hFile, dwOffData, dwLenData);
|
||||
bResult = ClipboardReadPalette(hFile, cfhFormatArray[i].dwOffData, cfhFormatArray[i].dwLenData);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
if ((dwFormatID < CF_PRIVATEFIRST) || (dwFormatID > CF_PRIVATELAST))
|
||||
if ((cfhFormatArray[i].dwFormatID < CF_PRIVATEFIRST) || (cfhFormatArray[i].dwFormatID > CF_PRIVATELAST))
|
||||
{
|
||||
bResult = ClipboardReadMemory(hFile, dwFormatID, dwOffData, dwLenData, wFileIdentifier, szName);
|
||||
bResult = ClipboardReadMemory(hFile, cfhFormatArray[i].dwFormatID, cfhFormatArray[i].dwOffData, cfhFormatArray[i].dwLenData, cfhFormatArray[i].szName);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!bResult)
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
if (hFile != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
CloseHandle(hFile);
|
||||
}
|
||||
|
||||
if (cfhFormatArray)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, cfhFormatArray);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void WriteClipboardFile(LPCWSTR lpFileName, WORD wFileIdentifier)
|
||||
void WriteClipboardFile(LPCWSTR lpFileName)
|
||||
{
|
||||
CLIPFILEHEADER ClipFileHeader;
|
||||
CLIPFORMATHEADER ClipFormatArray;
|
||||
NTCLIPFILEHEADER NtClipFileHeader;
|
||||
NTCLIPFORMATHEADER NtClipFormatArray;
|
||||
PVOID pClipFileHeader;
|
||||
PVOID pClipFormatArray;
|
||||
DWORD SizeOfFileHeader, SizeOfFormatHeader;
|
||||
|
||||
WORD wFormatCount;
|
||||
DWORD dwFormatID;
|
||||
DWORD dwLenData;
|
||||
DWORD dwOffData;
|
||||
// PVOID szName;
|
||||
|
||||
HANDLE hFile;
|
||||
DWORD dwBytesWritten;
|
||||
int i;
|
||||
|
||||
/* Create the file for write access */
|
||||
hFile = CreateFileW(lpFileName, GENERIC_WRITE, 0, NULL,
|
||||
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
if (hFile == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
wFormatCount = CountClipboardFormats();
|
||||
|
||||
/* Select the file format and setup the header according to the clipboard file format ID */
|
||||
switch (wFileIdentifier)
|
||||
{
|
||||
case CLIP_FMT_31:
|
||||
SizeOfFileHeader = sizeof(CLIPFILEHEADER);
|
||||
SizeOfFormatHeader = sizeof(CLIPFORMATHEADER);
|
||||
pClipFileHeader = &ClipFileHeader;
|
||||
pClipFormatArray = &ClipFormatArray;
|
||||
|
||||
ClipFileHeader.wFileIdentifier = CLIP_FMT_31; // wFileIdentifier
|
||||
ClipFileHeader.wFormatCount = wFormatCount;
|
||||
break;
|
||||
|
||||
case CLIP_FMT_NT:
|
||||
case CLIP_FMT_BK:
|
||||
SizeOfFileHeader = sizeof(NTCLIPFILEHEADER);
|
||||
SizeOfFormatHeader = sizeof(NTCLIPFORMATHEADER);
|
||||
pClipFileHeader = &NtClipFileHeader;
|
||||
pClipFormatArray = &NtClipFormatArray;
|
||||
|
||||
NtClipFileHeader.wFileIdentifier = CLIP_FMT_NT; // wFileIdentifier
|
||||
NtClipFileHeader.wFormatCount = wFormatCount;
|
||||
break;
|
||||
|
||||
default:
|
||||
MessageBoxRes(Globals.hMainWnd, Globals.hInstance, ERROR_INVALID_FILE_FORMAT, 0, MB_ICONSTOP | MB_OK);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Write the header */
|
||||
SetFilePointer(hFile, 0, NULL, FILE_BEGIN);
|
||||
if (!WriteFile(hFile, pClipFileHeader, SizeOfFileHeader, &dwBytesWritten, NULL) ||
|
||||
dwBytesWritten != SizeOfFileHeader)
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Compute where the data should start (after the file header and the format array) */
|
||||
dwOffData = SizeOfFileHeader + wFormatCount * SizeOfFormatHeader;
|
||||
|
||||
/* Loop through each format and save the data */
|
||||
i = 0;
|
||||
dwFormatID = EnumClipboardFormats(0);
|
||||
while (dwFormatID)
|
||||
{
|
||||
if (i >= wFormatCount)
|
||||
{
|
||||
/* Must never happen! */
|
||||
assert(FALSE);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Write the clipboard data at the specified offset, and retrieve its length */
|
||||
if (!ClipboardWriteMemory(hFile, dwFormatID, dwOffData, &dwLenData))
|
||||
goto Cont;
|
||||
|
||||
/* Write the format data header */
|
||||
switch (wFileIdentifier)
|
||||
{
|
||||
case CLIP_FMT_31:
|
||||
ZeroMemory(pClipFormatArray, sizeof(CLIPFORMATHEADER));
|
||||
((CLIPFORMATHEADER*)pClipFormatArray)->dwFormatID = dwFormatID;
|
||||
((CLIPFORMATHEADER*)pClipFormatArray)->dwLenData = dwLenData;
|
||||
((CLIPFORMATHEADER*)pClipFormatArray)->dwOffData = dwOffData;
|
||||
RetrieveClipboardFormatName(Globals.hInstance,
|
||||
dwFormatID,
|
||||
FALSE,
|
||||
((CLIPFORMATHEADER*)pClipFormatArray)->szName,
|
||||
ARRAYSIZE(((CLIPFORMATHEADER*)pClipFormatArray)->szName));
|
||||
break;
|
||||
|
||||
case CLIP_FMT_NT:
|
||||
case CLIP_FMT_BK:
|
||||
ZeroMemory(pClipFormatArray, sizeof(NTCLIPFORMATHEADER));
|
||||
((NTCLIPFORMATHEADER*)pClipFormatArray)->dwFormatID = dwFormatID;
|
||||
((NTCLIPFORMATHEADER*)pClipFormatArray)->dwLenData = dwLenData;
|
||||
((NTCLIPFORMATHEADER*)pClipFormatArray)->dwOffData = dwOffData;
|
||||
RetrieveClipboardFormatName(Globals.hInstance,
|
||||
dwFormatID,
|
||||
TRUE,
|
||||
((NTCLIPFORMATHEADER*)pClipFormatArray)->szName,
|
||||
ARRAYSIZE(((NTCLIPFORMATHEADER*)pClipFormatArray)->szName));
|
||||
break;
|
||||
}
|
||||
|
||||
if (SetFilePointer(hFile, SizeOfFileHeader + i * SizeOfFormatHeader, NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER)
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (!WriteFile(hFile, pClipFormatArray, SizeOfFormatHeader, &dwBytesWritten, NULL))
|
||||
{
|
||||
ShowLastWin32Error(Globals.hMainWnd);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Adjust the offset for the next data stream */
|
||||
dwOffData += dwLenData;
|
||||
|
||||
Cont:
|
||||
i++;
|
||||
dwFormatID = EnumClipboardFormats(dwFormatID);
|
||||
}
|
||||
|
||||
done:
|
||||
if (hFile != INVALID_HANDLE_VALUE)
|
||||
CloseHandle(hFile);
|
||||
|
||||
MessageBoxW(Globals.hMainWnd, L"This function is currently not implemented.", L"Clipboard", MB_OK | MB_ICONINFORMATION);
|
||||
return;
|
||||
}
|
||||
|
@@ -4,49 +4,26 @@
|
||||
* FILE: base/applications/clipbrd/fileutils.h
|
||||
* PURPOSE: Clipboard file format helper functions.
|
||||
* PROGRAMMERS: Ricardo Hanke
|
||||
* Hermes Belusca-Maito
|
||||
*/
|
||||
|
||||
#define CLIP_FMT_31 0xC350
|
||||
#define CLIP_FMT_NT 0xC351
|
||||
#define CLIP_FMT_BK 0xC352
|
||||
#define CLIPBOARD_FORMAT_31 0xC350
|
||||
#define CLIPBOARD_FORMAT_NT 0xC351
|
||||
#define CLIPBOARD_FORMAT_BK 0xC352
|
||||
#define MAX_FMT_NAME_LEN 79
|
||||
|
||||
/*
|
||||
* Win3.1 Clipboard File Format (default)
|
||||
*/
|
||||
#pragma pack(push, 1)
|
||||
typedef struct _CLIPFILEHEADER
|
||||
typedef struct _CLIPBOARDFILEHEADER
|
||||
{
|
||||
WORD wFileIdentifier;
|
||||
WORD wFormatCount;
|
||||
} CLIPFILEHEADER;
|
||||
} CLIPBOARDFILEHEADER;
|
||||
|
||||
typedef struct _CLIPFORMATHEADER
|
||||
{
|
||||
WORD dwFormatID;
|
||||
DWORD dwLenData;
|
||||
DWORD dwOffData;
|
||||
CHAR szName[MAX_FMT_NAME_LEN];
|
||||
} CLIPFORMATHEADER;
|
||||
#pragma pack(pop)
|
||||
|
||||
/*
|
||||
* NT Clipboard File Format
|
||||
*/
|
||||
typedef struct _NTCLIPFILEHEADER
|
||||
{
|
||||
WORD wFileIdentifier;
|
||||
WORD wFormatCount;
|
||||
} NTCLIPFILEHEADER;
|
||||
|
||||
typedef struct _NTCLIPFORMATHEADER
|
||||
typedef struct _CLIPBOARDFORMATHEADER
|
||||
{
|
||||
DWORD dwFormatID;
|
||||
DWORD dwLenData;
|
||||
DWORD dwOffData;
|
||||
WCHAR szName[MAX_FMT_NAME_LEN];
|
||||
} NTCLIPFORMATHEADER;
|
||||
} CLIPBOARDFORMATHEADER;
|
||||
|
||||
void ReadClipboardFile(LPCWSTR lpFileName);
|
||||
void WriteClipboardFile(LPCWSTR lpFileName, WORD wFileIdentifier);
|
||||
void WriteClipboardFile(LPCWSTR lpFileName);
|
||||
|
@@ -32,8 +32,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Clipboard Viewer"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_CLIPBOARD "Zwischenablage"
|
||||
STRING_DELETE_MSG "Soll der Inhalt der Zwischenablage gelöscht werden?"
|
||||
STRING_DELETE_TITLE "Zwischenablage löschen"
|
||||
STRING_FORMAT_NT "Zwischenablagedateien für ReactOS (*.clp)"
|
||||
|
@@ -32,8 +32,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Clipboard Viewer"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_CLIPBOARD "Clipboard"
|
||||
STRING_DELETE_MSG "Clear contents of the Clipboard?"
|
||||
STRING_DELETE_TITLE "Clear Clipboard"
|
||||
STRING_FORMAT_NT "Clipboard files for ReactOS (*.clp)"
|
||||
|
@@ -34,8 +34,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Clipboard Viewer"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_CLIPBOARD "Portapapeles"
|
||||
STRING_DELETE_MSG "¿Borrar contenidos del Portapapeles?"
|
||||
STRING_DELETE_TITLE "Vaciar Portapapeles"
|
||||
STRING_FORMAT_NT "Archivos de Portapapeles de ReactOS (*.clp)"
|
||||
|
@@ -18,7 +18,7 @@ BEGIN
|
||||
BEGIN
|
||||
MENUITEM "&Supprimer\tSuppr", CMD_DELETE
|
||||
END
|
||||
POPUP "Affic&hage"
|
||||
POPUP "&Affichage"
|
||||
BEGIN
|
||||
MENUITEM "&Automatique", CMD_AUTOMATIC
|
||||
END
|
||||
@@ -32,8 +32,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Visionneuse du Presse-papiers"
|
||||
STRING_CLIPFILE "Élément du Presse-papiers"
|
||||
STRING_CLIPBOARD "Presse-papiers"
|
||||
STRING_DELETE_MSG "Voulez-vous effacer le contenu du Presse-papiers ?"
|
||||
STRING_DELETE_TITLE "Effacer le Presse-papiers"
|
||||
STRING_FORMAT_NT "Fichiers du Presse-papiers ReactOS (*.clp)"
|
||||
|
@@ -33,8 +33,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Clipboard Viewer"
|
||||
STRING_CLIPFILE "Clipboard Element"
|
||||
STRING_CLIPBOARD "Clipboard"
|
||||
STRING_DELETE_MSG "Elimină conținutul din Clipboard?"
|
||||
STRING_DELETE_TITLE "Curăță Clipboard"
|
||||
STRING_FORMAT_NT "Fișiere clipboard pentru ReactOS (*.clp)"
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* TRANSLATOR: 2015, 2016 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
|
||||
/* TRANSLATOR: 2015 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
|
||||
|
||||
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||
|
||||
@@ -34,8 +34,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "Pano Görüntüleyicisi"
|
||||
STRING_CLIPFILE "Pano Öğesi"
|
||||
STRING_CLIPBOARD "Pano"
|
||||
STRING_DELETE_MSG "Pano içeriğini sil?"
|
||||
STRING_DELETE_TITLE "Pano Sil"
|
||||
STRING_FORMAT_NT "ReactOS İçin Pano Kütükleri (*.clp)"
|
||||
|
@@ -34,8 +34,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "剪贴板查看程序"
|
||||
STRING_CLIPFILE "剪贴板上的元素"
|
||||
STRING_CLIPBOARD "剪贴板"
|
||||
STRING_DELETE_MSG "清除剪贴板的内容吗?"
|
||||
STRING_DELETE_TITLE "清除剪贴板"
|
||||
STRING_FORMAT_NT "ReactOS 的剪贴板文件 (*.clp)"
|
||||
|
@@ -34,8 +34,7 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
STRING_CLIPBOARD "剪貼簿查看程式"
|
||||
STRING_CLIPFILE "剪貼簿上的元素"
|
||||
STRING_CLIPBOARD "剪貼簿"
|
||||
STRING_DELETE_MSG "清除剪貼簿的內容嗎?"
|
||||
STRING_DELETE_TITLE "清除剪貼簿"
|
||||
STRING_FORMAT_NT "ReactOS 的剪貼簿檔案 (*.clp)"
|
||||
|
@@ -5,8 +5,6 @@
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
#include <winuser.h>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 25 KiB |
@@ -1,40 +1,38 @@
|
||||
#pragma once
|
||||
|
||||
#define CLIPBRD_ICON 100
|
||||
#define CLPFILE_ICON 101
|
||||
#define MAIN_MENU 102
|
||||
#define ID_ACCEL 103
|
||||
#define MAIN_MENU 100
|
||||
#define CLIP_ICON 101
|
||||
#define ID_ACCEL 102
|
||||
|
||||
#define CMD_OPEN 110
|
||||
#define CMD_SAVE_AS 111
|
||||
#define CMD_EXIT 112
|
||||
#define CMD_DELETE 113
|
||||
#define CMD_HELP 115
|
||||
#define CMD_ABOUT 116
|
||||
#define CMD_OPEN 100
|
||||
#define CMD_SAVE_AS 101
|
||||
#define CMD_EXIT 102
|
||||
#define CMD_DELETE 103
|
||||
#define CMD_HELP 105
|
||||
#define CMD_ABOUT 106
|
||||
|
||||
#define CMD_AUTOMATIC 1000
|
||||
|
||||
#define STRING_CLIPBOARD 120
|
||||
#define STRING_CLIPFILE 121
|
||||
#define STRING_DELETE_MSG 123
|
||||
#define STRING_DELETE_TITLE 124
|
||||
#define STRING_FORMAT_NT 125
|
||||
#define STRING_FORMAT_GEN 126
|
||||
#define STRING_CLIPBOARD 100
|
||||
#define STRING_DELETE_MSG 101
|
||||
#define STRING_DELETE_TITLE 102
|
||||
#define STRING_FORMAT_NT 103
|
||||
#define STRING_FORMAT_GEN 104
|
||||
|
||||
#define STRING_CF_UNKNOWN 200
|
||||
#define STRING_CF_TEXT 201
|
||||
#define STRING_CF_BITMAP 202
|
||||
#define STRING_CF_METAFILEPICT 203
|
||||
#define STRING_CF_SYLK 204
|
||||
#define STRING_CF_DIF 205
|
||||
#define STRING_CF_OEMTEXT 207
|
||||
#define STRING_CF_DIB 208
|
||||
#define STRING_CF_OEMTEXT 203
|
||||
#define STRING_CF_UNICODETEXT 204
|
||||
#define STRING_CF_DIB 205
|
||||
#define STRING_CF_LOCALE 206
|
||||
#define STRING_CF_ENHMETAFILE 207
|
||||
#define STRING_CF_METAFILEPICT 208
|
||||
#define STRING_CF_PALETTE 209
|
||||
#define STRING_CF_UNICODETEXT 213
|
||||
#define STRING_CF_ENHMETAFILE 214
|
||||
#define STRING_CF_HDROP 215
|
||||
#define STRING_CF_LOCALE 216
|
||||
#define STRING_CF_DIBV5 217
|
||||
#define STRING_CF_DIBV5 210
|
||||
#define STRING_CF_SYLK 211
|
||||
#define STRING_CF_DIF 212
|
||||
#define STRING_CF_HDROP 213
|
||||
|
||||
#define ERROR_UNSUPPORTED_FORMAT 300
|
||||
#define ERROR_INVALID_FILE_FORMAT 301
|
||||
|
@@ -72,7 +72,7 @@ void HandleKeyboardScrollEvents(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
||||
|
||||
void HandleMouseScrollEvents(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LPSCROLLSTATE state)
|
||||
{
|
||||
SCROLLINFO si;
|
||||
SCROLLINFO si;
|
||||
int Delta;
|
||||
int NewPos;
|
||||
|
||||
@@ -119,7 +119,7 @@ void HandleMouseScrollEvents(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
|
||||
|
||||
void HandleHorizontalScrollEvents(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LPSCROLLSTATE state)
|
||||
{
|
||||
SCROLLINFO si;
|
||||
SCROLLINFO si;
|
||||
int Delta;
|
||||
int NewPos;
|
||||
|
||||
@@ -166,7 +166,7 @@ void HandleHorizontalScrollEvents(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
NewPos = state->CurrentX;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NewPos = min(state->MaxX, max(0, NewPos));
|
||||
|
||||
@@ -189,7 +189,7 @@ void HandleHorizontalScrollEvents(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||
|
||||
void HandleVerticalScrollEvents(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LPSCROLLSTATE state)
|
||||
{
|
||||
SCROLLINFO si;
|
||||
SCROLLINFO si;
|
||||
int Delta;
|
||||
int NewPos;
|
||||
|
||||
|
@@ -243,7 +243,7 @@ UINT RealizeClipboardPalette(HWND hWnd)
|
||||
UINT uResult;
|
||||
HDC hDevContext;
|
||||
|
||||
if (!OpenClipboard(Globals.hMainWnd))
|
||||
if (!OpenClipboard(NULL))
|
||||
{
|
||||
return GDI_ERROR;
|
||||
}
|
||||
|
@@ -30,7 +30,7 @@ VOID PrintResourceString(INT resID, ...)
|
||||
va_list args;
|
||||
va_start(args, resID);
|
||||
|
||||
LoadStringW(GetModuleHandleW(NULL), resID, bufSrc, ARRAYSIZE(bufSrc));
|
||||
LoadStringW(GetModuleHandleW(NULL), resID, bufSrc, RC_STRING_MAX_SIZE);
|
||||
vswprintf(bufFormatted, bufSrc, args);
|
||||
CharToOemW(bufFormatted, bufFormattedOem);
|
||||
fputs(bufFormattedOem, stdout);
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Грешка: Неуспешно добавяне на ключове в отдалечената машина\n"
|
||||
STRING_CANNOT_FIND, "Грешка: Уредбата не откри указания регистърен ключ или стойност\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -17,16 +17,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Chyba: Nelze přidat klíče na vzdálený stroj\n"
|
||||
STRING_CANNOT_FIND, "Chyba: Systém nenalezl zadaný klíč nebo hodnotu registru\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Fejl: Kunne ikke tilføje nøgler til fjern maskinen\n"
|
||||
STRING_CANNOT_FIND, "Fejl: Systemet kunne ikke finde, den angivet registrerings nøgle eller værdi\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Fehler: Konnte Schlüssel nicht zum entfernten Rechner hinzufügen\n"
|
||||
STRING_CANNOT_FIND, "Fehler: Der angegebene Schlüssel oder Wert konnte nicht gefunden werden\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -7,21 +7,9 @@ STRINGTABLE
|
||||
STRING_DELETE_USAGE, "REG DELETE key_name [/v value_name | /ve | /va] [/f]\n"
|
||||
STRING_QUERY_USAGE, "REG QUERY key_name [/v value_name | /ve] [/s]\n"
|
||||
STRING_SUCCESS, "The operation completed successfully\n"
|
||||
STRING_INVALID_KEY, "reg: Invalid key name\n"
|
||||
STRING_INVALID_CMDLINE, "reg: Invalid command line parameters\n"
|
||||
STRING_NO_REMOTE, "reg: Unable to access remote machine\n"
|
||||
STRING_CANNOT_FIND, "reg: The system was unable to find the specified registry key or value\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_INVALID_KEY, "Error: Invalid key name\n"
|
||||
STRING_INVALID_CMDLINE, "Error: Invalid command line parameters\n"
|
||||
STRING_NO_REMOTE, "Error: Unable to access remote machine\n"
|
||||
STRING_CANNOT_FIND, "Error: The system was unable to find the specified registry key or value\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Error: No se pueden agregar las claves al equipo remoto\n"
|
||||
STRING_CANNOT_FIND, "Error: El sistema no pudo encontrar la clave o el valor del Registro especificado\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Tipo no soportado\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Erreur : impossible d'ajouter des clés à une machine distante\n"
|
||||
STRING_CANNOT_FIND, "Erreur : le système n'a pas pu trouver la clé ou la valeur de registre spécifiée\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Errore: impossibile aggiungere chiavi alla macchina remota\n"
|
||||
STRING_CANNOT_FIND, "Errore: il sistema non è riuscito a trovare la chiave di registro o il valore specificati\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "エラー: コマンド ライン引数が無効です\n"
|
||||
STRING_NO_REMOTE, "エラー: リモート マシンにキーを追加できませんでした\n"
|
||||
STRING_CANNOT_FIND, "エラー: システムは指定されたキーまたは値を見つけられませんでした\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "에러:올바르지 않은 명령라인 매개변수\n"
|
||||
STRING_NO_REMOTE, "에러: 원격 머신에 키를 더하는 것은 가능하지 않습니다\n"
|
||||
STRING_CANNOT_FIND, "에러: 이 시스템에서 지정된 레지스트리 키나 값을 찾을수 없습니다\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Klaida: Netinkami komandos eilutės parametrai\n"
|
||||
STRING_NO_REMOTE, "Klaida: Negalima pridėti raktų nuotoliniame kompiuteryje\n"
|
||||
STRING_CANNOT_FIND, "Klaida: Sistemai nepavyko rasti nurodyto registro rakto ar reikšmės\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Fout: Foutieve commandoregel-parameters\n"
|
||||
STRING_NO_REMOTE, "Fout: Sleutels konden niet toegevoegd worden aan de remote machine\n"
|
||||
STRING_CANNOT_FIND, "Fout: Het systeem kon de gespecificeerde registersleutel of waarde niet vinden\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Feil: Ugyldige parametere på kommandolinjen\n"
|
||||
STRING_NO_REMOTE, "Feil: Kan ikke legge til nøkler på ekstern maskin\n"
|
||||
STRING_CANNOT_FIND, "Feil: Systemet klarte ikke finne den angitte registernøkkelen eller -verdien\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Błąd: Nie można dodać kluczy do zdalnej maszyny\n"
|
||||
STRING_CANNOT_FIND, "Błąd: System nie mógł znaleźć podanej wartości lub klucza rejestru\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Błąd: Nieobsługiwany typ\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Erro: Parâmetros da linha de comandos inválidos\n"
|
||||
STRING_NO_REMOTE, "Erro: Incapaz de adicionar chaves à máquina remota\n"
|
||||
STRING_CANNOT_FIND, "Erro: O sistema foi incapaz de encontrar a chave de registo ou valor especificado\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -18,16 +18,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Eroare: Nu se pot adăuga chei pe calculatorul de la distanță\n"
|
||||
STRING_CANNOT_FIND, "Eroare: Sistemul nu a putut găsi cheia sau valoarea de registru specificată\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Eroare: Tip nerecunoscut\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -12,16 +12,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "Ошибка: Невозможно добавить ключи на удаленной машине\n"
|
||||
STRING_CANNOT_FIND, "Ошибка: Не удалось найти указанный ключ реестра или значение\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Ошибка: Неподдерживаемый тип\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Napaka: Napačen parameter v ukazni vrstici\n"
|
||||
STRING_NO_REMOTE, "Napaka: Na morem dodati ključa na oddaljen računalnik\n"
|
||||
STRING_CANNOT_FIND, "Napaka: Sistem ni našel zahtevanega ključa ali vrednosti\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -15,17 +15,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Error: Parametrat e pavlefshme ne vijën komanduse\n"
|
||||
STRING_NO_REMOTE, "Error: Në pamundësi për të shtuar çelësat në makinë në distancë\n"
|
||||
STRING_CANNOT_FIND, "Error: Sistemi nuk ishte në gjendje për të gjetur çelësat të caktuar të regjistrit ose vlerës\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Fel: ogiltiga kommandoradsparametrar\n"
|
||||
STRING_NO_REMOTE, "Fel: Kan inte lägga till nycklar till fjärrmaskin\n"
|
||||
STRING_CANNOT_FIND, "Fel: Systemet kunde inte hitta angiven nyckel eller värde i registret\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* TRANSLATOR: 2015, 2016 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
|
||||
/* TRANSLATOR: 2015 Erdem Ersoy (eersoy93) (erdemersoy@live.com) */
|
||||
|
||||
LANGUAGE LANG_TURKISH, SUBLANG_NEUTRAL
|
||||
|
||||
@@ -9,21 +9,9 @@ STRINGTABLE
|
||||
STRING_DELETE_USAGE, "REG DELETE dizin adı [/v değer adı | /ve | /va] [/f]\n"
|
||||
STRING_QUERY_USAGE, "REG QUERY dizin adı [/v değer adı | /ve] [/s]\n"
|
||||
STRING_SUCCESS, "İşlem başarıyla bitirildi\n"
|
||||
STRING_INVALID_KEY, "reg: Geçersiz dizin adı\n"
|
||||
STRING_INVALID_CMDLINE, "reg: Geçersiz komut yatacı değişkenleri\n"
|
||||
STRING_NO_REMOTE, "reg: Uzak makineye erişilemez\n"
|
||||
STRING_CANNOT_FIND, "reg: Dizge belirtilen değer defteri dizinini ya da değerini bulamadı\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Desteklenmeyen tür\n"
|
||||
STRING_MISSING_INTEGER, "reg: [/d] seçeneği geçerli bir tamsayıyla izlenmelidir\n"
|
||||
STRING_MISSING_HEXDATA, "reg: [/d] seçeneği geçerli bir onaltılık değerle izlenmelidir\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Yönetilemeyen değer defteri veri türü [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, """%1"" değer defteri değeri önceden var. Üzerine yazmak ister misiniz?"
|
||||
STRING_YESNO, " (Evet|Hayır)"
|
||||
STRING_YES, "E"
|
||||
STRING_NO, "H"
|
||||
STRING_CANCELLED, "Değer defteri işlemi iptal edildi\n"
|
||||
STRING_DEFAULT_VALUE, "(Ön tanımlı)"
|
||||
STRING_DELETE_VALUE, """%1"" değer defteri değerini silmek istemekten emin misiniz?"
|
||||
STRING_DELETE_VALUEALL, "Tüm ""%1"" değer defteri değerlerini silmek istemekten emin misiniz?"
|
||||
STRING_DELETE_SUBKEY, """%1"" değer defteri dizinini silmek istemekten emin misiniz?"
|
||||
STRING_INVALID_KEY, "Yanlışlık: Geçersiz dizin adı\n"
|
||||
STRING_INVALID_CMDLINE, "Yanlışlık: Geçersiz komut yatacı değişkenleri\n"
|
||||
STRING_NO_REMOTE, "Yanlışlık: Uzak makineye erişilemez\n"
|
||||
STRING_CANNOT_FIND, "Yanlışlık: Dizge belirtilen değer defteri dizinini ya da değerini bulamadı\n"
|
||||
STRING_UNSUPPORTED_TYPE, "Yanlışlık: Desteklenmeyen tür\n"
|
||||
}
|
||||
|
@@ -11,17 +11,5 @@ STRINGTABLE
|
||||
STRING_INVALID_CMDLINE, "Помилка: неправильні параметри командного рядка\n"
|
||||
STRING_NO_REMOTE, "Помилка: неможливо додати ключі на віддаленій машині\n"
|
||||
STRING_CANNOT_FIND, "Помилка: не вдалось знайти вказаний ключ реєстру чи значення\n"
|
||||
STRING_UNSUPPORTED_TYPE, "reg: Unsupported registry data type [%1]\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
STRING_UNSUPPORTED_TYPE, "Error: Unsupported type\n"
|
||||
}
|
||||
|
@@ -14,16 +14,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "错误: 无法访问远程计算机\n"
|
||||
STRING_CANNOT_FIND, "错误: 系统是无法找到指定的注册表项或值\n"
|
||||
STRING_UNSUPPORTED_TYPE, "错误: 不支持的类型\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -14,16 +14,4 @@ STRINGTABLE
|
||||
STRING_NO_REMOTE, "錯誤: 無法訪問遠端計算機\n"
|
||||
STRING_CANNOT_FIND, "錯誤: 系統是無法找到指定的註冊表項或值\n"
|
||||
STRING_UNSUPPORTED_TYPE, "錯誤: 不支援的類型\n"
|
||||
STRING_MISSING_INTEGER, "reg: The option [/d] must be followed by a valid integer\n"
|
||||
STRING_MISSING_HEXDATA, "reg: The option [/d] must be followed by a valid hexadecimal value\n"
|
||||
STRING_UNHANDLED_TYPE, "reg: Unhandled registry data type [/t 0x%1!x!, /d %2]\n"
|
||||
STRING_OVERWRITE_VALUE, "The registry value '%1' already exists. Do you want to overwrite it?"
|
||||
STRING_YESNO, " (Yes|No)"
|
||||
STRING_YES, "Y"
|
||||
STRING_NO, "N"
|
||||
STRING_CANCELLED, "The registry operation was cancelled\n"
|
||||
STRING_DEFAULT_VALUE, "(Default)"
|
||||
STRING_DELETE_VALUE, "Are you sure you want to delete the registry value '%1'?"
|
||||
STRING_DELETE_VALUEALL, "Are you sure you want to delete all registry values in '%1'?"
|
||||
STRING_DELETE_SUBKEY, "Are you sure you want to delete the registry key '%1'?"
|
||||
}
|
||||
|
@@ -29,8 +29,6 @@
|
||||
|
||||
#define ARRAY_SIZE(A) (sizeof(A)/sizeof(*A))
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(reg);
|
||||
|
||||
static const WCHAR short_hklm[] = {'H','K','L','M',0};
|
||||
static const WCHAR short_hkcu[] = {'H','K','C','U',0};
|
||||
static const WCHAR short_hkcr[] = {'H','K','C','R',0};
|
||||
@@ -83,11 +81,19 @@ type_rels[] =
|
||||
{REG_MULTI_SZ, type_multi_sz},
|
||||
};
|
||||
|
||||
static void output_writeconsole(const WCHAR *str, DWORD wlen)
|
||||
static int reg_printfW(const WCHAR *msg, ...)
|
||||
{
|
||||
va_list va_args;
|
||||
int wlen;
|
||||
DWORD count, ret;
|
||||
WCHAR msg_buffer[8192];
|
||||
|
||||
ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str, wlen, &count, NULL);
|
||||
va_start(va_args, msg);
|
||||
vsnprintfW(msg_buffer, 8192, msg, va_args);
|
||||
va_end(va_args);
|
||||
|
||||
wlen = lstrlenW(msg_buffer);
|
||||
ret = WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), msg_buffer, wlen, &count, NULL);
|
||||
if (!ret)
|
||||
{
|
||||
DWORD len;
|
||||
@@ -97,83 +103,29 @@ static void output_writeconsole(const WCHAR *str, DWORD wlen)
|
||||
* back to WriteFile(), assuming the console encoding is still the right
|
||||
* one in that case.
|
||||
*/
|
||||
len = WideCharToMultiByte(GetConsoleOutputCP(), 0, str, wlen, NULL, 0, NULL, NULL);
|
||||
len = WideCharToMultiByte(GetConsoleOutputCP(), 0, msg_buffer, wlen,
|
||||
NULL, 0, NULL, NULL);
|
||||
msgA = HeapAlloc(GetProcessHeap(), 0, len * sizeof(char));
|
||||
if (!msgA) return;
|
||||
if (!msgA)
|
||||
return 0;
|
||||
|
||||
WideCharToMultiByte(GetConsoleOutputCP(), 0, str, wlen, msgA, len, NULL, NULL);
|
||||
WideCharToMultiByte(GetConsoleOutputCP(), 0, msg_buffer, wlen, msgA, len,
|
||||
NULL, NULL);
|
||||
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), msgA, len, &count, FALSE);
|
||||
HeapFree(GetProcessHeap(), 0, msgA);
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static void output_formatstring(const WCHAR *fmt, __ms_va_list va_args)
|
||||
static int reg_message(int msg)
|
||||
{
|
||||
WCHAR *str;
|
||||
DWORD len;
|
||||
static const WCHAR formatW[] = {'%','s',0};
|
||||
WCHAR msg_buffer[8192];
|
||||
|
||||
SetLastError(NO_ERROR);
|
||||
len = FormatMessageW(FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
fmt, 0, 0, (WCHAR *)&str, 0, &va_args);
|
||||
if (len == 0 && GetLastError() != NO_ERROR)
|
||||
{
|
||||
WINE_FIXME("Could not format string: le=%u, fmt=%s\n", GetLastError(), wine_dbgstr_w(fmt));
|
||||
return;
|
||||
}
|
||||
output_writeconsole(str, len);
|
||||
LocalFree(str);
|
||||
}
|
||||
|
||||
static void __cdecl output_message(unsigned int id, ...)
|
||||
{
|
||||
WCHAR fmt[1024];
|
||||
__ms_va_list va_args;
|
||||
|
||||
if (!LoadStringW(GetModuleHandleW(NULL), id, fmt, ARRAY_SIZE(fmt)))
|
||||
{
|
||||
WINE_FIXME("LoadString failed with %d\n", GetLastError());
|
||||
return;
|
||||
}
|
||||
__ms_va_start(va_args, id);
|
||||
output_formatstring(fmt, va_args);
|
||||
__ms_va_end(va_args);
|
||||
}
|
||||
|
||||
static void __cdecl output_string(const WCHAR *fmt, ...)
|
||||
{
|
||||
__ms_va_list va_args;
|
||||
|
||||
__ms_va_start(va_args, fmt);
|
||||
output_formatstring(fmt, va_args);
|
||||
__ms_va_end(va_args);
|
||||
}
|
||||
|
||||
/* ask_confirm() adapted from programs/cmd/builtins.c */
|
||||
static BOOL ask_confirm(unsigned int msgid, WCHAR *reg_info)
|
||||
{
|
||||
HMODULE hmod;
|
||||
WCHAR Ybuffer[4];
|
||||
WCHAR Nbuffer[4];
|
||||
WCHAR defval[32];
|
||||
WCHAR answer[MAX_PATH];
|
||||
DWORD count;
|
||||
|
||||
hmod = GetModuleHandleW(NULL);
|
||||
LoadStringW(hmod, STRING_YES, Ybuffer, ARRAY_SIZE(Ybuffer));
|
||||
LoadStringW(hmod, STRING_NO, Nbuffer, ARRAY_SIZE(Nbuffer));
|
||||
LoadStringW(hmod, STRING_DEFAULT_VALUE, defval, ARRAY_SIZE(defval));
|
||||
|
||||
while (1)
|
||||
{
|
||||
output_message(msgid, reg_info ? reg_info : defval);
|
||||
output_message(STRING_YESNO);
|
||||
ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), answer, ARRAY_SIZE(answer), &count, NULL);
|
||||
answer[0] = toupperW(answer[0]);
|
||||
if (answer[0] == Ybuffer[0])
|
||||
return TRUE;
|
||||
if (answer[0] == Nbuffer[0])
|
||||
return FALSE;
|
||||
}
|
||||
LoadStringW(GetModuleHandleW(NULL), msg, msg_buffer,
|
||||
sizeof(msg_buffer)/sizeof(WCHAR));
|
||||
return reg_printfW(formatW, msg_buffer);
|
||||
}
|
||||
|
||||
static inline BOOL path_rootname_cmp(const WCHAR *input_path, const WCHAR *rootkey_name)
|
||||
@@ -234,9 +186,7 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
|
||||
|
||||
switch (reg_type)
|
||||
{
|
||||
case REG_NONE:
|
||||
case REG_SZ:
|
||||
case REG_EXPAND_SZ:
|
||||
{
|
||||
*reg_count = (lstrlenW(data) + 1) * sizeof(WCHAR);
|
||||
out_data = HeapAlloc(GetProcessHeap(),0,*reg_count);
|
||||
@@ -244,14 +194,13 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
|
||||
break;
|
||||
}
|
||||
case REG_DWORD:
|
||||
/* case REG_DWORD_LITTLE_ENDIAN: */
|
||||
case REG_DWORD_BIG_ENDIAN: /* Yes, this is correct! */
|
||||
{
|
||||
LPWSTR rest;
|
||||
DWORD val;
|
||||
val = strtoulW(data, &rest, (data[1] == 'x') ? 16 : 10);
|
||||
if (*rest || data[0] == '-') {
|
||||
output_message(STRING_MISSING_INTEGER);
|
||||
val = strtolW(data, &rest, 0);
|
||||
if (rest == data) {
|
||||
static const WCHAR nonnumber[] = {'E','r','r','o','r',':',' ','/','d',' ','r','e','q','u','i','r','e','s',' ','n','u','m','b','e','r','.','\n',0};
|
||||
reg_printfW(nonnumber);
|
||||
break;
|
||||
}
|
||||
*reg_count = sizeof(DWORD);
|
||||
@@ -261,6 +210,7 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
|
||||
}
|
||||
case REG_BINARY:
|
||||
{
|
||||
static const WCHAR nohex[] = {'E','r','r','o','r',':',' ','/','d',' ','r','e','q','u','i','r','e','s',' ','h','e','x',' ','d','a','t','a','.','\n',0};
|
||||
BYTE hex0, hex1;
|
||||
int i = 0, destByteIndex = 0, datalen = lstrlenW(data);
|
||||
*reg_count = ((datalen + datalen % 2) / 2) * sizeof(BYTE);
|
||||
@@ -284,14 +234,15 @@ static LPBYTE get_regdata(LPWSTR data, DWORD reg_type, WCHAR separator, DWORD *r
|
||||
no_hex_data:
|
||||
/* cleanup, print error */
|
||||
HeapFree(GetProcessHeap(), 0, out_data);
|
||||
output_message(STRING_MISSING_HEXDATA);
|
||||
reg_printfW(nohex);
|
||||
out_data = NULL;
|
||||
break;
|
||||
}
|
||||
case REG_MULTI_SZ:
|
||||
/* FIXME: Needs handling */
|
||||
default:
|
||||
output_message(STRING_UNHANDLED_TYPE, reg_type, data);
|
||||
{
|
||||
static const WCHAR unhandled[] = {'U','n','h','a','n','d','l','e','d',' ','T','y','p','e',' ','0','x','%','x',' ',' ','d','a','t','a',' ','%','s','\n',0};
|
||||
reg_printfW(unhandled, reg_type,data);
|
||||
}
|
||||
}
|
||||
|
||||
return out_data;
|
||||
@@ -303,13 +254,13 @@ static BOOL sane_path(const WCHAR *key)
|
||||
|
||||
if (i < 3 || (key[i - 1] == '\\' && key[i - 2] == '\\'))
|
||||
{
|
||||
output_message(STRING_INVALID_KEY);
|
||||
reg_message(STRING_INVALID_KEY);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (key[0] == '\\' && key[1] == '\\' && key[2] != '\\')
|
||||
{
|
||||
output_message(STRING_NO_REMOTE);
|
||||
reg_message(STRING_NO_REMOTE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -319,16 +270,20 @@ static BOOL sane_path(const WCHAR *key)
|
||||
static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
WCHAR *type, WCHAR separator, WCHAR *data, BOOL force)
|
||||
{
|
||||
static const WCHAR stubW[] = {'A','D','D',' ','-',' ','%','s',
|
||||
' ','%','s',' ','%','d',' ','%','s',' ','%','s',' ','%','d','\n',0};
|
||||
LPWSTR p;
|
||||
HKEY root,subkey;
|
||||
|
||||
reg_printfW(stubW, key_name, value_name, value_empty, type, data, force);
|
||||
|
||||
if (!sane_path(key_name))
|
||||
return 1;
|
||||
|
||||
p = strchrW(key_name,'\\');
|
||||
if (!p)
|
||||
{
|
||||
output_message(STRING_INVALID_KEY);
|
||||
reg_message(STRING_INVALID_KEY);
|
||||
return 1;
|
||||
}
|
||||
p++;
|
||||
@@ -336,19 +291,13 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
root = path_get_rootkey(key_name);
|
||||
if (!root)
|
||||
{
|
||||
output_message(STRING_INVALID_KEY);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (value_name && value_empty)
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
reg_message(STRING_INVALID_KEY);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(RegCreateKeyW(root,p,&subkey)!=ERROR_SUCCESS)
|
||||
{
|
||||
output_message(STRING_INVALID_KEY);
|
||||
reg_message(STRING_INVALID_KEY);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -360,14 +309,9 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
|
||||
if (!force)
|
||||
{
|
||||
if (RegQueryValueExW(subkey, value_name, NULL, NULL, NULL, NULL) == ERROR_SUCCESS)
|
||||
if (RegQueryValueW(subkey,value_name,NULL,NULL)==ERROR_SUCCESS)
|
||||
{
|
||||
if (!ask_confirm(STRING_OVERWRITE_VALUE, value_name))
|
||||
{
|
||||
RegCloseKey(subkey);
|
||||
output_message(STRING_CANCELLED);
|
||||
return 0;
|
||||
}
|
||||
/* FIXME: Prompt for overwrite */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,28 +319,19 @@ static int reg_add(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
if (reg_type == ~0u)
|
||||
{
|
||||
RegCloseKey(subkey);
|
||||
output_message(STRING_UNSUPPORTED_TYPE, type);
|
||||
reg_message(STRING_UNSUPPORTED_TYPE);
|
||||
return 1;
|
||||
}
|
||||
if (reg_type == REG_DWORD && !data)
|
||||
{
|
||||
RegCloseKey(subkey);
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (data && !(reg_data = get_regdata(data, reg_type, separator, ®_count)))
|
||||
{
|
||||
RegCloseKey(subkey);
|
||||
return 1;
|
||||
}
|
||||
if (data)
|
||||
reg_data = get_regdata(data,reg_type,separator,®_count);
|
||||
|
||||
RegSetValueExW(subkey,value_name,0,reg_type,reg_data,reg_count);
|
||||
HeapFree(GetProcessHeap(),0,reg_data);
|
||||
}
|
||||
|
||||
RegCloseKey(subkey);
|
||||
output_message(STRING_SUCCESS);
|
||||
reg_message(STRING_SUCCESS);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -407,13 +342,18 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
LPWSTR p;
|
||||
HKEY root,subkey;
|
||||
|
||||
static const WCHAR stubW[] = {'D','E','L','E','T','E',
|
||||
' ','-',' ','%','s',' ','%','s',' ','%','d',' ','%','d',' ','%','d','\n'
|
||||
,0};
|
||||
reg_printfW(stubW, key_name, value_name, value_empty, value_all, force);
|
||||
|
||||
if (!sane_path(key_name))
|
||||
return 1;
|
||||
|
||||
p = strchrW(key_name,'\\');
|
||||
if (!p)
|
||||
{
|
||||
output_message(STRING_INVALID_KEY);
|
||||
reg_message(STRING_INVALID_KEY);
|
||||
return 1;
|
||||
}
|
||||
p++;
|
||||
@@ -421,32 +361,25 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
root = path_get_rootkey(key_name);
|
||||
if (!root)
|
||||
{
|
||||
output_message(STRING_INVALID_KEY);
|
||||
reg_message(STRING_INVALID_KEY);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((value_name && value_empty) || (value_name && value_all) || (value_empty && value_all))
|
||||
if (value_name && value_empty)
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
reg_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (value_empty && value_all)
|
||||
{
|
||||
reg_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!force)
|
||||
{
|
||||
BOOL ret;
|
||||
|
||||
if (value_name || value_empty)
|
||||
ret = ask_confirm(STRING_DELETE_VALUE, value_name);
|
||||
else if (value_all)
|
||||
ret = ask_confirm(STRING_DELETE_VALUEALL, key_name);
|
||||
else
|
||||
ret = ask_confirm(STRING_DELETE_SUBKEY, key_name);
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
output_message(STRING_CANCELLED);
|
||||
return 0;
|
||||
}
|
||||
/* FIXME: Prompt for delete */
|
||||
}
|
||||
|
||||
/* Delete subtree only if no /v* option is given */
|
||||
@@ -454,16 +387,16 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
{
|
||||
if (RegDeleteTreeW(root,p)!=ERROR_SUCCESS)
|
||||
{
|
||||
output_message(STRING_CANNOT_FIND);
|
||||
reg_message(STRING_CANNOT_FIND);
|
||||
return 1;
|
||||
}
|
||||
output_message(STRING_SUCCESS);
|
||||
reg_message(STRING_SUCCESS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(RegOpenKeyW(root,p,&subkey)!=ERROR_SUCCESS)
|
||||
{
|
||||
output_message(STRING_CANNOT_FIND);
|
||||
reg_message(STRING_CANNOT_FIND);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -507,7 +440,7 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
if (RegDeleteValueW(subkey,value_name) != ERROR_SUCCESS)
|
||||
{
|
||||
RegCloseKey(subkey);
|
||||
output_message(STRING_CANNOT_FIND);
|
||||
reg_message(STRING_CANNOT_FIND);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -517,7 +450,7 @@ static int reg_delete(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
}
|
||||
|
||||
RegCloseKey(subkey);
|
||||
output_message(STRING_SUCCESS);
|
||||
reg_message(STRING_SUCCESS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -525,8 +458,8 @@ static int reg_query(WCHAR *key_name, WCHAR *value_name, BOOL value_empty,
|
||||
BOOL subkey)
|
||||
{
|
||||
static const WCHAR stubW[] = {'S','T','U','B',' ','Q','U','E','R','Y',' ',
|
||||
'-',' ','%','1',' ','%','2',' ','%','3','!','d','!',' ','%','4','!','d','!','\n',0};
|
||||
output_string(stubW, key_name, value_name, value_empty, subkey);
|
||||
'-',' ','%','s',' ','%','s',' ','%','d',' ','%','d','\n',0};
|
||||
reg_printfW(stubW, key_name, value_name, value_empty, subkey);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -551,7 +484,7 @@ int wmain(int argc, WCHAR *argvW[])
|
||||
if (argc < 2 || !lstrcmpW(argvW[1], slashHelpW)
|
||||
|| !lstrcmpiW(argvW[1], slashHW))
|
||||
{
|
||||
output_message(STRING_USAGE);
|
||||
reg_message(STRING_USAGE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -562,13 +495,13 @@ int wmain(int argc, WCHAR *argvW[])
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
reg_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
|
||||
!lstrcmpiW(argvW[2], slashHW)))
|
||||
{
|
||||
output_message(STRING_ADD_USAGE);
|
||||
reg_message(STRING_ADD_USAGE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -582,24 +515,9 @@ int wmain(int argc, WCHAR *argvW[])
|
||||
else if (!lstrcmpiW(argvW[i], slashTW))
|
||||
type = argvW[++i];
|
||||
else if (!lstrcmpiW(argvW[i], slashSW))
|
||||
{
|
||||
WCHAR *ptr = argvW[++i];
|
||||
|
||||
if (!ptr || strlenW(ptr) != 1)
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
separator = ptr[0];
|
||||
}
|
||||
separator = argvW[++i][0];
|
||||
else if (!lstrcmpiW(argvW[i], slashDW))
|
||||
{
|
||||
if (!(data = argvW[++i]))
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
data = argvW[++i];
|
||||
else if (!lstrcmpiW(argvW[i], slashFW))
|
||||
force = TRUE;
|
||||
}
|
||||
@@ -613,13 +531,13 @@ int wmain(int argc, WCHAR *argvW[])
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
reg_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
|
||||
!lstrcmpiW(argvW[2], slashHW)))
|
||||
{
|
||||
output_message(STRING_DELETE_USAGE);
|
||||
reg_message(STRING_DELETE_USAGE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -644,13 +562,13 @@ int wmain(int argc, WCHAR *argvW[])
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
reg_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
else if (argc == 3 && (!lstrcmpW(argvW[2], slashHelpW) ||
|
||||
!lstrcmpiW(argvW[2], slashHW)))
|
||||
{
|
||||
output_message(STRING_QUERY_USAGE);
|
||||
reg_message(STRING_QUERY_USAGE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -668,7 +586,7 @@ int wmain(int argc, WCHAR *argvW[])
|
||||
}
|
||||
else
|
||||
{
|
||||
output_message(STRING_INVALID_CMDLINE);
|
||||
reg_message(STRING_INVALID_CMDLINE);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@@ -33,15 +33,3 @@
|
||||
#define STRING_NO_REMOTE 108
|
||||
#define STRING_CANNOT_FIND 109
|
||||
#define STRING_UNSUPPORTED_TYPE 110
|
||||
#define STRING_MISSING_INTEGER 111
|
||||
#define STRING_MISSING_HEXDATA 112
|
||||
#define STRING_UNHANDLED_TYPE 113
|
||||
#define STRING_OVERWRITE_VALUE 114
|
||||
#define STRING_YESNO 115
|
||||
#define STRING_YES 116
|
||||
#define STRING_NO 117
|
||||
#define STRING_CANCELLED 118
|
||||
#define STRING_DEFAULT_VALUE 119
|
||||
#define STRING_DELETE_VALUE 120
|
||||
#define STRING_DELETE_VALUEALL 121
|
||||
#define STRING_DELETE_SUBKEY 122
|
||||
|
@@ -1,13 +0,0 @@
|
||||
/* By Riccardo Montanari - Bassa31 - bassa31@outlook.it */
|
||||
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_USAGE "Mostra la struttura del drive o della cartella.\n\n\
|
||||
TREE [drive:][path] [/F] [/A]\n\n\
|
||||
\t/F Mostra il nome del file in ogni cartella.\n\
|
||||
\t/A Usa carattere ASCII per i caratteri estesi.\n"
|
||||
IDS_NO_SUBDIRECTORIES "Non esistono sub-cartelle"
|
||||
IDS_FOLDER_PATH "Lista della cartella PATH\n"
|
||||
IDS_VOL_SERIAL "Numero di serie del Volume %x:%x\n"
|
||||
END
|
@@ -20,9 +20,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
#ifdef LANGUAGE_FR_FR
|
||||
#include "lang/fr-FR.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_IT_IT
|
||||
#include "lang/it-IT.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_RO_RO
|
||||
#include "lang/ro-RO.rc"
|
||||
#endif
|
||||
|
@@ -1,6 +1,6 @@
|
||||
|
||||
set_cpp(WITH_RUNTIME)
|
||||
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/3rdparty/cardlib)
|
||||
include_directories(${REACTOS_SOURCE_DIR}/lib/3rdparty/cardlib)
|
||||
|
||||
list(APPEND SOURCE
|
||||
solcreate.cpp
|
||||
|
@@ -2,7 +2,7 @@
|
||||
set_cpp(WITH_RUNTIME)
|
||||
|
||||
include_directories(
|
||||
${REACTOS_SOURCE_DIR}/sdk/lib/3rdparty/cardlib
|
||||
${REACTOS_SOURCE_DIR}/lib/3rdparty/cardlib
|
||||
${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
list(APPEND SOURCE
|
||||
|
@@ -3,6 +3,6 @@ add_rc_deps(iexplore.rc ${CMAKE_CURRENT_SOURCE_DIR}/iexplore.ico)
|
||||
add_executable(iexplore main.c iexplore.rc)
|
||||
target_link_libraries(iexplore wine)
|
||||
set_module_type(iexplore win32gui UNICODE)
|
||||
add_delay_importlibs(iexplore advpack version)
|
||||
add_importlibs(iexplore ieframe msvcrt kernel32 ntdll)
|
||||
add_delay_importlibs(iexplore advpack version)
|
||||
add_cd_file(TARGET iexplore DESTINATION reactos FOR all)
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 210, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Настройки на увеличителя"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Einstellungen"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Magnifier Settings"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -33,7 +33,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Configurar lupa"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,12 +29,12 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Paramètres de la loupe"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Quitter", IDOK, 96, 161, 50, 14
|
||||
PUSHBUTTON "Aide", IDC_BUTTON_HELP, 38, 161, 50, 14
|
||||
PUSHBUTTON "Aider", IDC_BUTTON_HELP, 38, 161, 50, 14
|
||||
LTEXT "Coefficient d'agrandissement:", IDC_STATIC, 6, 8, 68, 8
|
||||
COMBOBOX IDC_ZOOM, 72, 6, 63, 66, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
GROUPBOX "Poursuite", IDC_STATIC, 7, 25, 139, 59
|
||||
|
@@ -31,7 +31,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "הגדרות זכוכית מגדלת"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Impostazioni di Magnifier"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "拡大鏡の設定"
|
||||
FONT 9, "MS UI Gothic", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Forstørrelse Innstilling"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -37,7 +37,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Ustawienia"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -31,7 +31,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Configurações da Lupa"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -31,7 +31,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Configurare lupă"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 185, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Параметры"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -34,7 +34,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Nastavenia Lupy"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -33,7 +33,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Konfigurimet e zmadhuesit"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -29,7 +29,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Förstoringsglaset Inställning"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -37,7 +37,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Seçenekler"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -37,7 +37,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Параметри екранної лупи"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -37,7 +37,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "放大镜设定"
|
||||
FONT 9, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -37,7 +37,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_DIALOGOPTIONS DIALOGEX 0, 0, 153, 182
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "放大鏡設定"
|
||||
FONT 9, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
|
@@ -8,8 +8,7 @@
|
||||
* David Quintana <gigaherz@gmail.com>
|
||||
*/
|
||||
|
||||
/* TODO: Support AppBar types other than ABE_TOP */
|
||||
|
||||
/* TODO: AppBar */
|
||||
#include "magnifier.h"
|
||||
|
||||
#include <winbase.h>
|
||||
@@ -21,16 +20,14 @@
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
#define APPMSG_NOTIFYICON (WM_APP+1)
|
||||
#define APPMSG_APPBAR (WM_APP+2)
|
||||
|
||||
const TCHAR szWindowClass[] = TEXT("MAGNIFIER");
|
||||
|
||||
#define MAX_LOADSTRING 100
|
||||
|
||||
/* Global Variables */
|
||||
HINSTANCE hInst;
|
||||
HWND hMainWnd;
|
||||
|
||||
#define MAX_LOADSTRING 100
|
||||
TCHAR szTitle[MAX_LOADSTRING];
|
||||
|
||||
#define TIMER_SPEED 1
|
||||
@@ -40,19 +37,19 @@ DWORD lastTicks = 0;
|
||||
|
||||
HWND hDesktopWindow = NULL;
|
||||
|
||||
NOTIFYICONDATA nid;
|
||||
#define APPMSG_NOTIFYICON (WM_APP+1)
|
||||
HICON notifyIcon;
|
||||
NOTIFYICONDATA nid;
|
||||
HMENU notifyMenu;
|
||||
HWND hOptionsDialog;
|
||||
BOOL bOptionsDialog = FALSE;
|
||||
BOOL bRecreateOffscreenDC = TRUE;
|
||||
LONG sourceWidth = 0;
|
||||
LONG sourceHeight = 0;
|
||||
HDC hdcOffscreen = NULL;
|
||||
HWND hOptionsDialog;
|
||||
BOOL bOptionsDialog = FALSE;
|
||||
|
||||
BOOL bRecreateOffscreenDC = TRUE;
|
||||
LONG sourceWidth = 0;
|
||||
LONG sourceHeight = 0;
|
||||
HDC hdcOffscreen = NULL;
|
||||
HANDLE hbmpOld;
|
||||
HBITMAP hbmpOffscreen = NULL;
|
||||
HANDLE hbmpOld;
|
||||
POINT ptDragOffset;
|
||||
INT nearEdge;
|
||||
|
||||
/* Current magnified area */
|
||||
POINT cp;
|
||||
@@ -135,158 +132,23 @@ ATOM MyRegisterClass(HINSTANCE hInstance)
|
||||
return RegisterClass(&wc);
|
||||
}
|
||||
|
||||
void DoAppBarStuff(DWORD mode)
|
||||
{
|
||||
UINT uState;
|
||||
APPBARDATA data = {0};
|
||||
data.cbSize = sizeof(data);
|
||||
data.hWnd = hMainWnd;
|
||||
data.uCallbackMessage = APPMSG_APPBAR;
|
||||
|
||||
if (mode == ABM_NEW || mode == ABM_SETPOS)
|
||||
{
|
||||
HWND hWndOrder = HWND_BOTTOM;
|
||||
int rcw, rch;
|
||||
RECT rcWorkArea;
|
||||
SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, 0);
|
||||
|
||||
if(mode == ABM_NEW)
|
||||
{
|
||||
SHAppBarMessage(ABM_NEW, &data);
|
||||
|
||||
switch(AppBarConfig.uEdge)
|
||||
{
|
||||
case ABE_LEFT:
|
||||
data.rc.top = rcWorkArea.top;
|
||||
data.rc.bottom = rcWorkArea.bottom;
|
||||
data.rc.left = rcWorkArea.left;
|
||||
data.rc.right = data.rc.left + AppBarConfig.appBarSizes.left;
|
||||
break;
|
||||
case ABE_TOP:
|
||||
data.rc.left = rcWorkArea.left;
|
||||
data.rc.right = rcWorkArea.right;
|
||||
data.rc.top = rcWorkArea.top;
|
||||
data.rc.bottom = data.rc.top + AppBarConfig.appBarSizes.top;
|
||||
break;
|
||||
case ABE_RIGHT:
|
||||
data.rc.top = rcWorkArea.top;
|
||||
data.rc.bottom = rcWorkArea.bottom;
|
||||
data.rc.right = rcWorkArea.left;
|
||||
data.rc.left = data.rc.right - AppBarConfig.appBarSizes.right;
|
||||
break;
|
||||
case ABE_BOTTOM:
|
||||
data.rc.left = rcWorkArea.left;
|
||||
data.rc.right = rcWorkArea.right;
|
||||
data.rc.bottom = rcWorkArea.bottom;
|
||||
data.rc.top = data.rc.bottom - AppBarConfig.appBarSizes.bottom;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GetWindowRect(hMainWnd, &data.rc);
|
||||
}
|
||||
|
||||
data.uEdge = AppBarConfig.uEdge;
|
||||
uState = SHAppBarMessage(ABM_QUERYPOS, &data);
|
||||
|
||||
uState = SHAppBarMessage(ABM_SETPOS, &data);
|
||||
|
||||
rcw = data.rc.right-data.rc.left;
|
||||
rch = data.rc.bottom-data.rc.top;
|
||||
|
||||
uState = SHAppBarMessage(ABM_GETSTATE, &data);
|
||||
if(uState & ABS_ALWAYSONTOP)
|
||||
hWndOrder = HWND_TOPMOST;
|
||||
|
||||
SetWindowPos(hMainWnd, hWndOrder, data.rc.left, data.rc.top, rcw, rch, SWP_SHOWWINDOW|SWP_NOCOPYBITS);
|
||||
|
||||
}
|
||||
else if(mode == ABM_GETSTATE)
|
||||
{
|
||||
HWND hWndOrder = HWND_BOTTOM;
|
||||
uState = SHAppBarMessage(ABM_GETSTATE, &data);
|
||||
if(uState & ABS_ALWAYSONTOP)
|
||||
hWndOrder = HWND_TOPMOST;
|
||||
SetWindowPos(hMainWnd, hWndOrder, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
|
||||
}
|
||||
else if(mode == ABM_ACTIVATE)
|
||||
{
|
||||
SHAppBarMessage(ABM_ACTIVATE, &data);
|
||||
}
|
||||
else if(mode == ABM_WINDOWPOSCHANGED)
|
||||
{
|
||||
SHAppBarMessage(ABM_WINDOWPOSCHANGED, &data);
|
||||
}
|
||||
else if(mode == ABM_REMOVE)
|
||||
{
|
||||
SHAppBarMessage(ABM_REMOVE, &data);
|
||||
}
|
||||
}
|
||||
|
||||
void AttachAppBar(INT uEdge)
|
||||
{
|
||||
if (AppBarConfig.uEdge == uEdge)
|
||||
return;
|
||||
|
||||
if(AppBarConfig.uEdge < 0 && uEdge >= 0)
|
||||
{
|
||||
SetWindowLongPtr(hMainWnd, GWL_STYLE, GetWindowLongPtr(hMainWnd, GWL_STYLE) & (~WS_CAPTION));
|
||||
}
|
||||
else if(uEdge < 0 && AppBarConfig.uEdge>=0)
|
||||
{
|
||||
SetWindowLongPtr(hMainWnd, GWL_STYLE, GetWindowLongPtr(hMainWnd, GWL_STYLE) | WS_CAPTION);
|
||||
SetWindowPos(hMainWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_FRAMECHANGED);
|
||||
}
|
||||
|
||||
if(AppBarConfig.uEdge >= 0)
|
||||
{
|
||||
DoAppBarStuff(ABM_REMOVE);
|
||||
}
|
||||
|
||||
if (uEdge >=0)
|
||||
{
|
||||
AppBarConfig.uEdge = uEdge;
|
||||
DoAppBarStuff(ABM_NEW);
|
||||
}
|
||||
else
|
||||
{
|
||||
RECT rc = AppBarConfig.rcFloating;
|
||||
SetWindowPos(hMainWnd, HWND_TOPMOST, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, 0);
|
||||
}
|
||||
|
||||
AppBarConfig.uEdge = uEdge;
|
||||
}
|
||||
|
||||
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||
{
|
||||
RECT rc;
|
||||
DWORD exStyles = WS_EX_TOOLWINDOW | WS_EX_CONTROLPARENT;
|
||||
DWORD dwStyles = WS_SIZEBOX | WS_SYSMENU | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_POPUP;
|
||||
|
||||
/* Load settings from registry */
|
||||
LoadSettings();
|
||||
|
||||
rc = AppBarConfig.rcFloating;
|
||||
|
||||
RECT rcWorkArea;
|
||||
hInst = hInstance; // Store instance handle in our global variable
|
||||
|
||||
if (AppBarConfig.uEdge<0)
|
||||
{
|
||||
dwStyles |= WS_CAPTION;
|
||||
exStyles |= WS_EX_TOPMOST;
|
||||
}
|
||||
SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, 0);
|
||||
|
||||
/* Create the Window */
|
||||
hMainWnd = CreateWindowEx(
|
||||
exStyles,
|
||||
WS_EX_TOPMOST | WS_EX_PALETTEWINDOW,
|
||||
szWindowClass,
|
||||
szTitle,
|
||||
dwStyles,
|
||||
rc.left,
|
||||
rc.top,
|
||||
rc.right-rc.left,
|
||||
rc.bottom-rc.top,
|
||||
WS_OVERLAPPEDWINDOW,
|
||||
CW_USEDEFAULT,
|
||||
CW_USEDEFAULT,
|
||||
(rcWorkArea.right - rcWorkArea.left) * 2 / 3,
|
||||
200,
|
||||
NULL,
|
||||
NULL,
|
||||
hInstance,
|
||||
@@ -295,16 +157,12 @@ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
|
||||
if (!hMainWnd)
|
||||
return FALSE;
|
||||
|
||||
if (AppBarConfig.uEdge>=0) DoAppBarStuff(ABM_NEW);
|
||||
else SetWindowPos(hMainWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
|
||||
ShowWindow(hMainWnd, bStartMinimized ? SW_MINIMIZE : nCmdShow);
|
||||
UpdateWindow(hMainWnd);
|
||||
|
||||
// In Windows 2003's Magnifier, the "Start Minimized" setting
|
||||
// refers exclusively to the options dialog, not the main window itself.
|
||||
// Windows 2003's Magnifier always shows this dialog, and exits when the dialog isclosed.
|
||||
// Should we add a custom means to prevent opening it?
|
||||
hOptionsDialog = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOGOPTIONS), hMainWnd, OptionsProc);
|
||||
if (bStartMinimized)
|
||||
ShowWindow(hOptionsDialog, SW_HIDE);
|
||||
else
|
||||
ShowWindow(hOptionsDialog, SW_SHOW);
|
||||
|
||||
if (bShowWarning)
|
||||
DialogBox(hInstance, MAKEINTRESOURCE(IDD_WARNINGDIALOG), hMainWnd, WarningProc);
|
||||
@@ -492,11 +350,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
case WM_TIMER:
|
||||
{
|
||||
BOOL hasMoved = FALSE;
|
||||
|
||||
HWND hwndForeground = GetForegroundWindow ();
|
||||
DWORD threadId = GetWindowThreadProcessId(hwndForeground, NULL);
|
||||
GUITHREADINFO guiInfo;
|
||||
guiInfo.cbSize = sizeof(guiInfo);
|
||||
|
||||
GetGUIThreadInfo(0, &guiInfo);
|
||||
GetGUIThreadInfo(threadId, &guiInfo);
|
||||
|
||||
if (bFollowMouse)
|
||||
{
|
||||
@@ -505,10 +364,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
//Get current mouse position
|
||||
GetCursorPos (&pNewMouse);
|
||||
|
||||
#define PointsAreEqual(pt1, pt2) (((pt1).x == (pt2).x) && ((pt1).y == (pt2).y))
|
||||
|
||||
//If mouse has moved ...
|
||||
if (!PointsAreEqual(pMouse, pNewMouse))
|
||||
if (((pMouse.x != pNewMouse.x) || (pMouse.y != pNewMouse.y)))
|
||||
{
|
||||
//Update to new position
|
||||
pMouse = pNewMouse;
|
||||
@@ -516,64 +373,45 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
hasMoved = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if(guiInfo.hwndActive != hMainWnd)
|
||||
|
||||
if (bFollowCaret && hwndForeground && guiInfo.hwndCaret)
|
||||
{
|
||||
if (bFollowCaret)
|
||||
{
|
||||
if (guiInfo.hwndCaret)
|
||||
{
|
||||
POINT ptCaret;
|
||||
ptCaret.x = (guiInfo.rcCaret.left + guiInfo.rcCaret.right) / 2;
|
||||
ptCaret.y = (guiInfo.rcCaret.top + guiInfo.rcCaret.bottom) / 2;
|
||||
POINT ptCaret;
|
||||
ptCaret.x = (guiInfo.rcCaret.left + guiInfo.rcCaret.right) / 2;
|
||||
ptCaret.y = (guiInfo.rcCaret.top + guiInfo.rcCaret.bottom) / 2;
|
||||
|
||||
if ((pCaretWnd != guiInfo.hwndCaret) || !PointsAreEqual(pCaret, ptCaret))
|
||||
{
|
||||
//Update to new position
|
||||
pCaret = ptCaret;
|
||||
pCaretWnd = guiInfo.hwndCaret;
|
||||
if(!hasMoved)
|
||||
{
|
||||
ClientToScreen (guiInfo.hwndCaret, (LPPOINT) &ptCaret);
|
||||
cp = ptCaret;
|
||||
hasMoved = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (guiInfo.hwndCaret && ((pCaretWnd != guiInfo.hwndCaret) || (pCaret.x != ptCaret.x) || (pCaret.y != ptCaret.y)))
|
||||
{
|
||||
//Update to new position
|
||||
pCaret = ptCaret;
|
||||
pCaretWnd = guiInfo.hwndCaret;
|
||||
if(!hasMoved)
|
||||
{
|
||||
pCaretWnd = NULL;
|
||||
ClientToScreen (guiInfo.hwndCaret, (LPPOINT) &ptCaret);
|
||||
cp = ptCaret;
|
||||
}
|
||||
hasMoved = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (bFollowFocus)
|
||||
if (bFollowFocus && hwndForeground && guiInfo.hwndFocus)
|
||||
{
|
||||
POINT ptFocus;
|
||||
RECT activeRect;
|
||||
|
||||
//Get current control focus
|
||||
GetWindowRect (guiInfo.hwndFocus, &activeRect);
|
||||
ptFocus.x = (activeRect.left + activeRect.right) / 2;
|
||||
ptFocus.y = (activeRect.top + activeRect.bottom) / 2;
|
||||
|
||||
if(guiInfo.hwndFocus && ((guiInfo.hwndFocus != pFocusWnd) || (pFocus.x != ptFocus.x) || (pFocus.y != ptFocus.y)))
|
||||
{
|
||||
if(guiInfo.hwndFocus && !guiInfo.hwndCaret)
|
||||
{
|
||||
POINT ptFocus;
|
||||
RECT activeRect;
|
||||
|
||||
//Get current control focus
|
||||
GetWindowRect(guiInfo.hwndFocus, &activeRect);
|
||||
ptFocus.x = (activeRect.left + activeRect.right) / 2;
|
||||
ptFocus.y = (activeRect.top + activeRect.bottom) / 2;
|
||||
|
||||
if((guiInfo.hwndFocus != pFocusWnd) || !PointsAreEqual(pFocus, ptFocus))
|
||||
{
|
||||
//Update to new position
|
||||
pFocus = ptFocus;
|
||||
pFocusWnd = guiInfo.hwndFocus;
|
||||
if(!hasMoved)
|
||||
{
|
||||
cp = ptFocus;
|
||||
hasMoved = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pFocusWnd = NULL;
|
||||
}
|
||||
//Update to new position
|
||||
pFocus = ptFocus;
|
||||
pFocusWnd = guiInfo.hwndFocus;
|
||||
if(!hasMoved)
|
||||
cp = ptFocus;
|
||||
hasMoved = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -592,9 +430,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
lastTicks = GetTickCount();
|
||||
Refresh();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
{
|
||||
@@ -621,7 +458,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
default:
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
}
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_PAINT:
|
||||
@@ -631,117 +468,24 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
dc = BeginPaint(hWnd, &PaintStruct);
|
||||
Draw(dc);
|
||||
EndPaint(hWnd, &PaintStruct);
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case WM_CONTEXTMENU:
|
||||
TrackPopupMenu(notifyMenu, 0, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), 0, hWnd, NULL);
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
{
|
||||
RECT rc;
|
||||
POINT pt;
|
||||
SetCapture(hWnd);
|
||||
|
||||
GetCursorPos(&pt);
|
||||
GetWindowRect(hWnd, &rc);
|
||||
ptDragOffset.x = pt.x - rc.left;
|
||||
ptDragOffset.y = pt.y - rc.top;
|
||||
|
||||
nearEdge = AppBarConfig.uEdge;
|
||||
|
||||
break;
|
||||
}
|
||||
case WM_MOUSEMOVE:
|
||||
if(GetCapture() == hWnd)
|
||||
{
|
||||
RECT rc;
|
||||
POINT pt;
|
||||
RECT rcWorkArea;
|
||||
SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, 0);
|
||||
GetCursorPos(&pt);
|
||||
GetWindowRect(hWnd, &rc);
|
||||
|
||||
if(AppBarConfig.uEdge>=0)
|
||||
{
|
||||
if (pt.x >= rcWorkArea.left && pt.x <= rcWorkArea.right &&
|
||||
pt.y >= rcWorkArea.top && pt.y <= rcWorkArea.bottom)
|
||||
{
|
||||
AttachAppBar(-2);
|
||||
|
||||
// Fixup offset
|
||||
GetWindowRect(hWnd, &rc);
|
||||
ptDragOffset.x = (rc.right-rc.left)/2;
|
||||
ptDragOffset.y = 2;
|
||||
|
||||
rc.left = pt.x - ptDragOffset.x;
|
||||
rc.top = pt.y - ptDragOffset.y;
|
||||
|
||||
SetWindowPos(hWnd, HWND_TOPMOST, rc.left, rc.top, 0, 0, SWP_NOSIZE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(pt.x <= rcWorkArea.left+8 && nearEdge != ABE_LEFT)
|
||||
{
|
||||
AttachAppBar(ABE_LEFT);
|
||||
nearEdge = ABE_LEFT;
|
||||
}
|
||||
else if(pt.y <= rcWorkArea.top+8 && nearEdge != ABE_TOP)
|
||||
{
|
||||
AttachAppBar(ABE_TOP);
|
||||
nearEdge = ABE_TOP;
|
||||
}
|
||||
else if(pt.x >= rcWorkArea.right-8 && nearEdge != ABE_RIGHT)
|
||||
{
|
||||
AttachAppBar(ABE_RIGHT);
|
||||
nearEdge = ABE_RIGHT;
|
||||
}
|
||||
else if(pt.y >= rcWorkArea.bottom-8 && nearEdge != ABE_BOTTOM)
|
||||
{
|
||||
AttachAppBar(ABE_BOTTOM);
|
||||
nearEdge = ABE_BOTTOM;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc.left = pt.x - ptDragOffset.x;
|
||||
rc.top = pt.y - ptDragOffset.y;
|
||||
|
||||
SetWindowPos(hWnd, HWND_TOPMOST, rc.left, rc.top, 0, 0, SWP_NOSIZE);
|
||||
nearEdge = -1;
|
||||
}
|
||||
}
|
||||
|
||||
pMouse = pt;
|
||||
Refresh();
|
||||
}
|
||||
break;
|
||||
case WM_LBUTTONUP:
|
||||
if(GetCapture() == hWnd)
|
||||
{
|
||||
if (AppBarConfig.uEdge>=0)
|
||||
DoAppBarStuff(ABM_GETSTATE);
|
||||
else
|
||||
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
|
||||
ReleaseCapture();
|
||||
}
|
||||
|
||||
case WM_SIZE:
|
||||
if(AppBarConfig.uEdge>=0) DoAppBarStuff(ABM_SETPOS);
|
||||
/* fallthrough */
|
||||
case WM_DISPLAYCHANGE:
|
||||
bRecreateOffscreenDC = TRUE;
|
||||
Refresh();
|
||||
break;
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
|
||||
case WM_ERASEBKGND:
|
||||
// handle WM_ERASEBKGND by simply returning non-zero because we did all the drawing in WM_PAINT.
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
if(AppBarConfig.uEdge>=0) DoAppBarStuff(ABM_REMOVE);
|
||||
|
||||
/* Save settings to registry */
|
||||
SaveSettings();
|
||||
KillTimer(hWnd , 1);
|
||||
@@ -758,12 +502,15 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
DestroyIcon(notifyIcon);
|
||||
|
||||
DestroyWindow(hOptionsDialog);
|
||||
return 0;
|
||||
break;
|
||||
|
||||
case WM_CREATE:
|
||||
{
|
||||
HMENU tempMenu;
|
||||
|
||||
/* Load settings from registry */
|
||||
LoadSettings();
|
||||
|
||||
/* Get the desktop window */
|
||||
hDesktopWindow = GetDesktopWindow();
|
||||
|
||||
@@ -785,57 +532,20 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
notifyMenu = GetSubMenu(tempMenu, 0);
|
||||
RemoveMenu(tempMenu, 0, MF_BYPOSITION);
|
||||
DestroyMenu(tempMenu);
|
||||
return 0;
|
||||
}
|
||||
|
||||
case APPMSG_APPBAR:
|
||||
{
|
||||
switch (wParam)
|
||||
{
|
||||
case ABN_STATECHANGE:
|
||||
DoAppBarStuff(ABM_GETSTATE);
|
||||
break;
|
||||
case ABN_POSCHANGED:
|
||||
DoAppBarStuff(ABM_SETPOS);
|
||||
break;
|
||||
case ABN_FULLSCREENAPP:
|
||||
{
|
||||
if(!lParam)
|
||||
{
|
||||
DoAppBarStuff(ABM_GETSTATE);
|
||||
break;
|
||||
}
|
||||
|
||||
SetWindowPos(hMainWnd, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
|
||||
break;
|
||||
}
|
||||
case ABN_WINDOWARRANGE:
|
||||
if(lParam)
|
||||
ShowWindow(hMainWnd, SW_HIDE);
|
||||
else
|
||||
ShowWindow(hMainWnd, SW_SHOW);
|
||||
}
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
case APPMSG_NOTIFYICON:
|
||||
HandleNotifyIconMessage(hWnd, wParam, lParam);
|
||||
return 0;
|
||||
|
||||
case WM_ACTIVATE:
|
||||
if(AppBarConfig.uEdge>=0) DoAppBarStuff(ABM_ACTIVATE);
|
||||
break;
|
||||
|
||||
case WM_WINDOWPOSCHANGED:
|
||||
if(AppBarConfig.uEdge>=0) DoAppBarStuff(ABM_WINDOWPOSCHANGED);
|
||||
Refresh();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK AboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
|
@@ -26,16 +26,6 @@
|
||||
|
||||
extern int iZoom;
|
||||
|
||||
struct _AppBarConfig_t {
|
||||
DWORD cbSize;
|
||||
INT uEdge;
|
||||
DWORD value3;
|
||||
DWORD value4;
|
||||
RECT appBarSizes;
|
||||
RECT rcFloating;
|
||||
};
|
||||
extern struct _AppBarConfig_t AppBarConfig;
|
||||
|
||||
extern BOOL bShowWarning;
|
||||
|
||||
extern BOOL bFollowMouse;
|
||||
|
@@ -24,64 +24,38 @@ BOOL bInvertColors = FALSE;
|
||||
BOOL bStartMinimized = FALSE;
|
||||
BOOL bShowMagnifier = TRUE;
|
||||
|
||||
struct _AppBarConfig_t AppBarConfig = {
|
||||
sizeof(struct _AppBarConfig_t),
|
||||
-2 /* ABE_TOP */,
|
||||
0, 1, /* unknown */
|
||||
{ 101,101,101,101 }, /* edge sizes */
|
||||
{ 20, 20, 600, 200 }, /* floating window rect */
|
||||
};
|
||||
|
||||
void LoadSettings()
|
||||
{
|
||||
HKEY hkey;
|
||||
LONG value;
|
||||
ULONG len;
|
||||
struct _AppBarConfig_t config_temp;
|
||||
|
||||
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0, KEY_READ, &hkey) == ERROR_SUCCESS)
|
||||
{
|
||||
len = sizeof(AppBarConfig);
|
||||
if (RegQueryValueEx(hkey, _T("AppBar"), 0, 0, (BYTE *)&config_temp, &len) == ERROR_SUCCESS)
|
||||
{
|
||||
if(config_temp.cbSize == sizeof(AppBarConfig))
|
||||
{
|
||||
AppBarConfig = config_temp;
|
||||
}
|
||||
}
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("StationaryMagLevel"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
{
|
||||
if (value >= 0 && value <= 9)
|
||||
iZoom = value;
|
||||
}
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("ShowWarning"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
bShowWarning = (value == 0 ? FALSE : TRUE);
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("StationaryInvertColors"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
bInvertColors = (value == 0 ? FALSE : TRUE);
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("StationaryStartMinimized"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
bStartMinimized = (value == 0 ? FALSE : TRUE);
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("StationaryTrackCursor"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
bFollowMouse = (value == 0 ? FALSE : TRUE);
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("StationaryTrackFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
bFollowFocus = (value == 0 ? FALSE : TRUE);
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
bFollowFocus = (value == 0 ? FALSE : TRUE);
|
||||
|
||||
len = 4;
|
||||
if (RegQueryValueEx(hkey, _T("StationaryTrackText"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
|
||||
bFollowCaret = (value == 0 ? FALSE : TRUE);
|
||||
|
||||
@@ -96,8 +70,6 @@ void SaveSettings()
|
||||
|
||||
if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0, _T(""), 0, KEY_WRITE, NULL, &hkey, NULL) == ERROR_SUCCESS)
|
||||
{
|
||||
RegSetValueEx(hkey, _T("AppBar"), 0, REG_BINARY, (BYTE *)&AppBarConfig, sizeof(AppBarConfig));
|
||||
|
||||
value = iZoom;
|
||||
RegSetValueEx(hkey, _T("StationaryMagLevel"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
|
||||
|
||||
|
@@ -6,8 +6,7 @@ list(APPEND SOURCE
|
||||
precomp.h)
|
||||
|
||||
add_rc_deps(mmc.rc ${CMAKE_CURRENT_SOURCE_DIR}/resources/mmc.ico)
|
||||
add_executable(mmc ${SOURCE} mmc.rc)
|
||||
set_module_type(mmc win32gui UNICODE)
|
||||
add_importlibs(mmc user32 gdi32 comdlg32 advapi32 shell32 comctl32 msvcrt kernel32 ntdll)
|
||||
add_pch(mmc precomp.h SOURCE)
|
||||
add_cd_file(TARGET mmc DESTINATION reactos/system32 FOR all)
|
||||
add_executable(mmcclient ${SOURCE} mmc.rc)
|
||||
set_module_type(mmcclient win32gui UNICODE)
|
||||
add_importlibs(mmcclient user32 gdi32 comdlg32 advapi32 shell32 comctl32 msvcrt kernel32)
|
||||
add_pch(mmcclient precomp.h SOURCE)
|
||||
|
@@ -21,52 +21,11 @@
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
typedef struct _CONSOLE_MAINFRAME_WND
|
||||
{
|
||||
HWND hwnd;
|
||||
HWND hwndMDIClient;
|
||||
|
||||
HMENU hMenuConsoleSmall;
|
||||
HMENU hMenuConsoleLarge;
|
||||
INT nConsoleCount;
|
||||
union
|
||||
{
|
||||
DWORD Flags;
|
||||
struct
|
||||
{
|
||||
DWORD AppAuthorMode : 1;
|
||||
};
|
||||
};
|
||||
} CONSOLE_MAINFRAME_WND, *PCONSOLE_MAINFRAME_WND;
|
||||
|
||||
typedef struct _CONSOLE_CHILDFRM_WND
|
||||
{
|
||||
HWND hwnd;
|
||||
PCONSOLE_MAINFRAME_WND MainFrame;
|
||||
PTSTR pFileName;
|
||||
} CONSOLE_CHILDFRM_WND, *PCONSOLE_CHILDFRM_WND;
|
||||
|
||||
static const TCHAR szMMCMainFrame[] = TEXT("MMCMainFrame");
|
||||
static const TCHAR szMMCChildFrm[] = TEXT("MMCChildFrm");
|
||||
|
||||
static ULONG NewConsoleCount = 0;
|
||||
|
||||
PCONSOLE_CHILDFRM_WND
|
||||
GetActiveChildInfo(VOID)
|
||||
{
|
||||
HWND hWndMDIChild;
|
||||
|
||||
hWndMDIChild = (HWND)SendMessageW(hwndMDIClient, WM_MDIGETACTIVE, 0, 0);
|
||||
if (hWndMDIChild == NULL)
|
||||
return NULL;
|
||||
|
||||
return (PCONSOLE_CHILDFRM_WND)GetWindowLongPtr(hWndMDIChild, 0);
|
||||
}
|
||||
|
||||
|
||||
static LPTSTR
|
||||
CreateNewConsoleTitle(VOID)
|
||||
{
|
||||
@@ -83,6 +42,27 @@ CreateNewConsoleTitle(VOID)
|
||||
return lpTitle;
|
||||
}
|
||||
|
||||
|
||||
typedef struct _CONSOLE_MAINFRAME_WND
|
||||
{
|
||||
HWND hwnd;
|
||||
HWND hwndMDIClient;
|
||||
|
||||
LPCTSTR lpConsoleTitle;
|
||||
HMENU hMenuConsoleSmall;
|
||||
HMENU hMenuConsoleLarge;
|
||||
INT nConsoleCount;
|
||||
union
|
||||
{
|
||||
DWORD Flags;
|
||||
struct
|
||||
{
|
||||
DWORD AppAuthorMode : 1;
|
||||
};
|
||||
};
|
||||
} CONSOLE_MAINFRAME_WND, *PCONSOLE_MAINFRAME_WND;
|
||||
|
||||
|
||||
HWND
|
||||
CreateNewMDIChild(PCONSOLE_MAINFRAME_WND Info,
|
||||
HWND hwndMDIClient)
|
||||
@@ -116,11 +96,14 @@ FrameOnCreate(HWND hwnd,
|
||||
LPCTSTR lpFileName = (LPCTSTR)(((LPCREATESTRUCT)lParam)->lpCreateParams);
|
||||
|
||||
Info = HeapAlloc(hAppHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
0,
|
||||
sizeof(CONSOLE_MAINFRAME_WND));
|
||||
if (Info == NULL)
|
||||
return -1;
|
||||
|
||||
ZeroMemory(Info,
|
||||
sizeof(CONSOLE_MAINFRAME_WND));
|
||||
|
||||
Info->hwnd = hwnd;
|
||||
|
||||
SetWindowLongPtr(hwnd,
|
||||
@@ -137,18 +120,19 @@ FrameOnCreate(HWND hwnd,
|
||||
{
|
||||
/* FIXME */
|
||||
Info->AppAuthorMode = TRUE;
|
||||
// Info->lpConsoleTitle = TEXT("ReactOS Management Console");
|
||||
Info->lpConsoleTitle = TEXT("ReactOS Management Console");
|
||||
}
|
||||
else
|
||||
{
|
||||
Info->AppAuthorMode = TRUE;
|
||||
// Info->lpConsoleTitle = CreateNewConsoleTitle();
|
||||
Info->lpConsoleTitle = CreateNewConsoleTitle();
|
||||
}
|
||||
|
||||
SetMenu(Info->hwnd,
|
||||
Info->hMenuConsoleSmall);
|
||||
|
||||
SetWindowText(Info->hwnd, TEXT("ReactOS Management Console"));
|
||||
SetWindowText(Info->hwnd,
|
||||
Info->lpConsoleTitle);
|
||||
|
||||
ccs.hWindowMenu = GetSubMenu(Info->hMenuConsoleLarge, 1);
|
||||
ccs.idFirstChild = IDM_MDI_FIRSTCHILD;
|
||||
@@ -173,134 +157,6 @@ FrameOnCreate(HWND hwnd,
|
||||
}
|
||||
|
||||
|
||||
static VOID
|
||||
SetFileName(
|
||||
PCONSOLE_CHILDFRM_WND Info,
|
||||
PWSTR pFileName)
|
||||
{
|
||||
DPRINT1("SetFileName(&p \'%S\')\n", Info, pFileName);
|
||||
|
||||
if (Info->pFileName != NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, Info->pFileName);
|
||||
Info->pFileName = NULL;
|
||||
}
|
||||
|
||||
if (pFileName != NULL)
|
||||
{
|
||||
Info->pFileName = HeapAlloc(GetProcessHeap(),
|
||||
0,
|
||||
(_tcslen(pFileName) + 1) * sizeof(TCHAR));
|
||||
if (Info->pFileName != NULL)
|
||||
_tcscpy(Info->pFileName, pFileName);
|
||||
}
|
||||
}
|
||||
|
||||
static BOOL
|
||||
DoSaveFileAs(
|
||||
HWND hWnd,
|
||||
PCONSOLE_CHILDFRM_WND pChildInfo);
|
||||
|
||||
static BOOL
|
||||
DoSaveFile(
|
||||
HWND hWnd,
|
||||
PCONSOLE_CHILDFRM_WND pChildInfo)
|
||||
{
|
||||
DPRINT1("pChildInfo %p\n", pChildInfo);
|
||||
|
||||
DPRINT1("FileName %S\n", pChildInfo->pFileName);
|
||||
|
||||
if (pChildInfo->pFileName == NULL)
|
||||
return DoSaveFileAs(hWnd, pChildInfo);
|
||||
|
||||
/* FIXME: Save the console here! */
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL
|
||||
DoSaveFileAs(
|
||||
HWND hWnd,
|
||||
PCONSOLE_CHILDFRM_WND pChildInfo)
|
||||
{
|
||||
OPENFILENAME saveas;
|
||||
TCHAR szPath[MAX_PATH];
|
||||
|
||||
DPRINT1("pChildInfo %p\n", pChildInfo);
|
||||
DPRINT1("FileName %S\n", pChildInfo->pFileName);
|
||||
|
||||
ZeroMemory(&saveas, sizeof(saveas));
|
||||
|
||||
if (pChildInfo->pFileName != NULL)
|
||||
{
|
||||
_tcscpy(szPath, pChildInfo->pFileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetWindowText(pChildInfo->hwnd, szPath, MAX_PATH);
|
||||
_tcscat(szPath, TEXT(".msc"));
|
||||
}
|
||||
|
||||
saveas.lStructSize = sizeof(OPENFILENAME);
|
||||
saveas.hwndOwner = hWnd;
|
||||
saveas.hInstance = hAppInstance;
|
||||
saveas.lpstrFilter = L"MSC Files\0*.msc\0";
|
||||
saveas.lpstrFile = szPath;
|
||||
saveas.nMaxFile = MAX_PATH;
|
||||
saveas.Flags = OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;
|
||||
saveas.lpstrDefExt = L"msc";
|
||||
|
||||
if (GetSaveFileName(&saveas))
|
||||
{
|
||||
/* HACK: Because in ROS, Save-As boxes don't check the validity
|
||||
* of file names and thus, here, szPath can be invalid !! We only
|
||||
* see its validity when we call DoSaveFile()... */
|
||||
SetFileName(pChildInfo, szPath);
|
||||
|
||||
if (DoSaveFile(hWnd, pChildInfo))
|
||||
{
|
||||
// UpdateWindowCaption();
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetFileName(pChildInfo, NULL);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static BOOL
|
||||
FrameOnSave(
|
||||
HWND hWnd)
|
||||
{
|
||||
PCONSOLE_CHILDFRM_WND pChildInfo;
|
||||
|
||||
pChildInfo = GetActiveChildInfo();
|
||||
if (pChildInfo == NULL)
|
||||
return FALSE;
|
||||
|
||||
return DoSaveFile(hWnd, pChildInfo);
|
||||
}
|
||||
|
||||
|
||||
static BOOL
|
||||
FrameOnSaveAs(
|
||||
HWND hWnd)
|
||||
{
|
||||
PCONSOLE_CHILDFRM_WND pChildInfo;
|
||||
|
||||
pChildInfo = GetActiveChildInfo();
|
||||
if (pChildInfo == NULL)
|
||||
return FALSE;
|
||||
|
||||
return DoSaveFileAs(hWnd, pChildInfo);
|
||||
}
|
||||
|
||||
static VOID
|
||||
FrameOnCommand(HWND hwnd,
|
||||
UINT uMsg,
|
||||
@@ -320,14 +176,6 @@ FrameOnCommand(HWND hwnd,
|
||||
Info->hMenuConsoleLarge);
|
||||
break;
|
||||
|
||||
case IDM_FILE_SAVE:
|
||||
FrameOnSave(hwnd);
|
||||
break;
|
||||
|
||||
case IDM_FILE_SAVEAS:
|
||||
FrameOnSaveAs(hwnd);
|
||||
break;
|
||||
|
||||
case IDM_FILE_EXIT:
|
||||
PostMessage(hwnd, WM_CLOSE, 0, 0);
|
||||
break;
|
||||
@@ -462,6 +310,12 @@ ConsoleMainFrameWndProc(IN HWND hwnd,
|
||||
}
|
||||
|
||||
|
||||
typedef struct _CONSOLE_CHILDFRM_WND
|
||||
{
|
||||
HWND hwnd;
|
||||
PCONSOLE_MAINFRAME_WND MainFrame;
|
||||
} CONSOLE_CHILDFRM_WND, *PCONSOLE_CHILDFRM_WND;
|
||||
|
||||
static LRESULT CALLBACK
|
||||
ConsoleChildFrmProc(IN HWND hwnd,
|
||||
IN UINT uMsg,
|
||||
@@ -477,10 +331,13 @@ ConsoleChildFrmProc(IN HWND hwnd,
|
||||
{
|
||||
case WM_CREATE:
|
||||
Info = HeapAlloc(hAppHeap,
|
||||
HEAP_ZERO_MEMORY,
|
||||
0,
|
||||
sizeof(CONSOLE_CHILDFRM_WND));
|
||||
if (Info != NULL)
|
||||
{
|
||||
ZeroMemory(Info,
|
||||
sizeof(CONSOLE_CHILDFRM_WND));
|
||||
|
||||
Info->hwnd = hwnd;
|
||||
|
||||
SetWindowLongPtr(hwnd,
|
||||
@@ -491,12 +348,7 @@ ConsoleChildFrmProc(IN HWND hwnd,
|
||||
|
||||
case WM_DESTROY:
|
||||
if (Info != NULL)
|
||||
{
|
||||
if (Info->pFileName)
|
||||
HeapFree(hAppHeap, 0, Info->pFileName);
|
||||
|
||||
HeapFree(hAppHeap, 0, Info);
|
||||
}
|
||||
HeapFree(hAppHeap, 0, Info);
|
||||
|
||||
PostMessage(hwndMainConsole, WM_USER_CLOSE_CHILD, 0, 0);
|
||||
break;
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&Файл"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Из&ход\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&Файл"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Из&ход\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&Fitxer"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Sortida\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&Fitxer"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Sortida\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -10,7 +10,6 @@ BEGIN
|
||||
POPUP "&Soubor"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Uk&ončit\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -25,9 +24,6 @@ BEGIN
|
||||
POPUP "&Soubor"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Uk&ončit\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&Datei"
|
||||
BEGIN
|
||||
MENUITEM "Neu\tStrg+N", IDM_FILE_NEW
|
||||
MENUITEM "Öffnen\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "B&eenden\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&Datei"
|
||||
BEGIN
|
||||
MENUITEM "Neu\tStrg+N", IDM_FILE_NEW
|
||||
MENUITEM "Öffnen\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Speichern", IDM_FILE_SAVE
|
||||
MENUITEM "Speichern unter...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "B&eenden\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&Αρχείο"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Έ&ξοδος\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&Αρχείο"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Έ&ξοδος\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&xit\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -11,7 +11,6 @@ BEGIN
|
||||
POPUP "&Archivo"
|
||||
BEGIN
|
||||
MENUITEM "Nuevo\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sa&lir\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -26,9 +25,6 @@ BEGIN
|
||||
POPUP "&Archivo"
|
||||
BEGIN
|
||||
MENUITEM "Nuevo\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sa&lir\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&Fichier"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Quitter\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&Fichier"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Quitter\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&קובץ"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&יציאה\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&קובץ"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&יציאה\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&sci\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&File"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "E&sci\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -7,7 +7,6 @@ BEGIN
|
||||
POPUP "파일(&F)"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "종료(&E)\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -22,9 +21,6 @@ BEGIN
|
||||
POPUP "파일(&F)"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "종료(&E)\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -7,7 +7,6 @@ BEGIN
|
||||
POPUP "&Byla"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Baigti\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -22,9 +21,6 @@ BEGIN
|
||||
POPUP "&Byla"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Baigti\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -7,7 +7,6 @@ BEGIN
|
||||
POPUP "&Fail"
|
||||
BEGIN
|
||||
MENUITEM "Baru\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Keluar(&X)\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -22,9 +21,6 @@ BEGIN
|
||||
POPUP "&Fail"
|
||||
BEGIN
|
||||
MENUITEM "Baru\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Keluar(&X)\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&Fil"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Avslutt\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&Fil"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Avslutt\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -12,7 +12,6 @@ BEGIN
|
||||
POPUP "Pl&ik"
|
||||
BEGIN
|
||||
MENUITEM "Nowa\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Za&kończ\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -27,9 +26,6 @@ BEGIN
|
||||
POPUP "Pl&ik"
|
||||
BEGIN
|
||||
MENUITEM "Nowa\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Za&kończ\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
@@ -5,7 +5,6 @@ BEGIN
|
||||
POPUP "&Arquivo"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sai&r\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
@@ -20,9 +19,6 @@ BEGIN
|
||||
POPUP "&Arquivo"
|
||||
BEGIN
|
||||
MENUITEM "New\tCtrl+N", IDM_FILE_NEW
|
||||
MENUITEM "Open\tStrg+O", IDM_FILE_OPEN
|
||||
MENUITEM "Save", IDM_FILE_SAVE
|
||||
MENUITEM "Save as...", IDM_FILE_SAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sai&r\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user