Sync with trunk r64509.

svn path=/branches/shell-experiments/; revision=64510
This commit is contained in:
David Quintana 2014-10-03 19:20:19 +00:00
commit db5b0c31c4
340 changed files with 17144 additions and 8600 deletions

View file

@ -242,7 +242,7 @@ BEGIN
LTEXT "Husûsî Sürücü", IDC_DRIVER_EXCLUSIVE, 72, 240, 54, 8, WS_DISABLED
RTEXT "Arayüz Türü:", IDC_STATIC, 144, 220, 58, 8
LTEXT "", IDC_INTERFACETYPE, 205, 220, 66, 8
RTEXT "Veri Yolu Numarası:", IDC_STATIC, 151, 230, 51, 8
RTEXT "Veriyolu Numarası:", IDC_STATIC, 151, 230, 51, 8
LTEXT "", IDC_BUSNUMBER, 205, 230, 66, 8
RTEXT "Sürüm:", IDC_STATIC, 151, 240, 51, 8
LTEXT "", IDC_VERSION, 205, 240, 66, 8
@ -404,7 +404,7 @@ END
STRINGTABLE
BEGIN
IDS_BUSNUMBER "Veri Yolu Numarası"
IDS_BUSNUMBER "Veriyolu Numarası"
IDS_INTERFACE "Arayüz"
IDS_DMA_CHANNEL "Yol"
IDS_DMA_PORT "Giriş"
@ -444,15 +444,15 @@ BEGIN
IDS_BUS_TURBOCHANNEL "TURBOChannel"
IDS_BUS_PCIBUS "PCI"
IDS_BUS_VMEBUS "VME"
IDS_BUS_NUBUS "Nu Veri Yolu"
IDS_BUS_NUBUS "Nu Veriyolu"
IDS_BUS_PCMCIABUS "PCMCIA"
IDS_BUS_CBUS "C Veri Yolu"
IDS_BUS_MPIBUS "MPI Veri Yolu"
IDS_BUS_MPSABUS "MPSA Veri Yolu"
IDS_BUS_CBUS "C Veriyolu"
IDS_BUS_MPIBUS "MPI Veriyolu"
IDS_BUS_MPSABUS "MPSA Veriyolu"
IDS_BUS_PROCESSORINTERNAL "İç İşlemci"
IDS_BUS_INTERNALPOWERBUS "İç Güç Veri Yolu"
IDS_BUS_PNPISABUS "PnP-ISA Veri Yolu"
IDS_BUS_PNPBUS "PnP Veri Yolu"
IDS_BUS_INTERNALPOWERBUS "İç Güç Veriyolu"
IDS_BUS_PNPISABUS "PnP-ISA Veriyolu"
IDS_BUS_PNPBUS "PnP Veriyolu"
IDS_BUS_UNKNOWNTYPE "Bilinmeyen Arayüz Türü"
END

View file

@ -32,14 +32,13 @@ list(APPEND SOURCE
settings.c
usetup.h)
if(CMAKE_C_COMPILER_ID STREQUAL "Clang")
#FIXME: Investigate Clang "illegal character encoding in string literal" warning
set_property(SOURCE mui.c APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-invalid-source-encoding")
endif()
add_executable(usetup ${SOURCE} usetup.rc)
target_link_libraries(usetup
zlib
inflib
ext2lib
vfatlib)
target_link_libraries(usetup zlib inflib ext2lib vfatlib)
set_module_type(usetup nativecui)
add_importlibs(usetup ntdll)
add_pch(usetup usetup.h SOURCE)

View file

@ -67,12 +67,8 @@ typedef enum
ERROR_ADDING_KBLAYOUTS,
ERROR_UPDATE_GEOID,
ERROR_INSUFFICIENT_DISKSPACE,
ERROR_PARTITION_TABLE_FULL,
ERROR_ONLY_ONE_EXTENDED,
ERROR_NOT_BEHIND_EXTENDED,
ERROR_EXTENDED_NOT_LAST,
ERROR_LAST_ERROR_CODE
}ERROR_NUMBER;

View file

@ -1524,19 +1524,6 @@ MUI_ERROR bgBGErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1519,19 +1519,6 @@ MUI_ERROR csCZErrorEntries[] =
"\n"
" * PokraŸujte stisknut¡m libovoln kl vesy."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"Nenˇ mo§n vytvoýit oddˇl za rozçˇýeněm oddˇlem.\n"
"\n"
" * Pokraźujte stisknutˇm libovoln kl vesy."
},
{
//ERROR_EXTENDED_NOT_LAST,
"Rozçˇýeně oddˇl musˇ bět v§dy poslednˇ oddˇl\n"
"v tabulce oddˇl….\n"
"\n"
" * Pokraźujte stisknutˇm libovoln kl vesy."
},
{
NULL,
NULL

View file

@ -1516,19 +1516,6 @@ MUI_ERROR deDEErrorEntries[] =
"\n"
" * Eine beliebige Taste zum Fortsetzen dr<64>cken."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"Sie k”nnen hinter einer erweiterten Partition keine weitere Partition anlegen.\n"
"\n"
" * Eine beliebige Taste zum Fortsetzen dr<64>cken."
},
{
//ERROR_EXTENDED_NOT_LAST,
"Eine erweiterte Partition muss immer die letzte Partition in \n"
"einer Partitionstabelle sein.\n"
"\n"
" * Eine beliebige Taste zum Fortsetzen dr<64>cken."
},
{
NULL,
NULL

View file

@ -1536,19 +1536,6 @@ MUI_ERROR elGRErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1511,19 +1511,6 @@ MUI_ERROR enUSErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1519,19 +1519,6 @@ MUI_ERROR esESErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1509,19 +1509,6 @@ MUI_ERROR etEEErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1524,19 +1524,6 @@ MUI_ERROR frFRErrorEntries[] =
"\n"
" * Appuyer sur une touche pour continuer."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"Impossible de crer une partition prcdant une partition tendue.\n"
"\n"
" * Appuyer sur une touche pour continuer."
},
{
//ERROR_EXTENDED_NOT_LAST,
"Une partition tendue doit toujours ˆtre place en dernier\n"
"dans la table de partition.\n"
"\n"
" * Appuyer sur une touche pour continuer."
},
{
NULL,
NULL

View file

@ -1512,19 +1512,6 @@ MUI_ERROR heILErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1513,19 +1513,6 @@ MUI_ERROR itITErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1513,19 +1513,6 @@ MUI_ERROR jaJPErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1521,19 +1521,6 @@ MUI_ERROR ltLTErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1557,19 +1557,6 @@ MUI_ERROR nlNLErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1521,19 +1521,6 @@ MUI_ERROR plPLErrorEntries[] =
"\n"
" * Naci<63>nij dowolny klawisz, aby kontynuowa†."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"Nie moľesz utworzy† partycji za partycjĄ rozszerzonĄ.\n"
"\n"
" * Naci<63>nij dowolny klawisz, aby kontynuowa†."
},
{
//ERROR_EXTENDED_NOT_LAST,
"Partycja rozszerzona musi by† zawsze ostatniĄ\n"
"partycjĄ w tabeli partycji.\n"
"\n"
" * Naci<63>nij dowolny klawisz, aby kontynuowa†."
},
{
NULL,
NULL

View file

@ -1549,19 +1549,6 @@ MUI_ERROR ptBRErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1529,7 +1529,7 @@ MUI_ERROR roROErrorEntries[] =
{
//ERROR_CABINET_SECTION,
"Nu se poate gÇsi secîiunea de directoare\n"
"Śn fi­ierul cabinet.",
"Śn fi­ierul cabinet.",
"ENTER = Repornire calculator"
},
{
@ -1540,7 +1540,7 @@ MUI_ERROR roROErrorEntries[] =
{
//ERROR_FIND_SETUPDATA,
"Nu se poate gÇsi secîiunea pentru date de\n"
"instalare din fi­ierul TXTSETUP.SIF.",
"instalare din fi­ierul TXTSETUP.SIF.",
"ENTER = Repornire calculator"
},
{
@ -1561,7 +1561,7 @@ MUI_ERROR roROErrorEntries[] =
{
//ERROR_ADDING_KBLAYOUTS,
"A e­uat includerea Śn registre a configuraîiei\n"
"de tastaturÇ.",
"de tastaturÇ.",
"ENTER = Repornire calculator"
},
{
@ -1572,7 +1572,7 @@ MUI_ERROR roROErrorEntries[] =
{
//ERROR_INSUFFICIENT_DISKSPACE,
"Pe partiîia selectatÇ nu existÇ suficient\n"
"spaîiu liber."
"spaîiu liber."
" * Tastaîi pentru a continua.",
NULL
},
@ -1589,19 +1589,6 @@ MUI_ERROR roROErrorEntries[] =
"\n"
" * Tastaîi pentru a continua."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"Nu se poate crea o partiîie dupÇ o partiîie extinsÇ.\n"
"\n"
" * Tastaîi pentru a continua."
},
{
//ERROR_EXTENDED_NOT_LAST,
"O partiîie extinsÇ trebuie sÇ fie Śntotdeauna\n"
"ultima partiîie din tabela de partiîii.\n"
"\n"
" * Tastaîi pentru a continua."
},
{
NULL,
NULL

View file

@ -1513,19 +1513,6 @@ MUI_ERROR ruRUErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1523,19 +1523,6 @@ MUI_ERROR skSKErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1516,19 +1516,6 @@ MUI_ERROR sqALErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1519,19 +1519,6 @@ MUI_ERROR svSEErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -1499,19 +1499,6 @@ MUI_ERROR trTRErrorEntries[] =
"\n"
" * S<>rd<72>rmek i‡in bir d<>§meye bas<61>n<EFBFBD>z."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"Bir geniŸletilmiŸ b”l<E2809D>m arkas<61>nda bir b”l<E2809D>m oluŸturamazs<7A>n<EFBFBD>z.\n"
"\n"
" * S<>rd<72>rmek i‡in bir d<>§meye bas<61>n<EFBFBD>z."
},
{
//ERROR_EXTENDED_NOT_LAST,
"Bir geniŸletilmiŸ b”l<E2809D>m, her zaman bir b”l<E2809D>m\n"
"tablosunda son b”l<E2809D>m olmal<61>d<EFBFBD>r.\n"
"\n"
" * S<>rd<72>rmek i‡in bir d<>§meye bas<61>n<EFBFBD>z."
},
{
NULL,
NULL

View file

@ -1519,19 +1519,6 @@ MUI_ERROR ukUAErrorEntries[] =
"\n"
" * Press any key to continue."
},
{
//ERROR_NOT_BEHIND_EXTENDED,
"You can not create a partition behind an extended partition.\n"
"\n"
" * Press any key to continue."
},
{
//ERROR_EXTENDED_NOT_LAST,
"An extended partition must always be the last\n"
"partition in a partition table.\n"
"\n"
" * Press any key to continue."
},
{
NULL,
NULL

View file

@ -2054,7 +2054,8 @@ ScrollDownPartitionList(
{
/* Primary or extended partition */
if (IsContainerPartition(List->CurrentPartition->PartitionType))
if (List->CurrentPartition->IsPartitioned == TRUE &&
IsContainerPartition(List->CurrentPartition->PartitionType))
{
/* First logical partition */
PartListEntry = List->CurrentDisk->LogicalPartListHead.Flink;
@ -2147,7 +2148,8 @@ ScrollUpPartitionList(
{
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
if (IsContainerPartition(PartEntry->PartitionType))
if (PartEntry->IsPartitioned == TRUE &&
IsContainerPartition(PartEntry->PartitionType))
{
PartListEntry = List->CurrentDisk->LogicalPartListHead.Blink;
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
@ -2171,7 +2173,8 @@ ScrollUpPartitionList(
{
PartEntry = CONTAINING_RECORD(PartListEntry, PARTENTRY, ListEntry);
if (IsContainerPartition(PartEntry->PartitionType))
if (PartEntry->IsPartitioned == TRUE &&
IsContainerPartition(PartEntry->PartitionType))
{
PartListEntry = DiskEntry->LogicalPartListHead.Blink;
if (PartListEntry != &DiskEntry->LogicalPartListHead)
@ -2697,6 +2700,7 @@ DeleteCurrentPartition(
{
/* Nothing to merge but change current entry */
PartEntry->IsPartitioned = FALSE;
PartEntry->PartitionType = PARTITION_ENTRY_UNUSED;
PartEntry->FormatState = Unformatted;
PartEntry->DriveLetter = 0;
}
@ -2999,41 +3003,6 @@ SetMountedDeviceValues(
}
static
BOOLEAN
IsLastPrimaryPartiton(
IN PPARTENTRY PartEntry)
{
return (PartEntry->ListEntry.Flink == &PartEntry->DiskEntry->PrimaryPartListHead);
}
static
BOOLEAN
IsPreviousPartitionExtended(
IN PPARTENTRY PartEntry,
IN PDISKENTRY DiskEntry)
{
PPARTENTRY PrevPartEntry;
PLIST_ENTRY Entry;
Entry = PartEntry->ListEntry.Blink;
while (Entry != &DiskEntry->PrimaryPartListHead)
{
PrevPartEntry = CONTAINING_RECORD(Entry, PARTENTRY, ListEntry);
if (IsContainerPartition(PrevPartEntry->PartitionType))
return TRUE;
Entry = Entry->Blink;
}
return FALSE;
}
static
ULONG
GetPrimaryPartitionCount(
@ -3075,10 +3044,6 @@ PrimaryPartitionCreationChecks(
if (GetPrimaryPartitionCount(DiskEntry) > 4)
return ERROR_PARTITION_TABLE_FULL;
/* Fail if this partiton is located behind an extended partition */
if (IsPreviousPartitionExtended(PartEntry, DiskEntry))
return ERROR_NOT_BEHIND_EXTENDED;
return ERROR_SUCCESS;
}
@ -3105,10 +3070,6 @@ ExtendedPartitionCreationChecks(
if (DiskEntry->ExtendedPartition != NULL)
return ERROR_ONLY_ONE_EXTENDED;
/* Fail if the partition is not the last list entry */
if (!IsLastPrimaryPartiton(PartEntry))
return ERROR_EXTENDED_NOT_LAST;
return ERROR_SUCCESS;
}

View file

@ -1339,6 +1339,11 @@ ScmWaitForServiceConnect(PSERVICE Service)
#ifdef USE_ASYNCHRONOUS_IO
OVERLAPPED Overlapped = {0};
#endif
#if 0
LPCWSTR lpErrorStrings[3];
WCHAR szBuffer1[20];
WCHAR szBuffer2[20];
#endif
DPRINT("ScmWaitForServiceConnect()\n");
@ -1370,6 +1375,18 @@ ScmWaitForServiceConnect(PSERVICE Service)
DPRINT1("CancelIo() failed (Error: %lu)\n", GetLastError());
}
#if 0
_ultow(PipeTimeout, szBuffer1, 10);
lpErrorStrings[0] = Service->lpDisplayName;
lpErrorStrings[1] = szBuffer1;
ScmLogEvent(EVENT_CONNECTION_TIMEOUT,
EVENTLOG_ERROR_TYPE,
2,
lpErrorStrings);
#endif
DPRINT1("Log EVENT_CONNECTION_TIMEOUT by %S\n", Service->lpDisplayName);
return ERROR_SERVICE_REQUEST_TIMEOUT;
}
else if (dwError == WAIT_OBJECT_0)
@ -1425,6 +1442,17 @@ ScmWaitForServiceConnect(PSERVICE Service)
DPRINT1("CancelIo() failed (Error: %lu)\n", GetLastError());
}
#if 0
_ultow(PipeTimeout, szBuffer1, 10);
lpErrorStrings[0] = szBuffer1;
ScmLogEvent(EVENT_READFILE_TIMEOUT,
EVENTLOG_ERROR_TYPE,
1,
lpErrorStrings);
#endif
DPRINT1("Log EVENT_READFILE_TIMEOUT by %S\n", Service->lpDisplayName);
return ERROR_SERVICE_REQUEST_TIMEOUT;
}
else if (dwError == WAIT_OBJECT_0)
@ -1456,18 +1484,24 @@ ScmWaitForServiceConnect(PSERVICE Service)
return dwError;
}
}
else
{
if (dwProcessId != Service->lpImage->dwProcessId)
{
/*
LPWSTR Strings[3]
ScmLogError(EVENT_SERVICE_DIFFERENT_PID_CONNECTED,
3,
lpStrings);
*/
}
if (dwProcessId != Service->lpImage->dwProcessId)
{
#if 0
_ultow(Service->lpImage->dwProcessId, szBuffer1, 10);
_ultow(dwProcessId, szBuffer2, 10);
lpErrorStrings[0] = Service->lpDisplayName;
lpErrorStrings[1] = szBuffer1;
lpErrorStrings[2] = szBuffer2;
ScmLogEvent(EVENT_SERVICE_DIFFERENT_PID_CONNECTED,
EVENTLOG_WARNING_TYPE,
3,
lpErrorStrings);
#endif
DPRINT1("Log EVENT_SERVICE_DIFFERENT_PID_CONNECTED by %S\n", Service->lpDisplayName);
}
DPRINT("ScmWaitForServiceConnect() done\n");

View file

@ -6,6 +6,7 @@
#define _SERVICES_H
#include <stdio.h>
#include <stdlib.h>
#define WIN32_NO_STATUS
#define _INC_WINDOWS

View file

@ -1,16 +1,24 @@
include_directories(
${REACTOS_SOURCE_DIR}/include/reactos/idl
${CMAKE_CURRENT_BINARY_DIR})
add_rpc_files(server ${REACTOS_SOURCE_DIR}/include/reactos/idl/winreg.idl)
list(APPEND SOURCE
environment.c
rpcserver.c
sas.c
screensaver.c
setup.c
winlogon.c
wlx.c
winlogon.h)
winlogon.h
${CMAKE_CURRENT_BINARY_DIR}/winreg_s.c)
add_executable(winlogon ${SOURCE} winlogon.rc)
target_link_libraries(winlogon wine)
set_module_type(winlogon win32gui)
add_importlibs(winlogon user32 advapi32 userenv secur32 msvcrt kernel32 ntdll)
add_importlibs(winlogon user32 advapi32 userenv secur32 rpcrt4 msvcrt kernel32 ntdll)
add_pch(winlogon winlogon.h SOURCE)
add_cd_file(TARGET winlogon DESTINATION reactos/system32 FOR all)

View file

@ -0,0 +1,570 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Winlogon
* FILE: base/system/winlogon/rpcserver.c
* PURPOSE: RPC server interface for the remote registry calls
* PROGRAMMERS: Eric Kohl
*/
/* INCLUDES *****************************************************************/
#include "winlogon.h"
#include <rpc.h>
#include <winreg_s.h>
/* FUNCTIONS *****************************************************************/
BOOL
StartRpcServer(VOID)
{
RPC_STATUS Status;
TRACE("ScmStartRpcServer() called\n");
Status = RpcServerUseProtseqEpW(L"ncacn_np",
10,
L"\\pipe\\winreg",
NULL);
if (Status != RPC_S_OK)
{
ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
return FALSE;
}
Status = RpcServerRegisterIf(winreg_v1_0_s_ifspec,
NULL,
NULL);
if (Status != RPC_S_OK)
{
ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status);
return FALSE;
}
Status = RpcServerListen(1, 20, TRUE);
if (Status != RPC_S_OK)
{
ERR("RpcServerListen() failed (Status %lx)\n", Status);
return FALSE;
}
TRACE("StartRpcServer() done\n");
return TRUE;
}
void __RPC_FAR * __RPC_USER MIDL_user_allocate(SIZE_T len)
{
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
}
void __RPC_USER MIDL_user_free(void __RPC_FAR * ptr)
{
HeapFree(GetProcessHeap(), 0, ptr);
}
void __RPC_USER RPC_HKEY_rundown(RPC_HKEY hSCObject)
{
}
/* Function 0 */
error_status_t
WINAPI
OpenClassesRoot(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 1 */
error_status_t
WINAPI
OpenCurrentUser(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 2 */
error_status_t
WINAPI
OpenLocalMachine(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 3 */
error_status_t
WINAPI
OpenPerformanceData(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 4 */
error_status_t
WINAPI
OpenUsers(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 5 */
error_status_t
WINAPI
BaseRegCloseKey(
PRPC_HKEY hKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 6 */
error_status_t
WINAPI
BaseRegCreateKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpSubKey,
PRPC_UNICODE_STRING lpClass,
DWORD dwOptions,
REGSAM samDesired,
PRPC_SECURITY_ATTRIBUTES lpSecurityAttributes,
PRPC_HKEY phkResult,
LPDWORD lpdwDisposition)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 7 */
error_status_t
WINAPI
BaseRegDeleteKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpSubKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 8 */
error_status_t
WINAPI
BaseRegDeleteValue(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpValueName)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 9 */
error_status_t
WINAPI
BaseRegEnumKey(
RPC_HKEY hKey,
DWORD dwIndex,
PRPC_UNICODE_STRING lpNameIn,
PRPC_UNICODE_STRING lpNameOut,
PRPC_UNICODE_STRING lpClassIn,
PRPC_UNICODE_STRING *lplpClassOut,
PFILETIME lpftLastWriteTime)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 10 */
error_status_t
WINAPI
BaseRegEnumValue(
RPC_HKEY hKey,
DWORD dwIndex,
PRPC_UNICODE_STRING lpValueNameIn,
PRPC_UNICODE_STRING lpValueNameOut,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData,
LPDWORD lpcbLen)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 11 */
error_status_t
__stdcall
BaseRegFlushKey(
RPC_HKEY hKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 12 */
error_status_t
__stdcall
BaseRegGetKeySecurity(
RPC_HKEY hKey,
SECURITY_INFORMATION SecurityInformation,
PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptorIn,
PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptorOut)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 13 */
error_status_t
__stdcall
BaseRegLoadKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpSubKey,
PRPC_UNICODE_STRING lpFile)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 14 */
void
__stdcall
Opnum14NotImplemented(
handle_t IDL_handle)
{
TRACE("\n");
}
/* Function 15 */
error_status_t
__stdcall
BaseRegOpenKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpSubKey,
DWORD dwOptions,
REGSAM samDesired,
PRPC_HKEY phkResult)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 16 */
error_status_t
__stdcall
BaseRegQueryInfoKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpClassIn,
PRPC_UNICODE_STRING lpClassOut,
LPDWORD lpcSubKeys,
LPDWORD lpcbMaxSubKeyLen,
LPDWORD lpcbMaxClassLen,
LPDWORD lpcValues,
LPDWORD lpcbMaxValueNameLen,
LPDWORD lpcbMaxValueLen,
LPDWORD lpcbSecurityDescriptor,
PFILETIME lpftLastWriteTime)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 17 */
error_status_t
__stdcall
BaseRegQueryValue(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpValueName,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData,
LPDWORD lpcbLen)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 18 */
error_status_t
__stdcall
BaseRegReplaceKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpSubKey,
PRPC_UNICODE_STRING lpNewFile,
PRPC_UNICODE_STRING lpOldFile)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 19 */
error_status_t
__stdcall
BaseRegRestoreKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpFile,
DWORD Flags)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 20 */
error_status_t
__stdcall
BaseRegSaveKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpFile,
PRPC_SECURITY_ATTRIBUTES pSecurityAttributes)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 21 */
error_status_t
__stdcall
BaseRegSetKeySecurity(
RPC_HKEY hKey,
SECURITY_INFORMATION SecurityInformation,
PRPC_SECURITY_DESCRIPTOR pRpcSecurityDescriptor)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 22 */
error_status_t
__stdcall
BaseRegSetValue(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpValueName,
DWORD dwType,
LPBYTE lpData,
DWORD cbData)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 23 */
error_status_t
__stdcall
BaseRegUnLoadKey(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpSubKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 24 */
ULONG
__stdcall
BaseInitiateSystemShutdown(
PREGISTRY_SERVER_NAME ServerName,
PRPC_UNICODE_STRING lpMessage,
ULONG dwTimeout,
BOOLEAN bForceAppsClosed,
BOOLEAN bRebootAfterShutdown)
{
TRACE("BaseInitiateSystemShutdown()\n");
return ERROR_SUCCESS;
}
/* Function 25 */
ULONG
__stdcall
BaseAbortSystemShutdown(
PREGISTRY_SERVER_NAME ServerName)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 26 */
error_status_t
__stdcall
BaseRegGetVersion(
RPC_HKEY hKey,
LPDWORD lpdwVersion)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 27 */
error_status_t
__stdcall
OpenCurrentConfig(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 28 */
void
__stdcall
Opnum28NotImplemented(
handle_t IDL_handle)
{
TRACE("\n");
}
/* Function 29 */
error_status_t
__stdcall
BaseRegQueryMultipleValues(
RPC_HKEY hKey,
PRVALENT val_listIn,
PRVALENT val_listOut,
DWORD num_vals,
char *lpvalueBuf,
LPDWORD ldwTotsize)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 30 */
ULONG
__stdcall
BaseInitiateSystemShutdownEx(
PREGISTRY_SERVER_NAME ServerName,
PRPC_UNICODE_STRING lpMessage,
ULONG dwTimeout,
BOOLEAN bForceAppsClosed,
BOOLEAN bRebootAfterShutdown,
ULONG dwReason)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 31 */
error_status_t
__stdcall
BaseRegSaveKeyEx(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpFile,
PRPC_SECURITY_ATTRIBUTES pSecurityAttributes,
DWORD Flags)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 32 */
error_status_t
__stdcall
OpenPerformanceText(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 33 */
error_status_t
__stdcall
OpenPerformanceNlsText(
PREGISTRY_SERVER_NAME ServerName,
REGSAM samDesired,
PRPC_HKEY phKey)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 34 */
error_status_t
__stdcall
BaseRegQueryMultipleValues2(
RPC_HKEY hKey,
PRVALENT val_listIn,
PRVALENT val_listOut,
DWORD num_vals,
char *lpvalueBuf,
LPDWORD ldwTotsize,
LPDWORD ldwRequiredSize)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* Function 35 */
error_status_t
__stdcall
BaseRegDeleteKeyEx(
RPC_HKEY hKey,
PRPC_UNICODE_STRING lpSubKey,
REGSAM AccessMask,
DWORD Reserved)
{
TRACE("\n");
return ERROR_SUCCESS;
}
/* EOF */

View file

@ -356,6 +356,13 @@ WinMain(
ExitProcess(1);
}
if (!StartRpcServer())
{
ERR("WL: Could not start the RPC server\n");
NtRaiseHardError(STATUS_SYSTEM_PROCESS_TERMINATED, 0, 0, NULL, OptionOk, &HardErrorResponse);
ExitProcess(1);
}
if (!StartServicesManager())
{
ERR("WL: Could not start services.exe\n");

View file

@ -259,6 +259,10 @@ extern PWLSESSION WLSession;
BOOL
CreateUserEnvironment(IN PWLSESSION Session);
/* rpcserver.c */
BOOL
StartRpcServer(VOID);
/* sas.c */
BOOL
SetDefaultLanguage(IN BOOL UserProfile);

View file

@ -1645,7 +1645,7 @@ HKCU,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon","Shell",0x00020000,
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies",,0x00000012
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",,0x00000012
HKCU,"Software\Microsoft\Windows\CurrentVersion\Telephony",,0x00000012
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony",,0x00000012
HKCU,"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",,0x00000012
HKCU,"SOFTWARE\Microsoft\Windows NT",,0x00000012
@ -1711,8 +1711,8 @@ HKCU,"SOFTWARE\ReactOS\Debug","SpyInclude",0x00020000,"INCLUDEALL"
;HKCU,"SOFTWARE\ReactOS\Debug","SpyExcludeDWP",0x00020000,""
; Internet Explorer
HKCU,Software\Wine\MSHTML,"GeckoUrl",,"http://source.winehq.org/winegecko.php"
HKCU,Software\Wine\MSHTML,"GeckoCabDir",0x00020000,"%SystemRoot%\"
HKCU,"SOFTWARE\Wine\MSHTML","GeckoUrl",,"http://source.winehq.org/winegecko.php"
HKCU,"SOFTWARE\Wine\MSHTML","GeckoCabDir",0x00020000,"%SystemRoot%\"
HKCU,"SOFTWARE\Microsoft\Internet Explorer\Main","Start Page",0x00000000,"http://www.reactos.org"

View file

@ -1982,7 +1982,7 @@ HKLM,"SYSTEM\CurrentControlSet\Services\Vga","ImagePath",0x00020000,"system32\dr
HKLM,"SYSTEM\CurrentControlSet\Services\Vga","Start",0x00010001,0x00000004
HKLM,"SYSTEM\CurrentControlSet\Services\Vga","Type",0x00010001,0x00000001
HKLM,"SYSTEM\CurrentControlSet\Services\Vga","Tag",0x00010001,0x00000002
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VGA\Device0","VgaCompatible",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\Vga\Device0","VgaCompatible",0x00010001,1
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\Vga\Device0","InstalledDisplayDrivers",0x00010000,"vgaddi"
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\Vga\Device0","DefaultSettings.VRefresh",0x00010001,1

View file

@ -9,6 +9,11 @@ if(NOT DEFINED SEPARATE_DBG)
set(SEPARATE_DBG FALSE)
endif()
# Dwarf based builds (no rsym)
if(NOT DEFINED NO_ROSSYM)
set(NO_ROSSYM FALSE)
endif()
if(NOT DEFINED USE_PSEH3)
set(USE_PSEH3 1)
endif()
@ -194,6 +199,14 @@ if(SEPARATE_DBG)
"<CMAKE_C_COMPILER> <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>"
"${OBJCOPY} --only-keep-debug <TARGET> ${REACTOS_BINARY_DIR}/symbols/${SYMBOL_FILE}"
"${OBJCOPY} --strip-debug <TARGET>")
elseif(NO_ROSSYM)
# Dwarf-based build
message(STATUS "Generating a dwarf-based build (no rsym)")
set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> ${CMAKE_CXX_FLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
set(CMAKE_C_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
set(CMAKE_CXX_CREATE_SHARED_LIBRARY "<CMAKE_CXX_COMPILER> ${CMAKE_CXX_FLAGS} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
set(CMAKE_RC_CREATE_SHARED_LIBRARY "<CMAKE_C_COMPILER> ${CMAKE_C_FLAGS} <CMAKE_SHARED_LIBRARY_C_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
else()
# Normal rsym build
get_target_property(RSYM native-rsym IMPORTED_LOCATION_NOCONFIG)

View file

@ -28,6 +28,7 @@ list(APPEND SOURCE
misc/msi.c
misc/shutdown.c
misc/sysfunc.c
reg/hkcr.c
reg/reg.c
sec/ac.c
sec/audit.c

View file

@ -0,0 +1,801 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/advapi32/reg/hkcr.c
* PURPOSE: Registry functions - HKEY_CLASSES_ROOT abstraction
* PROGRAMMER: Jerôme Gardou (jerome.gardou@reactos.org)
*/
#include <advapi32.h>
#include <ndk/cmfuncs.h>
#include <pseh/pseh2.h>
#include "reg.h"
WINE_DEFAULT_DEBUG_CHANNEL(reg);
static const UNICODE_STRING HKLM_ClassesPath = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\Software\\Classes");
static
LONG
GetKeyName(HKEY hKey, PUNICODE_STRING KeyName)
{
UNICODE_STRING InfoName;
PKEY_NAME_INFORMATION NameInformation;
ULONG InfoLength;
NTSTATUS Status;
/* Get info length */
InfoLength = 0;
Status = NtQueryKey(hKey, KeyNameInformation, NULL, 0, &InfoLength);
if (Status != STATUS_BUFFER_TOO_SMALL)
{
ERR("NtQueryKey returned unexpected Status: 0x%08x\n", Status);
return RtlNtStatusToDosError(Status);
}
/* Get it for real */
NameInformation = RtlAllocateHeap(RtlGetProcessHeap(), 0, InfoLength);
if (NameInformation == NULL)
{
ERR("Failed to allocate %lu bytes", InfoLength);
return ERROR_NOT_ENOUGH_MEMORY;
}
Status = NtQueryKey(hKey, KeyNameInformation, NameInformation, InfoLength, &InfoLength);
if (!NT_SUCCESS(Status))
{
RtlFreeHeap(RtlGetProcessHeap(), 0, NameInformation);
ERR("NtQueryKey failed: 0x%08x\n", Status);
return RtlNtStatusToDosError(Status);
}
/* Make it a proper UNICODE_STRING */
InfoName.Length = NameInformation->NameLength;
InfoName.MaximumLength = NameInformation->NameLength;
InfoName.Buffer = NameInformation->Name;
Status = RtlDuplicateUnicodeString(RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE, &InfoName, KeyName);
if (!NT_SUCCESS(Status))
{
RtlFreeHeap(RtlGetProcessHeap(), 0, NameInformation);
ERR("RtlDuplicateUnicodeString failed: 0x%08x\n", Status);
return RtlNtStatusToDosError(Status);
}
RtlFreeHeap(RtlGetProcessHeap(), 0, NameInformation);
return ERROR_SUCCESS;
}
static
LONG
GetKeySam(
_In_ HKEY hKey,
_Out_ REGSAM* RegSam)
{
NTSTATUS Status;
OBJECT_BASIC_INFORMATION ObjectInfo;
Status = NtQueryObject(hKey, ObjectBasicInformation, &ObjectInfo, sizeof(ObjectInfo), NULL);
if (!NT_SUCCESS(Status))
{
ERR("NtQueryObject failed, Status %x08x\n", Status);
return RtlNtStatusToDosError(Status);
}
*RegSam = ObjectInfo.GrantedAccess;
return ERROR_SUCCESS;
}
/*
* Gets a HKLM key from an HKCU key.
*/
static
LONG
GetFallbackHKCRKey(
_In_ HKEY hKey,
_Out_ HKEY* MachineKey,
_In_ BOOL MustCreate)
{
UNICODE_STRING KeyName;
LPWSTR SubKeyName;
LONG ErrorCode;
REGSAM SamDesired;
/* Get the key name */
ErrorCode = GetKeyName(hKey, &KeyName);
if (ErrorCode != ERROR_SUCCESS)
return ErrorCode;
/* See if we really need a conversion */
if (RtlPrefixUnicodeString(&HKLM_ClassesPath, &KeyName, TRUE))
{
RtlFreeUnicodeString(&KeyName);
*MachineKey = hKey;
return ERROR_SUCCESS;
}
SubKeyName = KeyName.Buffer + 15; /* 15 == wcslen(L"\\Registry\\User\\") */
/* Skip the user token */
while (*SubKeyName++ != L'\\')
{
if (!*SubKeyName)
{
ERR("Key name %S is invalid!\n", KeyName.Buffer);
return ERROR_INTERNAL_ERROR;
}
}
/* Use the same access mask than the original key */
ErrorCode = GetKeySam(hKey, &SamDesired);
if (ErrorCode != ERROR_SUCCESS)
{
RtlFreeUnicodeString(&KeyName);
return ErrorCode;
}
if (MustCreate)
{
ErrorCode = RegCreateKeyExW(
HKEY_LOCAL_MACHINE,
SubKeyName,
0,
NULL,
0,
SamDesired,
NULL,
MachineKey,
NULL);
}
else
{
/* Open the key. */
ErrorCode = RegOpenKeyExW(
HKEY_LOCAL_MACHINE,
SubKeyName,
0,
SamDesired,
MachineKey);
}
RtlFreeUnicodeString(&KeyName);
return ErrorCode;
}
/* Get the HKCU key (if it exists) from an HKCR key */
static
LONG
GetPreferredHKCRKey(
_In_ HKEY hKey,
_Out_ HKEY* PreferredKey)
{
UNICODE_STRING KeyName;
LPWSTR SubKeyName;
LONG ErrorCode;
REGSAM SamDesired;
/* Get the key name */
ErrorCode = GetKeyName(hKey, &KeyName);
if (ErrorCode != ERROR_SUCCESS)
return ErrorCode;
/* See if we really need a conversion */
if (!RtlPrefixUnicodeString(&HKLM_ClassesPath, &KeyName, TRUE))
{
RtlFreeUnicodeString(&KeyName);
*PreferredKey = hKey;
return ERROR_SUCCESS;
}
/* 18 == wcslen(L"\\Registry\\Machine\\") */
SubKeyName = KeyName.Buffer + 18;
/* Use the same access mask than the original key */
ErrorCode = GetKeySam(hKey, &SamDesired);
if (ErrorCode != ERROR_SUCCESS)
{
RtlFreeUnicodeString(&KeyName);
return ErrorCode;
}
/* Open the key. */
ErrorCode = RegOpenKeyExW(
HKEY_CURRENT_USER,
SubKeyName,
0,
SamDesired,
PreferredKey);
RtlFreeUnicodeString(&KeyName);
return ErrorCode;
}
/* HKCR version of RegCreateKeyExW. */
LONG
WINAPI
CreateHKCRKey(
_In_ HKEY hKey,
_In_ LPCWSTR lpSubKey,
_In_ DWORD Reserved,
_In_opt_ LPWSTR lpClass,
_In_ DWORD dwOptions,
_In_ REGSAM samDesired,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_Out_ PHKEY phkResult,
_Out_opt_ LPDWORD lpdwDisposition)
{
LONG ErrorCode;
HKEY QueriedKey, TestKey;
ASSERT(IsHKCRKey(hKey));
/* Remove the HKCR flag while we're working */
hKey = (HKEY)(((ULONG_PTR)hKey) & ~0x2);
ErrorCode = GetPreferredHKCRKey(hKey, &QueriedKey);
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* The current key doesn't exist on HKCU side, so we can only create it in HKLM */
ErrorCode = RegCreateKeyExW(
hKey,
lpSubKey,
Reserved,
lpClass,
dwOptions,
samDesired,
lpSecurityAttributes,
phkResult,
lpdwDisposition);
if (ErrorCode == ERROR_SUCCESS)
MakeHKCRKey(phkResult);
return ErrorCode;
}
if (ErrorCode != ERROR_SUCCESS)
{
/* Somehow we failed for another reason (maybe deleted key or whatever) */
return ErrorCode;
}
/* See if the subkey already exists in HKCU. */
ErrorCode = RegOpenKeyExW(QueriedKey, lpSubKey, 0, 0, &TestKey);
if (ErrorCode != ERROR_FILE_NOT_FOUND)
{
if (ErrorCode == ERROR_SUCCESS)
{
/* Great. Close the test one and do the real create operation */
RegCloseKey(TestKey);
ErrorCode = RegCreateKeyExW(
QueriedKey,
lpSubKey,
Reserved,
lpClass,
dwOptions,
samDesired,
lpSecurityAttributes,
phkResult,
lpdwDisposition);
if (ErrorCode == ERROR_SUCCESS)
MakeHKCRKey(phkResult);
}
if (QueriedKey != hKey)
RegCloseKey(QueriedKey);
return ERROR_SUCCESS;
}
if (QueriedKey != hKey)
RegCloseKey(QueriedKey);
/* So we must do the create operation in HKLM, creating the missing parent keys if needed. */
ErrorCode = GetFallbackHKCRKey(hKey, &QueriedKey, TRUE);
if (ErrorCode != ERROR_SUCCESS)
return ErrorCode;
/* Do the key creation */
ErrorCode = RegCreateKeyEx(
QueriedKey,
lpSubKey,
Reserved,
lpClass,
dwOptions,
samDesired,
lpSecurityAttributes,
phkResult,
lpdwDisposition);
if (QueriedKey != hKey)
RegCloseKey(QueriedKey);
if (ErrorCode == ERROR_SUCCESS)
MakeHKCRKey(phkResult);
return ErrorCode;
}
/* Same as RegOpenKeyExW, but for HKEY_CLASSES_ROOT subkeys */
LONG
WINAPI
OpenHKCRKey(
_In_ HKEY hKey,
_In_ LPCWSTR lpSubKey,
_In_ DWORD ulOptions,
_In_ REGSAM samDesired,
_In_ PHKEY phkResult)
{
HKEY QueriedKey;
LONG ErrorCode;
ASSERT(IsHKCRKey(hKey));
/* Remove the HKCR flag while we're working */
hKey = (HKEY)(((ULONG_PTR)hKey) & ~0x2);
ErrorCode = GetPreferredHKCRKey(hKey, &QueriedKey);
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* The key doesn't exist on HKCU side, no chance for a subkey */
ErrorCode = RegOpenKeyExW(hKey, lpSubKey, ulOptions, samDesired, phkResult);
if (ErrorCode == ERROR_SUCCESS)
MakeHKCRKey(phkResult);
return ErrorCode;
}
if (ErrorCode != ERROR_SUCCESS)
{
/* Somehow we failed for another reason (maybe deleted key or whatever) */
return ErrorCode;
}
/* Try on the HKCU side */
ErrorCode = RegOpenKeyExW(QueriedKey, lpSubKey, ulOptions, samDesired, phkResult);
if (ErrorCode == ERROR_SUCCESS)
MakeHKCRKey(phkResult);
/* Close it if we must */
if (QueriedKey != hKey)
{
RegCloseKey(QueriedKey);
}
/* Anything else than ERROR_FILE_NOT_FOUND means that we found it, even if it is with failures. */
if (ErrorCode != ERROR_FILE_NOT_FOUND)
return ErrorCode;
/* If we're here, we must open from HKLM key. */
ErrorCode = GetFallbackHKCRKey(hKey, &QueriedKey, FALSE);
if (ErrorCode != ERROR_SUCCESS)
{
/* Maybe the key doesn't exist in the HKLM view */
return ErrorCode;
}
ErrorCode = RegOpenKeyExW(QueriedKey, lpSubKey, ulOptions, samDesired, phkResult);
if (ErrorCode == ERROR_SUCCESS)
MakeHKCRKey(phkResult);
/* Close it if we must */
if (QueriedKey != hKey)
{
RegCloseKey(QueriedKey);
}
return ErrorCode;
}
/* HKCR version of RegDeleteKeyExW */
LONG
WINAPI
DeleteHKCRKey(
_In_ HKEY hKey,
_In_ LPCWSTR lpSubKey,
_In_ REGSAM RegSam,
_In_ DWORD Reserved)
{
HKEY QueriedKey;
LONG ErrorCode;
ASSERT(IsHKCRKey(hKey));
/* Remove the HKCR flag while we're working */
hKey = (HKEY)(((ULONG_PTR)hKey) & ~0x2);
ErrorCode = GetPreferredHKCRKey(hKey, &QueriedKey);
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* The key doesn't exist on HKCU side, no chance for a subkey */
return RegDeleteKeyExW(hKey, lpSubKey, RegSam, Reserved);
}
if (ErrorCode != ERROR_SUCCESS)
{
/* Somehow we failed for another reason (maybe deleted key or whatever) */
return ErrorCode;
}
ErrorCode = RegDeleteKeyExW(QueriedKey, lpSubKey, RegSam, Reserved);
/* Close it if we must */
if (QueriedKey != hKey)
{
/* The original key is on the machine view */
RegCloseKey(QueriedKey);
}
/* Anything else than ERROR_FILE_NOT_FOUND means that we found it, even if it is with failures. */
if (ErrorCode != ERROR_FILE_NOT_FOUND)
return ErrorCode;
/* If we're here, we must open from HKLM key. */
ErrorCode = GetFallbackHKCRKey(hKey, &QueriedKey, FALSE);
if (ErrorCode != ERROR_SUCCESS)
{
/* Maybe the key doesn't exist in the HKLM view */
return ErrorCode;
}
ErrorCode = RegDeleteKeyExW(QueriedKey, lpSubKey, RegSam, Reserved);
/* Close it if we must */
if (QueriedKey != hKey)
{
RegCloseKey(QueriedKey);
}
return ErrorCode;
}
/* HKCR version of RegQueryValueExW */
LONG
WINAPI
QueryHKCRValue(
_In_ HKEY hKey,
_In_ LPCWSTR Name,
_In_ LPDWORD Reserved,
_In_ LPDWORD Type,
_In_ LPBYTE Data,
_In_ LPDWORD Count)
{
HKEY QueriedKey;
LONG ErrorCode;
ASSERT(IsHKCRKey(hKey));
/* Remove the HKCR flag while we're working */
hKey = (HKEY)(((ULONG_PTR)hKey) & ~0x2);
ErrorCode = GetPreferredHKCRKey(hKey, &QueriedKey);
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* The key doesn't exist on HKCU side, no chance for a value in it */
return RegQueryValueExW(hKey, Name, Reserved, Type, Data, Count);
}
if (ErrorCode != ERROR_SUCCESS)
{
/* Somehow we failed for another reason (maybe deleted key or whatever) */
return ErrorCode;
}
ErrorCode = RegQueryValueExW(QueriedKey, Name, Reserved, Type, Data, Count);
/* Close it if we must */
if (QueriedKey != hKey)
{
/* The original key is on the machine view */
RegCloseKey(QueriedKey);
}
/* Anything else than ERROR_FILE_NOT_FOUND means that we found it, even if it is with failures. */
if (ErrorCode != ERROR_FILE_NOT_FOUND)
return ErrorCode;
/* If we're here, we must open from HKLM key. */
ErrorCode = GetFallbackHKCRKey(hKey, &QueriedKey, FALSE);
if (ErrorCode != ERROR_SUCCESS)
{
/* Maybe the key doesn't exist in the HKLM view */
return ErrorCode;
}
ErrorCode = RegQueryValueExW(QueriedKey, Name, Reserved, Type, Data, Count);
/* Close it if we must */
if (QueriedKey != hKey)
{
RegCloseKey(QueriedKey);
}
return ErrorCode;
}
/* HKCR version of RegSetValueExW */
LONG
WINAPI
SetHKCRValue(
_In_ HKEY hKey,
_In_ LPCWSTR Name,
_In_ DWORD Reserved,
_In_ DWORD Type,
_In_ CONST BYTE* Data,
_In_ DWORD DataSize)
{
HKEY QueriedKey;
LONG ErrorCode;
ASSERT(IsHKCRKey(hKey));
/* Remove the HKCR flag while we're working */
hKey = (HKEY)(((ULONG_PTR)hKey) & ~0x2);
ErrorCode = GetPreferredHKCRKey(hKey, &QueriedKey);
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* The key doesn't exist on HKCU side, no chance to put a value in it */
return RegSetValueExW(hKey, Name, Reserved, Type, Data, DataSize);
}
if (ErrorCode != ERROR_SUCCESS)
{
/* Somehow we failed for another reason (maybe deleted key or whatever) */
return ErrorCode;
}
/* Check if the value already exists in the preferred key */
ErrorCode = RegQueryValueExW(QueriedKey, Name, NULL, NULL, NULL, NULL);
if (ErrorCode != ERROR_FILE_NOT_FOUND)
{
if (ErrorCode == ERROR_SUCCESS)
{
/* Yes, so we have the right to modify it */
ErrorCode = RegSetValueExW(QueriedKey, Name, Reserved, Type, Data, DataSize);
}
if (QueriedKey != hKey)
RegCloseKey(QueriedKey);
return ErrorCode;
}
if (QueriedKey != hKey)
RegCloseKey(QueriedKey);
/* So we must set the value in the HKLM version */
ErrorCode = GetPreferredHKCRKey(hKey, &QueriedKey);
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* No choice: put this in HKCU */
return RegSetValueExW(hKey, Name, Reserved, Type, Data, DataSize);
}
else if (ErrorCode != ERROR_SUCCESS)
{
return ErrorCode;
}
ErrorCode = RegSetValueExW(QueriedKey, Name, Reserved, Type, Data, DataSize);
if (QueriedKey != hKey)
RegCloseKey(QueriedKey);
return ErrorCode;
}
/* HKCR version of RegEnumKeyExW */
LONG
WINAPI
EnumHKCRKey(
_In_ HKEY hKey,
_In_ DWORD dwIndex,
_Out_ LPWSTR lpName,
_Inout_ LPDWORD lpcbName,
_Reserved_ LPDWORD lpReserved,
_Out_opt_ LPWSTR lpClass,
_Inout_opt_ LPDWORD lpcbClass,
_Out_opt_ PFILETIME lpftLastWriteTime)
{
HKEY PreferredKey, FallbackKey;
DWORD NumPreferredSubKeys;
DWORD MaxFallbackSubKeyLen;
DWORD FallbackIndex;
WCHAR* FallbackSubKeyName = NULL;
LONG ErrorCode;
ASSERT(IsHKCRKey(hKey));
/* Remove the HKCR flag while we're working */
hKey = (HKEY)(((ULONG_PTR)hKey) & ~0x2);
/* Get the preferred key */
ErrorCode = GetPreferredHKCRKey(hKey, &PreferredKey);
if (ErrorCode != ERROR_SUCCESS)
{
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* Only the HKLM key exists */
return RegEnumKeyExW(
hKey,
dwIndex,
lpName,
lpcbName,
lpReserved,
lpClass,
lpcbClass,
lpftLastWriteTime);
}
return ErrorCode;
}
/* Get the fallback key */
ErrorCode = GetFallbackHKCRKey(hKey, &FallbackKey, FALSE);
if (ErrorCode != ERROR_SUCCESS)
{
if (PreferredKey != hKey)
RegCloseKey(PreferredKey);
if (ErrorCode == ERROR_FILE_NOT_FOUND)
{
/* Only the HKCU key exists */
return RegEnumKeyExW(
hKey,
dwIndex,
lpName,
lpcbName,
lpReserved,
lpClass,
lpcbClass,
lpftLastWriteTime);
}
return ErrorCode;
}
/* Get some info on the HKCU side */
ErrorCode = RegQueryInfoKeyW(
PreferredKey,
NULL,
NULL,
NULL,
&NumPreferredSubKeys,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
if (ErrorCode != ERROR_SUCCESS)
goto Exit;
if (dwIndex < NumPreferredSubKeys)
{
/* HKCU side takes precedence */
ErrorCode = RegEnumKeyExW(
PreferredKey,
dwIndex,
lpName,
lpcbName,
lpReserved,
lpClass,
lpcbClass,
lpftLastWriteTime);
goto Exit;
}
/* Here it gets tricky. We must enumerate the values from the HKLM side,
* without reporting those which are present on the HKCU side */
/* Squash out the indices from HKCU */
dwIndex -= NumPreferredSubKeys;
/* Get some info */
ErrorCode = RegQueryInfoKeyW(
FallbackKey,
NULL,
NULL,
NULL,
NULL,
&MaxFallbackSubKeyLen,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL);
if (ErrorCode != ERROR_SUCCESS)
{
ERR("Could not query info of key %p (Err: %d)\n", FallbackKey, ErrorCode);
goto Exit;
}
ERR("Maxfallbacksubkeylen: %d\n", MaxFallbackSubKeyLen);
/* Allocate our buffer */
FallbackSubKeyName = RtlAllocateHeap(
RtlGetProcessHeap(), 0, (MaxFallbackSubKeyLen + 1) * sizeof(WCHAR));
if (!FallbackSubKeyName)
{
ErrorCode = ERROR_NOT_ENOUGH_MEMORY;
goto Exit;
}
/* We must begin at the very first subkey of the fallback key,
* and then see if we meet keys that already are in the preferred key.
* In that case, we must bump dwIndex, as otherwise we would enumerate a key we already
* saw in a previous call.
*/
FallbackIndex = 0;
while (TRUE)
{
HKEY PreferredSubKey;
DWORD FallbackSubkeyLen = MaxFallbackSubKeyLen;
/* Try enumerating */
ErrorCode = RegEnumKeyExW(
FallbackKey,
FallbackIndex,
FallbackSubKeyName,
&FallbackSubkeyLen,
NULL,
NULL,
NULL,
NULL);
if (ErrorCode != ERROR_SUCCESS)
{
/* Most likely ERROR_NO_MORE_ITEMS */
ERR("Returning %d.\n", ErrorCode);
goto Exit;
}
FallbackSubKeyName[FallbackSubkeyLen] = L'\0';
/* See if there is such a value on HKCU side */
ErrorCode = RegOpenKeyExW(
PreferredKey,
FallbackSubKeyName,
0,
0,
&PreferredSubKey);
if (ErrorCode == ERROR_SUCCESS)
{
RegCloseKey(PreferredSubKey);
/* So we already enumerated it on HKCU side. */
dwIndex++;
}
else if (ErrorCode != ERROR_FILE_NOT_FOUND)
{
ERR("Got error %d while querying for %s on HKCU side.\n", ErrorCode, FallbackSubKeyName);
goto Exit;
}
/* See if we caught up */
if (FallbackIndex == dwIndex)
break;
FallbackIndex++;
}
/* We can finally enumerate on the fallback side */
ErrorCode = RegEnumKeyExW(
FallbackKey,
dwIndex,
lpName,
lpcbName,
lpReserved,
lpClass,
lpcbClass,
lpftLastWriteTime);
Exit:
if (PreferredKey != hKey)
RegCloseKey(PreferredKey);
if (FallbackKey != hKey)
RegCloseKey(FallbackKey);
if (FallbackSubKeyName)
RtlFreeHeap(RtlGetProcessHeap(), 0, FallbackSubKeyName);
return ErrorCode;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,86 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/advapi32/reg/reg.c
* PURPOSE: Registry functions
*/
#pragma once
/* FUNCTIONS ****************************************************************/
FORCEINLINE
BOOL
IsHKCRKey(_In_ HKEY hKey)
{
return ((ULONG_PTR)hKey & 0x2) != 0;
}
FORCEINLINE
void
MakeHKCRKey(_Inout_ HKEY* hKey)
{
*hKey = (HKEY)((ULONG_PTR)(*hKey) | 0x2);
}
LONG
WINAPI
CreateHKCRKey(
_In_ HKEY hKey,
_In_ LPCWSTR lpSubKey,
_In_ DWORD Reserved,
_In_opt_ LPWSTR lpClass,
_In_ DWORD dwOptions,
_In_ REGSAM samDesired,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_Out_ PHKEY phkResult,
_Out_opt_ LPDWORD lpdwDisposition);
LONG
WINAPI
OpenHKCRKey(
_In_ HKEY hKey,
_In_ LPCWSTR lpSubKey,
_In_ DWORD ulOptions,
_In_ REGSAM samDesired,
_In_ PHKEY phkResult);
LONG
WINAPI
DeleteHKCRKey(
_In_ HKEY hKey,
_In_ LPCWSTR lpSubKey,
_In_ REGSAM RegSam,
_In_ DWORD Reserved);
LONG
WINAPI
QueryHKCRValue(
_In_ HKEY hKey,
_In_ LPCWSTR Name,
_In_ LPDWORD Reserved,
_In_ LPDWORD Type,
_In_ LPBYTE Data,
_In_ LPDWORD Count);
LONG
WINAPI
SetHKCRValue(
_In_ HKEY hKey,
_In_ LPCWSTR Name,
_In_ DWORD Reserved,
_In_ DWORD Type,
_In_ CONST BYTE* Data,
_In_ DWORD DataSize);
LONG
WINAPI
EnumHKCRKey(
_In_ HKEY hKey,
_In_ DWORD dwIndex,
_Out_ LPWSTR lpName,
_Inout_ LPDWORD lpcbName,
_Reserved_ LPDWORD lpReserved,
_Out_opt_ LPWSTR lpClass,
_Inout_opt_ LPDWORD lpcbClass,
_Out_opt_ PFILETIME lpftLastWriteTime);

View file

@ -33,7 +33,7 @@ Onu değiştirmek ister misiniz?"
/ : < > |"
IDS_PATHNOTEXISTING "Kütük yolu yok."
IDS_FILENOTEXISTING "Kütük yok."
IDS_INVALID_FOLDERNAME "The selection contains a non-folder object"
IDS_INVALID_FOLDERNAME "Seçim dizin olmayan bir nesne içeriyor."
}
STRINGTABLE
@ -136,7 +136,7 @@ STRINGTABLE
IDS_SAVE "Sakla"
IDS_SAVE_AS "Ayrı Sakla"
IDS_OPEN_FILE "Kütük Aç"
IDS_SELECT_FOLDER "Select Folder"
IDS_SELECT_FOLDER "Dizin Seç"
}
/*

View file

@ -148,7 +148,7 @@ STRINGTABLE
IDS_KEY_PACK_LICENSES "Anahtar Paketi Rusatları"
IDS_LICENSE_SERVER "Ruhsat Sunucusu Doğrulaması"
IDS_SMART_CARD_LOGON "Akıllı Kartla Oturum Açma"
IDS_DIGITAL_RIGHTS "Sayılık Hakları"
IDS_DIGITAL_RIGHTS "Sayılık Yetkileri"
IDS_QUALIFIED_SUBORDINATION "Nitelikli Bağlılık"
IDS_KEY_RECOVERY "Anahtar Kurtarma"
IDS_DOCUMENT_SIGNING "Belge İmzâlama"

View file

@ -136,7 +136,7 @@ STRINGTABLE
IDS_PURPOSE_KEY_RECOVERY "Anahtar Kurtarma"
IDS_PURPOSE_DOCUMENT_SIGNING "Belge İmzâlama"
IDS_PURPOSE_LIFETIME_SIGNING "Yaşam Boyu İmzâlama"
IDS_PURPOSE_DRM "Sayılık Hakları"
IDS_PURPOSE_DRM "Sayılık Yetkileri"
IDS_PURPOSE_LICENSES "Anahtar Paketi Ruhsatları"
IDS_PURPOSE_LICENSE_SERVER "Ruhsat Sunucusu Doğrulaması"
IDS_PURPOSE_ENROLLMENT_AGENT "Onay Belgesi İstek Yardımcısı"

View file

@ -40,7 +40,7 @@ STRINGTABLE
BEGIN
IDS_DEV_NO_PROBLEM "Bu aygıt düzgün çalışıyor."
IDS_DEV_NOT_CONFIGURED "Bu aygıt doğru yapılandırılmamış."
IDS_DEV_DEVLOADER_FAILED "Bilgisayar, iki %1 veri yolu türü bildirdiğinden dolayı ReactOS bu aygıt için sürücüyü yükleyemedi."
IDS_DEV_DEVLOADER_FAILED "Bilgisayar, iki %1 veriyolu türü bildirdiğinden dolayı ReactOS bu aygıt için sürücüyü yükleyemedi."
IDS_DEV_DEVLOADER_FAILED2 "Bu aygıt için %1 aygıt yükleyicisi/yükleyicileri aygıt sürücüsünü yükleyemedi."
IDS_DEV_OUT_OF_MEMORY "Bu aygıt için sürücü kötü olabilir veyâ dizgeniz, bellekte veyâ başka kaynaklarda yavaş çalışıyor olabilir."
IDS_DEV_ENTRY_IS_WRONG_TYPE "Sürücülerinin kötü olabilmesinden veyâ değer defterinizin bozuk olabilmesinden dolayı bu aygıt düzgün çalışmıyor."
@ -111,7 +111,7 @@ BEGIN
IDS_PROP_CSCONFIGFLAGS "CSConfig İmleri"
IDS_PROP_EJECTIONRELATIONS "Çıkarma İlişkileri"
IDS_PROP_REMOVALRELATIONS "Kaldırma İlişkileri"
IDS_PROP_BUSRELATIONS "Veri Yolu İlişkileri"
IDS_PROP_BUSRELATIONS "Veriyolu İlişkileri"
IDS_PROP_DEVUPPERFILTERS "Üst Aygıt Süzgeçleri"
IDS_PROP_DEVLOWERFILTERS "Alt Aygıt Süzgeçleri"
IDS_PROP_CLASSUPPERFILTERS "Üst Sınıf Süzgeçleri"

View file

@ -1,11 +1,7 @@
set_cpp(WITH_RUNTIME WITH_EXCEPTIONS)
if(NOT MSVC)
spec2def(framedyn.dll framedyn_gcc.spec ADD_IMPORTLIB)
else()
spec2def(framedyn.dll framedyn_msvc.spec ADD_IMPORTLIB)
endif()
spec2def(framedyn.dll framedyn.spec ADD_IMPORTLIB)
list(APPEND SOURCE
main.c
@ -13,18 +9,16 @@ list(APPEND SOURCE
${CMAKE_CURRENT_BINARY_DIR}/framedyn.def)
if(MSVC)
add_asm_files(framedyn_asm fix_exports_msvc.s)
add_compile_flags("/Zc:wchar_t-")
endif()
add_library(framedyn SHARED ${SOURCE} ${framedyn_asm})
add_library(framedyn SHARED ${SOURCE})
set_module_type(framedyn win32dll UNICODE)
add_importlibs(framedyn oleaut32 msvcrt kernel32 ntdll)
add_cd_file(TARGET framedyn DESTINATION reactos/system32/wbem FOR all)
if(MSVC)
add_asm_files(framedynex_asm alias_msvc.s)
else()
if(NOT MSVC)
add_asm_files(framedynex_asm alias_gcc.s)
endif()
add_library(framedynex ${framedynex_asm})

View file

@ -24,6 +24,7 @@ DEFINE_ALIAS(__ZN8CHStringC1EPKw, ??0CHString@@QAE@PBG@Z)
DEFINE_ALIAS(__ZN8CHStringC1EPKwi, ??0CHString@@QAE@PBGH@Z)
DEFINE_ALIAS(__ZN8CHStringC1Ewi, ??0CHString@@QAE@GH@Z)
DEFINE_ALIAS(__ZN8CHStringC1Ev, ??0CHString@@QAE@XZ)
DEFINE_ALIAS(__ZN8CHStringC2Ev, ??0CHString@@QAE@XZ) // CHString::CHString(void)
DEFINE_ALIAS(__ZNK8CHString7CollateEPKw, ?Collate@CHString@@QBEHPBG@Z)
DEFINE_ALIAS(__ZNK8CHString7CompareEPKw, ?Compare@CHString@@QBEHPBG@Z)
DEFINE_ALIAS(__ZNK8CHString13CompareNoCaseEPKw, ?CompareNoCase@CHString@@QBEHPBG@Z)
@ -62,7 +63,7 @@ DEFINE_ALIAS(__ZN8CHString7ReleaseEv, ?Release@CHString@@IAEXXZ)
DEFINE_ALIAS(__ZN8CHString13ReleaseBufferEi, ?ReleaseBuffer@CHString@@QAEXH@Z)
DEFINE_ALIAS(__ZNK8CHString11ReverseFindEw, ?ReverseFind@CHString@@QBEHG@Z)
DEFINE_ALIAS(__ZNK8CHString5RightEi, ?Right@CHString@@QBE?AV1@H@Z)
DEFINE_ALIAS(__ZN8CHString10SafeStrlenEPKw, ?SafeStrlen@CHString@@KGHPBG@Z)
DEFINE_ALIAS(__ZN8CHString10SafeStrlenEPKw@4, ?SafeStrlen@CHString@@KGHPBG@Z)
DEFINE_ALIAS(__ZN8CHString5SetAtEiw, ?SetAt@CHString@@QAEXHG@Z)
DEFINE_ALIAS(__ZNK8CHString13SpanExcludingEPKw, ?SpanExcluding@CHString@@QBE?AV1@PBG@Z)
DEFINE_ALIAS(__ZNK8CHString13SpanIncludingEPKw, ?SpanIncluding@CHString@@QBE?AV1@PBG@Z)
@ -82,7 +83,8 @@ DEFINE_ALIAS(__ZN8CHStringaSEPKh, ??4CHString@@QAEABV0@PBE@Z)
DEFINE_ALIAS(__ZN8CHStringaSEPKw, ??4CHString@@QAEABV0@PBG@Z)
DEFINE_ALIAS(__ZN8CHStringaSEw, ??4CHString@@QAEABV0@G@Z)
DEFINE_ALIAS(__ZNK8CHStringixEi, ??ACHString@@QBEGH@Z)
DEFINE_ALIAS(__ZN8CHStringD1Ev, ??1CHString@@QAE@XZ)
DEFINE_ALIAS(__ZN8CHStringD1Ev, ??1CHString@@QAE@XZ) // CHString::~CHString() complete object destructor
DEFINE_ALIAS(__ZN8CHStringD2Ev, ??1CHString@@QAE@XZ) // CHString::~CHString() base object destructor
DEFINE_ALIAS(__ZplwRK8CHString, ??H@YG?AVCHString@@GABV0@@Z)
DEFINE_ALIAS(__ZplRK8CHStringw, ??H@YG?AVCHString@@ABV0@G@Z)
DEFINE_ALIAS(__ZplRK8CHStringPKw, ??H@YG?AVCHString@@ABV0@PBG@Z)

View file

@ -1,48 +0,0 @@
#include <asm.inc>
.code64
.align 4
MACRO(DEFINE_ALIAS, alias, orig)
EXTERN &orig:ABS
ALIAS <&alias> = <&orig>
ENDM
DEFINE_ALIAS ?AllocSysString@CHString@@QBEPA_WXZ, ?AllocSysString@CHString@@QBEPAGXZ
DEFINE_ALIAS ?AssignCopy@CHString@@IAEXHPB_W@Z, ?AssignCopy@CHString@@IAEXHPBG@Z
DEFINE_ALIAS ??0CHString@@QAE@PB_W@Z, ??0CHString@@QAE@PBG@Z
DEFINE_ALIAS ??0CHString@@QAE@PB_WH@Z, ??0CHString@@QAE@PBGH@Z
DEFINE_ALIAS ??0CHString@@QAE@_WH@Z, ??0CHString@@QAE@GH@Z
DEFINE_ALIAS ?Collate@CHString@@QBEHPB_W@Z, ?Collate@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?Compare@CHString@@QBEHPB_W@Z, ?Compare@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?CompareNoCase@CHString@@QBEHPB_W@Z, ?CompareNoCase@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?ConcatCopy@CHString@@IAEXHPB_WH0@Z, ?ConcatCopy@CHString@@IAEXHPBGH0@Z
DEFINE_ALIAS ?ConcatInPlace@CHString@@IAEXHPB_W@Z, ?ConcatInPlace@CHString@@IAEXHPBG@Z
DEFINE_ALIAS ?Find@CHString@@QBEHPB_W@Z, ?Find@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?Find@CHString@@QBEH_W@Z, ?Find@CHString@@QBEHG@Z
DEFINE_ALIAS ?FindOneOf@CHString@@QBEHPB_W@Z, ?FindOneOf@CHString@@QBEHPBG@Z
DEFINE_ALIAS ?Format@CHString@@QAAXPB_WZZ, ?Format@CHString@@QAAXPBGZZ
DEFINE_ALIAS ?FormatMessageW@CHString@@QAAXPB_WZZ, ?FormatMessageW@CHString@@QAAXPBGZZ
DEFINE_ALIAS ?FormatV@CHString@@QAEXPB_WPAD@Z, ?FormatV@CHString@@QAEXPBGPAD@Z
DEFINE_ALIAS ?GetAt@CHString@@QBE_WH@Z, ?GetAt@CHString@@QBEGH@Z
DEFINE_ALIAS ?GetBuffer@CHString@@QAEPA_WH@Z, ?GetBuffer@CHString@@QAEPAGH@Z
DEFINE_ALIAS ?GetBufferSetLength@CHString@@QAEPA_WH@Z, ?GetBufferSetLength@CHString@@QAEPAGH@Z
DEFINE_ALIAS ?LoadStringW@CHString@@IAEHIPA_WI@Z, ?LoadStringW@CHString@@IAEHIPAGI@Z
DEFINE_ALIAS ?LockBuffer@CHString@@QAEPA_WXZ, ?LockBuffer@CHString@@QAEPAGXZ
DEFINE_ALIAS ?ReverseFind@CHString@@QBEH_W@Z, ?ReverseFind@CHString@@QBEHG@Z
DEFINE_ALIAS ?SafeStrlen@CHString@@KGHPB_W@Z, ?SafeStrlen@CHString@@KGHPBG@Z
DEFINE_ALIAS ?SetAt@CHString@@QAEXH_W@Z, ?SetAt@CHString@@QAEXHG@Z
DEFINE_ALIAS ?SpanExcluding@CHString@@QBE?AV1@PB_W@Z, ?SpanExcluding@CHString@@QBE?AV1@PBG@Z
DEFINE_ALIAS ?SpanIncluding@CHString@@QBE?AV1@PB_W@Z, ?SpanIncluding@CHString@@QBE?AV1@PBG@Z
DEFINE_ALIAS ??BCHString@@QBEPB_WXZ, ??BCHString@@QBEPBGXZ
DEFINE_ALIAS ??YCHString@@QAEABV0@PB_W@Z, ??YCHString@@QAEABV0@PBG@Z
DEFINE_ALIAS ??YCHString@@QAEABV0@_W@Z, ??YCHString@@QAEABV0@G@Z
DEFINE_ALIAS ??4CHString@@QAEABV0@PB_W@Z, ??4CHString@@QAEABV0@PBG@Z
DEFINE_ALIAS ??4CHString@@QAEABV0@_W@Z, ??4CHString@@QAEABV0@G@Z
DEFINE_ALIAS ??ACHString@@QBE_WH@Z, ??ACHString@@QBEGH@Z
DEFINE_ALIAS ??H@YG?AVCHString@@_WABV0@@Z, ??H@YG?AVCHString@@GABV0@@Z
DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@_W@Z, ??H@YG?AVCHString@@ABV0@G@Z
DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@PB_W@Z, ??H@YG?AVCHString@@ABV0@PBG@Z
DEFINE_ALIAS ??H@YG?AVCHString@@PB_WABV0@@Z, ??H@YG?AVCHString@@PBGABV0@@Z
END

View file

@ -1,48 +0,0 @@
#include <asm.inc>
.code64
.align 4
MACRO(DEFINE_ALIAS, alias, orig)
EXTERN &orig:ABS
ALIAS <&alias> = <&orig>
ENDM
DEFINE_ALIAS ?AllocSysString@CHString@@QBEPAGXZ, ?AllocSysString@CHString@@QBEPA_WXZ
DEFINE_ALIAS ?AssignCopy@CHString@@IAEXHPBG@Z, ?AssignCopy@CHString@@IAEXHPB_W@Z
DEFINE_ALIAS ??0CHString@@QAE@PBG@Z, ??0CHString@@QAE@PB_W@Z
DEFINE_ALIAS ??0CHString@@QAE@PBGH@Z, ??0CHString@@QAE@PB_WH@Z
DEFINE_ALIAS ??0CHString@@QAE@GH@Z, ??0CHString@@QAE@_WH@Z
DEFINE_ALIAS ?Collate@CHString@@QBEHPBG@Z, ?Collate@CHString@@QBEHPB_W@Z
DEFINE_ALIAS ?Compare@CHString@@QBEHPBG@Z, ?Compare@CHString@@QBEHPB_W@Z
DEFINE_ALIAS ?CompareNoCase@CHString@@QBEHPBG@Z, ?CompareNoCase@CHString@@QBEHPB_W@Z
DEFINE_ALIAS ?ConcatCopy@CHString@@IAEXHPBGH0@Z, ?ConcatCopy@CHString@@IAEXHPB_WH0@Z
DEFINE_ALIAS ?ConcatInPlace@CHString@@IAEXHPBG@Z, ?ConcatInPlace@CHString@@IAEXHPB_W@Z
DEFINE_ALIAS ?Find@CHString@@QBEHPBG@Z, ?Find@CHString@@QBEHPB_W@Z
DEFINE_ALIAS ?Find@CHString@@QBEHG@Z, ?Find@CHString@@QBEH_W@Z
DEFINE_ALIAS ?FindOneOf@CHString@@QBEHPBG@Z, ?FindOneOf@CHString@@QBEHPB_W@Z
DEFINE_ALIAS ?Format@CHString@@QAAXPBGZZ, ?Format@CHString@@QAAXPB_WZZ
DEFINE_ALIAS ?FormatMessageW@CHString@@QAAXPBGZZ, ?FormatMessageW@CHString@@QAAXPB_WZZ
DEFINE_ALIAS ?FormatV@CHString@@QAEXPBGPAD@Z, ?FormatV@CHString@@QAEXPB_WPAD@Z
DEFINE_ALIAS ?GetAt@CHString@@QBEGH@Z, ?GetAt@CHString@@QBE_WH@Z
DEFINE_ALIAS ?GetBuffer@CHString@@QAEPAGH@Z, ?GetBuffer@CHString@@QAEPA_WH@Z
DEFINE_ALIAS ?GetBufferSetLength@CHString@@QAEPAGH@Z, ?GetBufferSetLength@CHString@@QAEPA_WH@Z
DEFINE_ALIAS ?LoadStringW@CHString@@IAEHIPAGI@Z, ?LoadStringW@CHString@@IAEHIPA_WI@Z
DEFINE_ALIAS ?LockBuffer@CHString@@QAEPAGXZ, ?LockBuffer@CHString@@QAEPA_WXZ
DEFINE_ALIAS ?ReverseFind@CHString@@QBEHG@Z, ?ReverseFind@CHString@@QBEH_W@Z
DEFINE_ALIAS ?SafeStrlen@CHString@@KGHPBG@Z, ?SafeStrlen@CHString@@KGHPB_W@Z
DEFINE_ALIAS ?SetAt@CHString@@QAEXHG@Z, ?SetAt@CHString@@QAEXH_W@Z
DEFINE_ALIAS ?SpanExcluding@CHString@@QBE?AV1@PBG@Z, ?SpanExcluding@CHString@@QBE?AV1@PB_W@Z
DEFINE_ALIAS ?SpanIncluding@CHString@@QBE?AV1@PBG@Z, ?SpanIncluding@CHString@@QBE?AV1@PB_W@Z
DEFINE_ALIAS ??BCHString@@QBEPBGXZ, ??BCHString@@QBEPB_WXZ
DEFINE_ALIAS ??YCHString@@QAEABV0@PBG@Z, ??YCHString@@QAEABV0@PB_W@Z
DEFINE_ALIAS ??YCHString@@QAEABV0@G@Z, ??YCHString@@QAEABV0@_W@Z
DEFINE_ALIAS ??4CHString@@QAEABV0@PBG@Z, ??4CHString@@QAEABV0@PB_W@Z
DEFINE_ALIAS ??4CHString@@QAEABV0@G@Z, ??4CHString@@QAEABV0@_W@Z
DEFINE_ALIAS ??ACHString@@QBEGH@Z, ??ACHString@@QBE_WH@Z
DEFINE_ALIAS ??H@YG?AVCHString@@GABV0@@Z, ??H@YG?AVCHString@@_WABV0@@Z
DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@G@Z, ??H@YG?AVCHString@@ABV0@_W@Z
DEFINE_ALIAS ??H@YG?AVCHString@@ABV0@PBG@Z, ??H@YG?AVCHString@@ABV0@PB_W@Z
DEFINE_ALIAS ??H@YG?AVCHString@@PBGABV0@@Z, ??H@YG?AVCHString@@PB_WABV0@@Z
END

View file

@ -68,7 +68,7 @@
@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr) _ZN8CHStringaSEPKw
@ thiscall ??4CHString@@QAEABV0@G@Z(long) _ZN8CHStringaSEw
@ thiscall ??ACHString@@QBEGH@Z(long) _ZNK8CHStringixEi
@ thiscall ??1CHString@@QAE@XZ() _ZN8CHStringD1Ev
@ thiscall ??1CHString@@QAE@XZ() _ZN8CHStringD1Ev # complete object destructor, identical to _ZN8CHStringD2Ev aka base object destructor
@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr) _ZplwRK8CHString
@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long) _ZplRK8CHStringw
@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr) _ZplRK8CHStringPKw

View file

@ -1,76 +0,0 @@
@ thiscall ?AllocBeforeWrite@CHString@@IAEXH@Z(long)
@ thiscall ?AllocBuffer@CHString@@IAEXH@Z(long)
@ thiscall ?AllocCopy@CHString@@IBEXAAV1@HHH@Z(ptr long long long)
@ thiscall ?AllocSysString@CHString@@QBEPAGXZ()
@ thiscall ?AssignCopy@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ??0CHString@@QAE@ABV0@@Z(ptr)
@ thiscall ??0CHString@@QAE@PBD@Z(str)
@ thiscall ??0CHString@@QAE@PBE@Z(str)
@ thiscall ??0CHString@@QAE@PBG@Z(wstr)
@ thiscall ??0CHString@@QAE@PBGH@Z(wstr long)
@ thiscall ??0CHString@@QAE@GH@Z(long long)
@ thiscall ??0CHString@@QAE@XZ()
@ thiscall ?Collate@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Compare@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?CompareNoCase@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?ConcatCopy@CHString@@IAEXHPBGH0@Z(long wstr long wstr)
@ thiscall ?ConcatInPlace@CHString@@IAEXHPBG@Z(long wstr)
@ thiscall ?CopyBeforeWrite@CHString@@IAEXXZ()
@ thiscall ?Empty@CHString@@QAEXXZ()
@ thiscall ?Find@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Find@CHString@@QBEHG@Z(long)
@ thiscall ?FindOneOf@CHString@@QBEHPBG@Z(wstr)
@ thiscall ?Format@CHString@@QAAXIZZ(long long long)
@ thiscall ?Format@CHString@@QAAXPBGZZ(long wstr long)
@ thiscall ?FormatMessageW@CHString@@QAAXIZZ(long long long)
@ thiscall ?FormatMessageW@CHString@@QAAXPBGZZ(long ptr long)
@ thiscall ?FormatV@CHString@@QAEXPBGPAD@Z(wstr long)
@ thiscall ?FreeExtra@CHString@@QAEXXZ()
@ thiscall ?GetAllocLength@CHString@@QBEHXZ()
@ thiscall ?GetAt@CHString@@QBEGH@Z(long)
@ thiscall ?GetBuffer@CHString@@QAEPAGH@Z(long)
@ thiscall ?GetBufferSetLength@CHString@@QAEPAGH@Z(long)
@ thiscall ?GetData@CHString@@IBEPAUCHStringData@@XZ()
@ thiscall ?GetLength@CHString@@QBEHXZ()
@ thiscall ?Init@CHString@@IAEXXZ()
@ thiscall ?IsEmpty@CHString@@QBEHXZ()
@ thiscall ?Left@CHString@@QBE?AV1@H@Z(long)
@ thiscall ?LoadStringW@CHString@@QAEHI@Z(long)
@ thiscall ?LoadStringW@CHString@@IAEHIPAGI@Z(long wstr long)
@ thiscall ?LockBuffer@CHString@@QAEPAGXZ()
@ thiscall ?MakeLower@CHString@@QAEXXZ()
@ thiscall ?MakeReverse@CHString@@QAEXXZ()
@ thiscall ?MakeUpper@CHString@@QAEXXZ()
@ thiscall ?Mid@CHString@@QBE?AV1@H@Z(long)
@ thiscall ?Mid@CHString@@QBE?AV1@HH@Z(long long)
@ thiscall ?Release@CHString@@KGXPAUCHStringData@@@Z(ptr)
@ thiscall ?Release@CHString@@IAEXXZ()
@ thiscall ?ReleaseBuffer@CHString@@QAEXH@Z(long)
@ thiscall ?ReverseFind@CHString@@QBEHG@Z(long)
@ thiscall ?Right@CHString@@QBE?AV1@H@Z(long)
@ stdcall ?SafeStrlen@CHString@@KGHPBG@Z(wstr)
@ thiscall ?SetAt@CHString@@QAEXHG@Z(long long)
@ thiscall ?SpanExcluding@CHString@@QBE?AV1@PBG@Z(long wstr)
@ thiscall ?SpanIncluding@CHString@@QBE?AV1@PBG@Z(long wstr)
@ thiscall ?TrimLeft@CHString@@QAEXXZ()
@ thiscall ?TrimRight@CHString@@QAEXXZ()
@ thiscall ?UnlockBuffer@CHString@@QAEXXZ()
@ thiscall ??BCHString@@QBEPBGXZ(ptr)
@ thiscall ??YCHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??YCHString@@QAEABV0@D@Z(long)
@ thiscall ??YCHString@@QAEABV0@PBG@Z(wstr)
@ thiscall ??YCHString@@QAEABV0@G@Z(long)
@ thiscall ??4CHString@@QAEABV0@PAV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@ABV0@@Z(ptr)
@ thiscall ??4CHString@@QAEABV0@PBD@Z(str)
@ thiscall ??4CHString@@QAEABV0@D@Z(long)
@ thiscall ??4CHString@@QAEABV0@PBE@Z(str)
@ thiscall ??4CHString@@QAEABV0@PBG@Z(wstr)
@ thiscall ??4CHString@@QAEABV0@G@Z(long)
@ thiscall ??ACHString@@QBEGH@Z(long)
@ thiscall ??1CHString@@QAE@XZ()
@ stdcall ??H@YG?AVCHString@@GABV0@@Z(long ptr)
@ stdcall ??H@YG?AVCHString@@ABV0@G@Z(ptr long)
@ stdcall ??H@YG?AVCHString@@ABV0@PBG@Z(ptr wstr)
@ stdcall ??H@YG?AVCHString@@PBGABV0@@Z(wstr ptr)
@ stdcall ??H@YG?AVCHString@@ABV0@0@Z(ptr ptr)

View file

@ -28,8 +28,8 @@ BEGIN
IDS_SEARCH "&Ara"
IDS_FAVORITES "&Yer İmleri"
IDS_HIDETABS "Hide &Tabs"
IDS_SHOWTABS "Show &Tabs"
IDS_HIDETABS "&Sekmeleri Gizle"
IDS_SHOWTABS "&Sekmeleri Göster"
END
STRINGTABLE
@ -51,12 +51,12 @@ MENU_POPUP MENU
POPUP "" /* Options */
{
MENUITEM "", IDTB_EXPAND
MENUITEM "S&ync", IDTB_SYNC
MENUITEM "&Back", IDTB_BACK
MENUITEM "&Forward", IDTB_FORWARD
MENUITEM "&Home", IDTB_HOME
MENUITEM "&Stop", IDTB_STOP
MENUITEM "&Refresh", IDTB_REFRESH
MENUITEM "&Print...", IDTB_PRINT
MENUITEM "&Eşitle", IDTB_SYNC
MENUITEM "&Geri", IDTB_BACK
MENUITEM "&İleri", IDTB_FORWARD
MENUITEM "E&v", IDTB_HOME
MENUITEM "&Dur", IDTB_STOP
MENUITEM "&Yenile", IDTB_REFRESH
MENUITEM "Y&azdır...", IDTB_PRINT
}
}

View file

@ -27,6 +27,7 @@ list(APPEND hnetcfg_rc_deps
set_source_files_properties(hnetcfg.rc PROPERTIES OBJECT_DEPENDS "${hnetcfg_rc_deps}")
set_module_type(hnetcfg win32dll)
add_dependencies(hnetcfg stdole2)
target_link_libraries(hnetcfg wine uuid)
add_importlibs(hnetcfg ole32 oleaut32 advapi32 msvcrt kernel32 ntdll)
add_pch(hnetcfg hnetcfg_private.h SOURCE)

View file

@ -24,4 +24,5 @@ set_module_type(itss win32dll)
target_link_libraries(itss uuid wine)
add_importlibs(itss urlmon shlwapi ole32 msvcrt kernel32 ntdll)
add_pch(itss precomp.h SOURCE)
add_dependencies(itss wineheaders)
add_cd_file(TARGET itss DESTINATION reactos/system32 FOR all)

View file

@ -22,24 +22,24 @@ STRINGTABLE
{
IDS_TO_PRIMITIVE "Nesneyi ilk türe dönüştürmede yanlışlık."
IDS_INVALID_CALL_ARG "Geçersiz yordam çağrısı ya da geçersiz yordam değiştirgeni."
IDS_SUBSCRIPT_OUT_OF_RANGE "Subscript out of range"
IDS_OBJECT_REQUIRED "Object required"
IDS_SUBSCRIPT_OUT_OF_RANGE "Alt indis aralık dışında."
IDS_OBJECT_REQUIRED "Nesne gerekli."
IDS_CREATE_OBJ_ERROR "Öz devinim sunucusu nesne oluşturamıyor."
IDS_NO_PROPERTY "Nesne bu husûsiyeti/yöntemi desteklemiyor."
IDS_UNSUPPORTED_ACTION "Object doesn't support this action"
IDS_UNSUPPORTED_ACTION "Nesne bu işlemi desteklemiyor."
IDS_ARG_NOT_OPT "Değiştirgen seçimlik değil."
IDS_SYNTAX_ERROR "Söz dizimi yanlışlığı."
IDS_SEMICOLON """;"" bekleniyordu."
IDS_LBRACKET """("" bekleniyordu."
IDS_RBRACKET """)"" bekleniyordu."
IDS_INVALID_CHAR "Invalid character"
IDS_INVALID_CHAR "Geçersiz damga."
IDS_UNTERMINATED_STR "Sonlandırılmamış dizgi değişmezi."
IDS_MISPLACED_RETURN "'return' statement outside of function"
IDS_INVALID_BREAK "Can't have 'break' outside of loop"
IDS_INVALID_CONTINUE "Can't have 'continue' outside of loop"
IDS_LABEL_REDEFINED "Label redefined"
IDS_LABEL_NOT_FOUND "Label not found"
IDS_DISABLED_CC "Conditional compilation is turned off"
IDS_MISPLACED_RETURN """return"" deyişi işlecin dışında."
IDS_INVALID_BREAK "Döngü dışında ""break"" olamaz."
IDS_INVALID_CONTINUE "Döngü dışında ""continue"" olamaz."
IDS_LABEL_REDEFINED "Etiket yeniden tanımlandı."
IDS_LABEL_NOT_FOUND "Etiket bulunamadı."
IDS_DISABLED_CC "Koşullu derleme kapalı."
IDS_NOT_FUNC "İşleç bekleniyordu."
IDS_NOT_DATE """[nesne]"" bir zaman nesnesi değil."
IDS_NOT_NUM "Sayı bekleniyordu."
@ -47,14 +47,14 @@ STRINGTABLE
IDS_ILLEGAL_ASSIGN "Geçersiz atama."
IDS_UNDEFINED """|"" tanımlı değil."
IDS_NOT_BOOL "Boole nesnesi bekleniyordu."
IDS_INVALID_DELETE "Cannot delete '|'"
IDS_NOT_VBARRAY "VBArray object expected"
IDS_INVALID_DELETE """|"" silinemez."
IDS_NOT_VBARRAY "VBArray nesnesi bekleniyordu."
IDS_JSCRIPT_EXPECTED "JScript nesnesi bekleniyordu."
IDS_REGEXP_SYNTAX_ERROR "Düzenli deyişte söz dizimi yanlışlığı."
IDS_URI_INVALID_CODING "URI to be decoded is incorrect"
IDS_URI_INVALID_CODING "Çözülecek URI geçersiz."
IDS_URI_INVALID_CHAR "Kodlanacak URI geçersiz damgalar içeriyor."
IDS_FRACTION_DIGITS_OUT_OF_RANGE "Number of fraction digits is out of range"
IDS_PRECISION_OUT_OF_RANGE "Precision is out of range"
IDS_FRACTION_DIGITS_OUT_OF_RANGE "Kesir basamaklarının sayısı aralık dışında."
IDS_PRECISION_OUT_OF_RANGE "Duyarlılık aralık dışında."
IDS_INVALID_LENGTH "Dizi büyüklüğü bir sonlu artı tam sayı olmalı."
IDS_ARRAY_EXPECTED "Dizi nesnesi bekleniyordu."
}

View file

@ -314,8 +314,6 @@ LsapGetLogonSessionData(IN OUT PLSA_API_MSG RequestMsg)
goto done;
}
//TRACE("MemSize: %lu\n", MemSize);
MemSize = Length;
Status = NtAllocateVirtualMemory(ProcessHandle,
&ClientBaseAddress,

View file

@ -15,6 +15,7 @@ list(APPEND SOURCE
add_library(msacm32 SHARED
${SOURCE}
msacm.rc
${CMAKE_CURRENT_BINARY_DIR}/msacm32.def)
set_module_type(msacm32 win32dll ENTRYPOINT DllMain 12 UNICODE)

View file

@ -1,12 +0,0 @@
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = imaadp32.acm
IMPORTS = winmm user32 kernel32
C_SRCS = imaadp32.c
@MAKE_DLL_RULES@
### Dependencies:

View file

@ -1 +0,0 @@
@ stdcall DriverProc (long long long long long) ADPCM_DriverProc

View file

@ -1,938 +0,0 @@
/*
* IMA ADPCM handling
*
* Copyright (C) 2001,2002 Eric Pouech
*
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <assert.h>
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "winnls.h"
#include "mmsystem.h"
#include "mmreg.h"
#include "msacm.h"
#include "msacmdrv.h"
#include "wine/debug.h"
/* see http://www.pcisys.net/~melanson/codecs/adpcm.txt for the details */
WINE_DEFAULT_DEBUG_CHANNEL(adpcm);
/***********************************************************************
* ADPCM_drvOpen
*/
static DWORD ADPCM_drvOpen(LPCSTR str)
{
return 1;
}
/***********************************************************************
* ADPCM_drvClose
*/
static DWORD ADPCM_drvClose(DWORD dwDevID)
{
return 1;
}
typedef struct tagAcmAdpcmData
{
void (*convert)(PACMDRVSTREAMINSTANCE adsi,
const unsigned char*, LPDWORD, unsigned char*, LPDWORD);
/* IMA encoding only */
BYTE stepIndexL;
BYTE stepIndexR;
/* short sample; */
} AcmAdpcmData;
/* table to list all supported formats... those are the basic ones. this
* also helps given a unique index to each of the supported formats
*/
typedef struct
{
int nChannels;
int nBits;
int rate;
} Format;
static Format PCM_Formats[] =
{
{1, 8, 8000}, {2, 8, 8000}, {1, 16, 8000}, {2, 16, 8000},
{1, 8, 11025}, {2, 8, 11025}, {1, 16, 11025}, {2, 16, 11025},
{1, 8, 22050}, {2, 8, 22050}, {1, 16, 22050}, {2, 16, 22050},
{1, 8, 44100}, {2, 8, 44100}, {1, 16, 44100}, {2, 16, 44100},
};
static Format ADPCM_Formats[] =
{
{1, 4, 8000}, {2, 4, 8000}, {1, 4, 11025}, {2, 4, 11025},
{1, 4, 22050}, {2, 4, 22050}, {1, 4, 44100}, {2, 4, 44100},
};
#define NUM_PCM_FORMATS (sizeof(PCM_Formats) / sizeof(PCM_Formats[0]))
#define NUM_ADPCM_FORMATS (sizeof(ADPCM_Formats) / sizeof(ADPCM_Formats[0]))
/***********************************************************************
* ADPCM_GetFormatIndex
*/
static DWORD ADPCM_GetFormatIndex(LPWAVEFORMATEX wfx)
{
int i, hi;
Format* fmts;
switch (wfx->wFormatTag)
{
case WAVE_FORMAT_PCM:
hi = NUM_PCM_FORMATS;
fmts = PCM_Formats;
break;
case WAVE_FORMAT_IMA_ADPCM:
hi = NUM_ADPCM_FORMATS;
fmts = ADPCM_Formats;
break;
default:
return 0xFFFFFFFF;
}
for (i = 0; i < hi; i++)
{
if (wfx->nChannels == fmts[i].nChannels &&
wfx->nSamplesPerSec == fmts[i].rate &&
wfx->wBitsPerSample == fmts[i].nBits)
return i;
}
return 0xFFFFFFFF;
}
/***********************************************************************
* R16
*
* Read a 16 bit sample (correctly handles endianess)
*/
static inline short R16(const unsigned char* src)
{
return (short)((unsigned short)src[0] | ((unsigned short)src[1] << 8));
}
/***********************************************************************
* W16
*
* Write a 16 bit sample (correctly handles endianess)
*/
static inline void W16(unsigned char* dst, short s)
{
dst[0] = LOBYTE(s);
dst[1] = HIBYTE(s);
}
/* IMA (or DVI) APDCM codec routines */
static const unsigned IMA_StepTable[89] =
{
7, 8, 9, 10, 11, 12, 13, 14,
16, 17, 19, 21, 23, 25, 28, 31,
34, 37, 41, 45, 50, 55, 60, 66,
73, 80, 88, 97, 107, 118, 130, 143,
157, 173, 190, 209, 230, 253, 279, 307,
337, 371, 408, 449, 494, 544, 598, 658,
724, 796, 876, 963, 1060, 1166, 1282, 1411,
1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024,
3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484,
7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794,
32767
};
static const int IMA_IndexTable[16] =
{
-1, -1, -1, -1, 2, 4, 6, 8,
-1, -1, -1, -1, 2, 4, 6, 8
};
static inline void clamp_step_index(int* stepIndex)
{
if (*stepIndex < 0 ) *stepIndex = 0;
if (*stepIndex > 88) *stepIndex = 88;
}
static inline void clamp_sample(int* sample)
{
if (*sample < -32768) *sample = -32768;
if (*sample > 32767) *sample = 32767;
}
static inline void process_nibble(unsigned char code, int* stepIndex, int* sample)
{
unsigned step;
int diff;
code &= 0x0F;
step = IMA_StepTable[*stepIndex];
diff = step >> 3;
if (code & 1) diff += step >> 2;
if (code & 2) diff += step >> 1;
if (code & 4) diff += step;
if (code & 8) *sample -= diff;
else *sample += diff;
clamp_sample(sample);
*stepIndex += IMA_IndexTable[code];
clamp_step_index(stepIndex);
}
static inline unsigned char generate_nibble(int in, int* stepIndex, int* sample)
{
int effdiff, diff = in - *sample;
unsigned step;
unsigned char code;
if (diff < 0)
{
diff = -diff;
code = 8;
}
else
{
code = 0;
}
step = IMA_StepTable[*stepIndex];
effdiff = (step >> 3);
if (diff >= step)
{
code |= 4;
diff -= step;
effdiff += step;
}
step >>= 1;
if (diff >= step)
{
code |= 2;
diff -= step;
effdiff += step;
}
step >>= 1;
if (diff >= step)
{
code |= 1;
effdiff += step;
}
if (code & 8) *sample -= effdiff;
else *sample += effdiff;
clamp_sample(sample);
*stepIndex += IMA_IndexTable[code];
clamp_step_index(stepIndex);
return code;
}
static void cvtSSima16K(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
int i;
int sampleL, sampleR;
int stepIndexL, stepIndexR;
int nsamp_blk = ((LPIMAADPCMWAVEFORMAT)adsi->pwfxSrc)->wSamplesPerBlock;
int nsamp;
/* compute the number of entire blocks we can decode...
* it's the min of the number of entire blocks in source buffer and the number
* of entire blocks in destination buffer
*/
DWORD nblock = min(*nsrc / adsi->pwfxSrc->nBlockAlign,
*ndst / (nsamp_blk * 2 * 2));
*nsrc = nblock * adsi->pwfxSrc->nBlockAlign;
*ndst = nblock * (nsamp_blk * 2 * 2);
nsamp_blk--; /* remove the sample in block header */
for (; nblock > 0; nblock--)
{
const unsigned char* in_src = src;
/* handle headers first */
sampleL = R16(src);
stepIndexL = (unsigned)*(src + 2);
clamp_step_index(&stepIndexL);
src += 4;
W16(dst, sampleL); dst += 2;
sampleR = R16(src);
stepIndexR = (unsigned)*(src + 2);
clamp_step_index(&stepIndexR);
src += 4;
W16(dst, sampleR); dst += 2;
for (nsamp = nsamp_blk; nsamp > 0; nsamp -= 8)
{
for (i = 0; i < 4; i++)
{
process_nibble(*src, &stepIndexL, &sampleL);
W16(dst + (2 * i + 0) * 4 + 0, sampleL);
process_nibble(*src++ >> 4, &stepIndexL, &sampleL);
W16(dst + (2 * i + 1) * 4 + 0, sampleL);
}
for (i = 0; i < 4; i++)
{
process_nibble(*src , &stepIndexR, &sampleR);
W16(dst + (2 * i + 0) * 4 + 2, sampleR);
process_nibble(*src++ >>4, &stepIndexR, &sampleR);
W16(dst + (2 * i + 1) * 4 + 2, sampleR);
}
dst += 32;
}
/* we have now to realign the source pointer on block */
src = in_src + adsi->pwfxSrc->nBlockAlign;
}
}
static void cvtMMima16K(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
int sample;
int stepIndex;
int nsamp_blk = ((LPIMAADPCMWAVEFORMAT)adsi->pwfxSrc)->wSamplesPerBlock;
int nsamp;
/* compute the number of entire blocks we can decode...
* it's the min of the number of entire blocks in source buffer and the number
* of entire blocks in destination buffer
*/
DWORD nblock = min(*nsrc / adsi->pwfxSrc->nBlockAlign,
*ndst / (nsamp_blk * 2));
*nsrc = nblock * adsi->pwfxSrc->nBlockAlign;
*ndst = nblock * nsamp_blk * 2;
nsamp_blk--; /* remove the sample in block header */
for (; nblock > 0; nblock--)
{
const unsigned char* in_src = src;
/* handle header first */
sample = R16(src);
stepIndex = (unsigned)*(src + 2);
clamp_step_index(&stepIndex);
src += 4;
W16(dst, sample); dst += 2;
for (nsamp = nsamp_blk; nsamp > 0; nsamp -= 2)
{
process_nibble(*src, &stepIndex, &sample);
W16(dst, sample); dst += 2;
process_nibble(*src++ >> 4, &stepIndex, &sample);
W16(dst, sample); dst += 2;
}
/* we have now to realign the source pointer on block */
src = in_src + adsi->pwfxSrc->nBlockAlign;
}
}
static void cvtSS16imaK(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
int stepIndexL, stepIndexR;
int sampleL, sampleR;
BYTE code1, code2;
int nsamp_blk = ((LPIMAADPCMWAVEFORMAT)adsi->pwfxDst)->wSamplesPerBlock;
int i, nsamp;
/* compute the number of entire blocks we can decode...
* it's the min of the number of entire blocks in source buffer and the number
* of entire blocks in destination buffer
*/
DWORD nblock = min(*nsrc / (nsamp_blk * 2 * 2),
*ndst / adsi->pwfxDst->nBlockAlign);
*nsrc = nblock * (nsamp_blk * 2 * 2);
*ndst = nblock * adsi->pwfxDst->nBlockAlign;
stepIndexL = ((AcmAdpcmData*)adsi->dwDriver)->stepIndexL;
stepIndexR = ((AcmAdpcmData*)adsi->dwDriver)->stepIndexR;
nsamp_blk--; /* so that we won't count the sample in header while filling the block */
for (; nblock > 0; nblock--)
{
char* in_dst = dst;
/* generate header */
sampleL = R16(src); src += 2;
W16(dst, sampleL); dst += 2;
*dst = (unsigned char)(unsigned)stepIndexL;
dst += 2;
sampleR = R16(src); src += 2;
W16(dst, sampleR); dst += 2;
*dst = (unsigned char)(unsigned)stepIndexR;
dst += 2;
for (nsamp = nsamp_blk; nsamp > 0; nsamp -= 8)
{
for (i = 0; i < 4; i++)
{
code1 = generate_nibble(R16(src + (2 * i + 0) * 2 + 0),
&stepIndexL, &sampleL);
code2 = generate_nibble(R16(src + (2 * i + 1) * 2 + 0),
&stepIndexL, &sampleL);
*dst++ = (code1 << 4) | code2;
}
for (i = 0; i < 4; i++)
{
code1 = generate_nibble(R16(src + (2 * i + 0) * 2 + 1),
&stepIndexR, &sampleR);
code2 = generate_nibble(R16(src + (2 * i + 1) * 2 + 1),
&stepIndexR, &sampleR);
*dst++ = (code1 << 4) | code2;
}
src += 32;
}
dst = in_dst + adsi->pwfxDst->nBlockAlign;
}
((AcmAdpcmData*)adsi->dwDriver)->stepIndexL = stepIndexL;
((AcmAdpcmData*)adsi->dwDriver)->stepIndexR = stepIndexR;
}
static void cvtMM16imaK(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
int stepIndex;
int sample;
BYTE code1, code2;
int nsamp_blk = ((LPIMAADPCMWAVEFORMAT)adsi->pwfxDst)->wSamplesPerBlock;
int nsamp;
/* compute the number of entire blocks we can decode...
* it's the min of the number of entire blocks in source buffer and the number
* of entire blocks in destination buffer
*/
DWORD nblock = min(*nsrc / (nsamp_blk * 2),
*ndst / adsi->pwfxDst->nBlockAlign);
*nsrc = nblock * (nsamp_blk * 2);
*ndst = nblock * adsi->pwfxDst->nBlockAlign;
stepIndex = ((AcmAdpcmData*)adsi->dwDriver)->stepIndexL;
nsamp_blk--; /* so that we won't count the sample in header while filling the block */
for (; nblock > 0; nblock--)
{
char* in_dst = dst;
/* generate header */
/* FIXME: what about the last effective sample from previous block ??? */
/* perhaps something like:
* sample += R16(src);
* clamp_sample(sample);
* and with :
* + saving the sample in adsi->dwDriver when all blocks are done
+ + reset should set the field in adsi->dwDriver to 0 too
*/
sample = R16(src); src += 2;
W16(dst, sample); dst += 2;
*dst = (unsigned char)(unsigned)stepIndex;
dst += 2;
for (nsamp = nsamp_blk; nsamp > 0; nsamp -= 2)
{
code1 = generate_nibble(R16(src), &stepIndex, &sample);
src += 2;
code2 = generate_nibble(R16(src), &stepIndex, &sample);
src += 2;
*dst++ = (code1 << 4) | code2;
}
dst = in_dst + adsi->pwfxDst->nBlockAlign;
}
((AcmAdpcmData*)adsi->dwDriver)->stepIndexL = stepIndex;
}
/***********************************************************************
* ADPCM_DriverDetails
*
*/
static LRESULT ADPCM_DriverDetails(PACMDRIVERDETAILSW add)
{
add->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
add->wMid = 0xFF;
add->wPid = 0x00;
add->vdwACM = 0x01000000;
add->vdwDriver = 0x01000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
add->cFormatTags = 2; /* PCM, IMA ADPCM */
add->cFilterTags = 0;
add->hicon = NULL;
MultiByteToWideChar( CP_ACP, 0, "WINE-ADPCM", -1,
add->szShortName, sizeof(add->szShortName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Wine IMA ADPCM converter", -1,
add->szLongName, sizeof(add->szLongName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Brought to you by the Wine team...", -1,
add->szCopyright, sizeof(add->szCopyright)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Refer to LICENSE file", -1,
add->szLicensing, sizeof(add->szLicensing)/sizeof(WCHAR) );
add->szFeatures[0] = 0;
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_FormatTagDetails
*
*/
static LRESULT ADPCM_FormatTagDetails(PACMFORMATTAGDETAILSW aftd, DWORD dwQuery)
{
static WCHAR szPcm[]={'P','C','M',0};
static WCHAR szImaAdPcm[]={'I','M','A',' ','A','d','P','C','M',0};
switch (dwQuery)
{
case ACM_FORMATTAGDETAILSF_INDEX:
if (aftd->dwFormatTagIndex >= 2) return ACMERR_NOTPOSSIBLE;
break;
case ACM_FORMATTAGDETAILSF_LARGESTSIZE:
if (aftd->dwFormatTag == WAVE_FORMAT_UNKNOWN)
{
aftd->dwFormatTagIndex = 1; /* WAVE_FORMAT_IMA_ADPCM is bigger than PCM */
break;
}
/* fall thru */
case ACM_FORMATTAGDETAILSF_FORMATTAG:
switch (aftd->dwFormatTag)
{
case WAVE_FORMAT_PCM: aftd->dwFormatTagIndex = 0; break;
case WAVE_FORMAT_IMA_ADPCM: aftd->dwFormatTagIndex = 1; break;
default: return ACMERR_NOTPOSSIBLE;
}
break;
default:
WARN("Unsupported query %08lx\n", dwQuery);
return MMSYSERR_NOTSUPPORTED;
}
aftd->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
switch (aftd->dwFormatTagIndex)
{
case 0:
aftd->dwFormatTag = WAVE_FORMAT_PCM;
aftd->cbFormatSize = sizeof(PCMWAVEFORMAT);
aftd->cStandardFormats = NUM_PCM_FORMATS;
lstrcpyW(aftd->szFormatTag, szPcm);
break;
case 1:
aftd->dwFormatTag = WAVE_FORMAT_IMA_ADPCM;
aftd->cbFormatSize = sizeof(IMAADPCMWAVEFORMAT);
aftd->cStandardFormats = NUM_ADPCM_FORMATS;
lstrcpyW(aftd->szFormatTag, szImaAdPcm);
break;
}
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_FormatDetails
*
*/
static LRESULT ADPCM_FormatDetails(PACMFORMATDETAILSW afd, DWORD dwQuery)
{
switch (dwQuery)
{
case ACM_FORMATDETAILSF_FORMAT:
if (ADPCM_GetFormatIndex(afd->pwfx) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
break;
case ACM_FORMATDETAILSF_INDEX:
afd->pwfx->wFormatTag = afd->dwFormatTag;
switch (afd->dwFormatTag)
{
case WAVE_FORMAT_PCM:
if (afd->dwFormatIndex >= NUM_PCM_FORMATS) return ACMERR_NOTPOSSIBLE;
afd->pwfx->nChannels = PCM_Formats[afd->dwFormatIndex].nChannels;
afd->pwfx->nSamplesPerSec = PCM_Formats[afd->dwFormatIndex].rate;
afd->pwfx->wBitsPerSample = PCM_Formats[afd->dwFormatIndex].nBits;
/* native MSACM uses a PCMWAVEFORMAT structure, so cbSize is not accessible
* afd->pwfx->cbSize = 0;
*/
afd->pwfx->nBlockAlign =
(afd->pwfx->nChannels * afd->pwfx->wBitsPerSample) / 8;
afd->pwfx->nAvgBytesPerSec =
afd->pwfx->nSamplesPerSec * afd->pwfx->nBlockAlign;
break;
case WAVE_FORMAT_IMA_ADPCM:
if (afd->dwFormatIndex >= NUM_ADPCM_FORMATS) return ACMERR_NOTPOSSIBLE;
afd->pwfx->nChannels = ADPCM_Formats[afd->dwFormatIndex].nChannels;
afd->pwfx->nSamplesPerSec = ADPCM_Formats[afd->dwFormatIndex].rate;
afd->pwfx->wBitsPerSample = ADPCM_Formats[afd->dwFormatIndex].nBits;
afd->pwfx->nBlockAlign = 1024;
/* we got 4 bits per sample */
afd->pwfx->nAvgBytesPerSec =
(afd->pwfx->nSamplesPerSec * 4) / 8;
if (afd->cbwfx >= sizeof(WAVEFORMATEX))
afd->pwfx->cbSize = sizeof(WORD);
if (afd->cbwfx >= sizeof(IMAADPCMWAVEFORMAT))
((IMAADPCMWAVEFORMAT*)afd->pwfx)->wSamplesPerBlock = (1024 - 4 * afd->pwfx->nChannels) * (2 / afd->pwfx->nChannels) + 1;
break;
default:
WARN("Unsupported tag %08lx\n", afd->dwFormatTag);
return MMSYSERR_INVALPARAM;
}
break;
default:
WARN("Unsupported query %08lx\n", dwQuery);
return MMSYSERR_NOTSUPPORTED;
}
afd->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
afd->szFormat[0] = 0; /* let MSACM format this for us... */
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_FormatSuggest
*
*/
static LRESULT ADPCM_FormatSuggest(PACMDRVFORMATSUGGEST adfs)
{
/* some tests ... */
if (adfs->cbwfxSrc < sizeof(PCMWAVEFORMAT) ||
adfs->cbwfxDst < sizeof(PCMWAVEFORMAT) ||
ADPCM_GetFormatIndex(adfs->pwfxSrc) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
/* FIXME: should do those tests against the real size (according to format tag */
/* If no suggestion for destination, then copy source value */
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS))
adfs->pwfxDst->nChannels = adfs->pwfxSrc->nChannels;
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC))
adfs->pwfxDst->nSamplesPerSec = adfs->pwfxSrc->nSamplesPerSec;
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE))
{
if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM)
adfs->pwfxDst->wBitsPerSample = 4;
else
adfs->pwfxDst->wBitsPerSample = 16;
}
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG))
{
if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM)
adfs->pwfxDst->wFormatTag = WAVE_FORMAT_IMA_ADPCM;
else
adfs->pwfxDst->wFormatTag = WAVE_FORMAT_PCM;
}
/* check if result is ok */
if (ADPCM_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
/* recompute other values */
switch (adfs->pwfxDst->wFormatTag)
{
case WAVE_FORMAT_PCM:
adfs->pwfxDst->nBlockAlign = (adfs->pwfxDst->nChannels * adfs->pwfxDst->wBitsPerSample) / 8;
adfs->pwfxDst->nAvgBytesPerSec = adfs->pwfxDst->nSamplesPerSec * adfs->pwfxDst->nBlockAlign;
break;
case WAVE_FORMAT_IMA_ADPCM:
adfs->pwfxDst->nBlockAlign = 1024;
/* FIXME: not handling header overhead */
adfs->pwfxDst->nAvgBytesPerSec = ((adfs->pwfxDst->nSamplesPerSec * 4) / 8) * adfs->pwfxSrc->nChannels;
((IMAADPCMWAVEFORMAT*)adfs->pwfxDst)->wSamplesPerBlock = (1024 - 4 * adfs->pwfxSrc->nChannels) * (2 / adfs->pwfxSrc->nChannels) + 1;
TRACE("setting spb=%u\n", ((IMAADPCMWAVEFORMAT*)adfs->pwfxDst)->wSamplesPerBlock);
break;
default:
FIXME("\n");
break;
}
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_Reset
*
*/
static void ADPCM_Reset(PACMDRVSTREAMINSTANCE adsi, AcmAdpcmData* aad)
{
aad->stepIndexL = aad->stepIndexR = 0;
}
/***********************************************************************
* ADPCM_StreamOpen
*
*/
static LRESULT ADPCM_StreamOpen(PACMDRVSTREAMINSTANCE adsi)
{
AcmAdpcmData* aad;
unsigned nspb;
assert(!(adsi->fdwOpen & ACM_STREAMOPENF_ASYNC));
if (ADPCM_GetFormatIndex(adsi->pwfxSrc) == 0xFFFFFFFF ||
ADPCM_GetFormatIndex(adsi->pwfxDst) == 0xFFFFFFFF)
return ACMERR_NOTPOSSIBLE;
aad = HeapAlloc(GetProcessHeap(), 0, sizeof(AcmAdpcmData));
if (aad == 0) return MMSYSERR_NOMEM;
adsi->dwDriver = (DWORD)aad;
if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
goto theEnd;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_IMA_ADPCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
/* resampling or mono <=> stereo not available
* ADPCM algo only define 16 bit per sample output
*/
if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
adsi->pwfxDst->wBitsPerSample != 16)
goto theEnd;
nspb = ((LPIMAADPCMWAVEFORMAT)adsi->pwfxSrc)->wSamplesPerBlock;
TRACE("spb=%u\n", nspb);
/* we check that in a block, after the header, samples are present on
* 4-sample packet pattern
* we also check that the block alignement is bigger than the expected size
*/
if (((nspb - 1) & 3) != 0) goto theEnd;
if ((((nspb - 1) / 2) + 4) * adsi->pwfxSrc->nChannels < adsi->pwfxSrc->nBlockAlign)
goto theEnd;
/* adpcm decoding... */
if (adsi->pwfxDst->wBitsPerSample == 16 && adsi->pwfxDst->nChannels == 2)
aad->convert = cvtSSima16K;
if (adsi->pwfxDst->wBitsPerSample == 16 && adsi->pwfxDst->nChannels == 1)
aad->convert = cvtMMima16K;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_IMA_ADPCM)
{
if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
adsi->pwfxSrc->wBitsPerSample != 16)
goto theEnd;
nspb = ((LPIMAADPCMWAVEFORMAT)adsi->pwfxDst)->wSamplesPerBlock;
TRACE("spb=%u\n", nspb);
/* we check that in a block, after the header, samples are present on
* 4-sample packet pattern
* we also check that the block alignement is bigger than the expected size
*/
if (((nspb - 1) & 3) != 0) goto theEnd;
if ((((nspb - 1) / 2) + 4) * adsi->pwfxDst->nChannels < adsi->pwfxDst->nBlockAlign)
goto theEnd;
/* adpcm coding... */
if (adsi->pwfxSrc->wBitsPerSample == 16 && adsi->pwfxSrc->nChannels == 2)
aad->convert = cvtSS16imaK;
if (adsi->pwfxSrc->wBitsPerSample == 16 && adsi->pwfxSrc->nChannels == 1)
aad->convert = cvtMM16imaK;
}
else goto theEnd;
ADPCM_Reset(adsi, aad);
return MMSYSERR_NOERROR;
theEnd:
HeapFree(GetProcessHeap(), 0, aad);
adsi->dwDriver = 0L;
return MMSYSERR_NOTSUPPORTED;
}
/***********************************************************************
* ADPCM_StreamClose
*
*/
static LRESULT ADPCM_StreamClose(PACMDRVSTREAMINSTANCE adsi)
{
HeapFree(GetProcessHeap(), 0, (void*)adsi->dwDriver);
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_round
*
*/
static inline DWORD ADPCM_round(DWORD a, DWORD b, DWORD c)
{
assert(a && b && c);
/* to be sure, always return an entire number of c... */
return ((double)a * (double)b + (double)c - 1) / (double)c;
}
/***********************************************************************
* ADPCM_StreamSize
*
*/
static LRESULT ADPCM_StreamSize(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMSIZE adss)
{
switch (adss->fdwSize)
{
case ACM_STREAMSIZEF_DESTINATION:
/* cbDstLength => cbSrcLength */
if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_IMA_ADPCM)
{
/* don't take block overhead into account, doesn't matter too much */
adss->cbSrcLength = adss->cbDstLength * 4;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_IMA_ADPCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
FIXME("misses the block header overhead\n");
adss->cbSrcLength = 256 + adss->cbDstLength / 4;
}
else
{
return MMSYSERR_NOTSUPPORTED;
}
break;
case ACM_STREAMSIZEF_SOURCE:
/* cbSrcLength => cbDstLength */
if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_IMA_ADPCM)
{
FIXME("misses the block header overhead\n");
adss->cbDstLength = 256 + adss->cbSrcLength / 4;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_IMA_ADPCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
/* don't take block overhead into account, doesn't matter too much */
adss->cbDstLength = adss->cbSrcLength * 4;
}
else
{
return MMSYSERR_NOTSUPPORTED;
}
break;
default:
WARN("Unsupported query %08lx\n", adss->fdwSize);
return MMSYSERR_NOTSUPPORTED;
}
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_StreamConvert
*
*/
static LRESULT ADPCM_StreamConvert(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMHEADER adsh)
{
AcmAdpcmData* aad = (AcmAdpcmData*)adsi->dwDriver;
DWORD nsrc = adsh->cbSrcLength;
DWORD ndst = adsh->cbDstLength;
if (adsh->fdwConvert &
~(ACM_STREAMCONVERTF_BLOCKALIGN|
ACM_STREAMCONVERTF_END|
ACM_STREAMCONVERTF_START))
{
FIXME("Unsupported fdwConvert (%08lx), ignoring it\n", adsh->fdwConvert);
}
/* ACM_STREAMCONVERTF_BLOCKALIGN
* currently all conversions are block aligned, so do nothing for this flag
* ACM_STREAMCONVERTF_END
* no pending data, so do nothing for this flag
*/
if ((adsh->fdwConvert & ACM_STREAMCONVERTF_START))
{
ADPCM_Reset(adsi, aad);
}
aad->convert(adsi, adsh->pbSrc, &nsrc, adsh->pbDst, &ndst);
adsh->cbSrcLengthUsed = nsrc;
adsh->cbDstLengthUsed = ndst;
return MMSYSERR_NOERROR;
}
/**************************************************************************
* ADPCM_DriverProc [exported]
*/
LRESULT CALLBACK ADPCM_DriverProc(DWORD dwDevID, HDRVR hDriv, UINT wMsg,
LPARAM dwParam1, LPARAM dwParam2)
{
TRACE("(%08lx %08lx %04x %08lx %08lx);\n",
dwDevID, (DWORD)hDriv, wMsg, dwParam1, dwParam2);
switch (wMsg)
{
case DRV_LOAD: return 1;
case DRV_FREE: return 1;
case DRV_OPEN: return ADPCM_drvOpen((LPSTR)dwParam1);
case DRV_CLOSE: return ADPCM_drvClose(dwDevID);
case DRV_ENABLE: return 1;
case DRV_DISABLE: return 1;
case DRV_QUERYCONFIGURE: return 1;
case DRV_CONFIGURE: MessageBoxA(0, "MSACM IMA ADPCM filter !", "Wine Driver", MB_OK); return 1;
case DRV_INSTALL: return DRVCNF_RESTART;
case DRV_REMOVE: return DRVCNF_RESTART;
case ACMDM_DRIVER_NOTIFY:
/* no caching from other ACM drivers is done so far */
return MMSYSERR_NOERROR;
case ACMDM_DRIVER_DETAILS:
return ADPCM_DriverDetails((PACMDRIVERDETAILSW)dwParam1);
case ACMDM_FORMATTAG_DETAILS:
return ADPCM_FormatTagDetails((PACMFORMATTAGDETAILSW)dwParam1, dwParam2);
case ACMDM_FORMAT_DETAILS:
return ADPCM_FormatDetails((PACMFORMATDETAILSW)dwParam1, dwParam2);
case ACMDM_FORMAT_SUGGEST:
return ADPCM_FormatSuggest((PACMDRVFORMATSUGGEST)dwParam1);
case ACMDM_STREAM_OPEN:
return ADPCM_StreamOpen((PACMDRVSTREAMINSTANCE)dwParam1);
case ACMDM_STREAM_CLOSE:
return ADPCM_StreamClose((PACMDRVSTREAMINSTANCE)dwParam1);
case ACMDM_STREAM_SIZE:
return ADPCM_StreamSize((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMSIZE)dwParam2);
case ACMDM_STREAM_CONVERT:
return ADPCM_StreamConvert((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMHEADER)dwParam2);
case ACMDM_HARDWARE_WAVE_CAPS_INPUT:
case ACMDM_HARDWARE_WAVE_CAPS_OUTPUT:
/* this converter is not a hardware driver */
case ACMDM_FILTERTAG_DETAILS:
case ACMDM_FILTER_DETAILS:
/* this converter is not a filter */
case ACMDM_STREAM_RESET:
/* only needed for asynchronous driver... we aren't, so just say it */
return MMSYSERR_NOTSUPPORTED;
case ACMDM_STREAM_PREPARE:
case ACMDM_STREAM_UNPREPARE:
/* nothing special to do here... so don't do anything */
return MMSYSERR_NOERROR;
default:
return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
}
return 0;
}

View file

@ -18,9 +18,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Èçáîð íà çâóê"
FONT 8, "MS Shell Dlg"
@ -28,29 +28,24 @@ BEGIN
LTEXT "&Èìå:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Ñúõðàíÿâàíå êàòî...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "Ïðå&ìàõâàíå", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Ñúõðàíÿâàíå êàòî...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "Ïðå&ìàõâàíå", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Ôîðìàò:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Ôîðìàò:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Ïðèíàäëåæíîñòè", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Ïðèíàäëåæíîñòè", -1, 5, 76, 44, 8, NOT WS_GROUP
#if 0
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP |
CBS_OWNERDRAWFIXED | CBS_HASSTRINGS
#else
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
#endif
DEFPUSHBUTTON "Äîáðå", IDOK, 48, 80, 40, 14
PUSHBUTTON "Îòêàç", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "Ïîìî&ù", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "Ïîìî&ù", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "Äîáðå", IDOK, 115, 100, 50, 14
PUSHBUTTON "Îòêàç", IDCANCEL, 170, 100, 50, 14
END

View file

@ -24,7 +24,7 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
/* Czech strings in CP1250 */
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Výbìr zvuku"
FONT 8, "MS Shell Dlg"
@ -32,24 +32,24 @@ BEGIN
LTEXT "&Název:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Uložit jako", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "Odeb&rat", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Uložit jako", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "Odeb&rat", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formát:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formát:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Atributy:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Atributy:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Storno", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "P&omoc", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "P&omoc", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Storno", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Lyd valg"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Navn:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Gem &som...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "Fje&rn", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "Gem &som...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "Fje&rn", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attributter:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attributter:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Annuller", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Hjælp", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Hjælp", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Annuller", IDCANCEL, 170, 100, 50, 14
END

View file

@ -22,7 +22,7 @@
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Soundauswahl"
FONT 8, "MS Shell Dlg"
@ -30,24 +30,24 @@ BEGIN
LTEXT "&Name:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Speichern &unter...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Entfernen", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "Speichern &unter...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Entfernen", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attribute:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attribute:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Abbrechen", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Hilfe", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Hilfe", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Abbrechen", IDCANCEL, 170, 100, 50, 14
END

View file

@ -15,12 +15,12 @@
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
LANGUAGE LANG_GREEK, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "ÅðéëïãÞ Þ÷ïõ"
FONT 8, "MS Shell Dlg"
@ -28,29 +28,24 @@ BEGIN
LTEXT "&¼íïìá:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&ÁðïèÞêåõóç ùò...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Áöáßñåóç", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&ÁðïèÞêåõóç ùò...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Áöáßñåóç", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&ÖïñìÜ:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&ÖïñìÜ:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Éäéüôçôåò:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Éäéüôçôåò:", -1, 5, 76, 44, 8, NOT WS_GROUP
#if 0
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP |
CBS_OWNERDRAWFIXED | CBS_HASSTRINGS
#else
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
#endif
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "¢êõñï", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&ÂïÞèåéá", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&ÂïÞèåéá", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "¢êõñï", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sound Selection"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Name:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Save As...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Remove", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Save As...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Remove", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attributes:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attributes:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Cancel", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Help", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Help", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Cancel", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Selección de sonido"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Nombre:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Guardar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Eliminar", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Guardar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Eliminar", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formato:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formato:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "A&tributos:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "A&tributos:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Aceptar", IDOK, 48, 80, 40, 14
PUSHBUTTON "Cancelar", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Ayuda", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Ayuda", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "Aceptar", IDOK, 115, 100, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 170, 100, 50, 14
END

View file

@ -25,7 +25,7 @@
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 250, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sélection du son"
FONT 8, "MS Shell Dlg"
@ -33,24 +33,24 @@ BEGIN
LTEXT "&Nom :", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 15,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Enregistrer sous...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 70, 14
PUSHBUTTON "&Supprimer", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 199, 14, 45, 14
PUSHBUTTON "&Enregistrer sous...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Supprimer", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format :", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format :", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 48, 39, 197, 15,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attributs :", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attributs :", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 48, 57, 197, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Annuler", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "Aid&e", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "Aid&e", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Annuler", IDCANCEL, 170, 100, 50, 14
END

View file

@ -25,7 +25,7 @@
LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "בחירת שמע"
FONT 8, "MS Shell Dlg"
@ -33,24 +33,24 @@ BEGIN
LTEXT "שם:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "שמירה בשם...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "הסר", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "שמירה בשם...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "הסר", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "פורמט:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "פורמט:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "מאפיינים:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "מאפיינים:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "אישור", IDOK, 48, 80, 40, 14
PUSHBUTTON "ביטול", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "עזרה", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "עזרה", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "אישור", IDOK, 115, 100, 50, 14
PUSHBUTTON "ביטול", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Hang kiválasztás"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Név:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Mentés másként...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Eltávolítás", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Mentés másként...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Eltávolítás", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formátum:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formátum:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attribútumok:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attribútumok:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Mégse", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Súgó", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Súgó", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Mégse", IDCANCEL, 170, 100, 50, 14
END

View file

@ -21,7 +21,7 @@
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Selezione dell'audio"
FONT 8, "MS Shell Dlg"
@ -29,24 +29,24 @@ BEGIN
LTEXT "&Nome:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Salva con nome...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Rimuovi", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Salva con nome...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Rimuovi", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formato:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formato:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attributi:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attributi:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Annulla", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Aiuto", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Aiuto", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Annulla", IDCANCEL, 170, 100, 50, 14
END

View file

@ -23,7 +23,7 @@
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "サウンドの選択"
FONT 9, "MS Shell Dlg"
@ -31,24 +31,24 @@ BEGIN
LTEXT "名前(&N):", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "名前を付けて保存(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "削除(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "名前を付けて保存(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "削除(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "フォーマット(&F):", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "フォーマット(&F):", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "属性(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "属性(&A):", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "キャンセル", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "ヘルプ(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "ヘルプ(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "キャンセル", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "사운드 선택"
FONT 9, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "이름(&N):", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 97, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "다른 이름으로 저장(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 103, 14, 70, 14
PUSHBUTTON "제거(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "다른 이름으로 저장(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "제거(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "형식(&F):", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "형식(&F):", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "속성(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "속성(&A):", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "확인", IDOK, 48, 80, 40, 14
PUSHBUTTON "취소", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "도움말(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "도움말(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "확인", IDOK, 115, 100, 50, 14
PUSHBUTTON "취소", IDCANCEL, 170, 100, 50, 14
END

View file

@ -23,7 +23,7 @@
LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Garso parinkimas"
FONT 8, "MS Shell Dlg"
@ -31,24 +31,24 @@ BEGIN
LTEXT "&Pavadinimas:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 100, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Išsaugoti k&aip...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 110, 14, 60, 14
PUSHBUTTON "Pa&šalinti", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "Išsaugoti k&aip...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "Pa&šalinti", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formatas:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formatas:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "A&tributai:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "A&tributai:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Gerai", IDOK, 48, 80, 40, 14
PUSHBUTTON "Atsisakyti", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Žinynas", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Žinynas", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "Gerai", IDOK, 115, 100, 50, 14
PUSHBUTTON "Atsisakyti", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Geluidskeuze"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Naam:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Opslaan als...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Verwijderen", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Opslaan als...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Verwijderen", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formaat:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formaat:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attributen:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attributen:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Annuleren", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Help", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Help", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Annuleren", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Lydutvalg"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Navn:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Lagre &som...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "Fje&rn", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "Lagre &som...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "Fje&rn", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attributter:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attributter:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Avbryt", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Hjelp", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Hjelp", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Avbryt", IDCANCEL, 170, 100, 50, 14
END

View file

@ -21,7 +21,7 @@
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 235, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Wybór d¿wiêku"
FONT 8, "MS Shell Dlg"
@ -29,24 +29,24 @@ BEGIN
LTEXT "&Nazwa:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Zapisz jako...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 50, 14
PUSHBUTTON "&Usuñ", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 180, 14, 50, 14
PUSHBUTTON "&Zapisz jako...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Usuñ", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 180, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Atrybuty:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Atrybuty:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 180, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 53, 80, 40, 14
PUSHBUTTON "Anuluj", IDCANCEL, 97, 80, 40, 14
PUSHBUTTON "&Pomoc", IDD_ACMFORMATCHOOSE_BTN_HELP, 141, 80, 40, 14
PUSHBUTTON "&Pomoc", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Anuluj", IDCANCEL, 170, 100, 50, 14
END

View file

@ -24,7 +24,7 @@
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Seleção de som"
FONT 8, "MS Shell Dlg"
@ -32,31 +32,31 @@ BEGIN
LTEXT "&Nome:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Salvar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Remover", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Salvar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Remover", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formato:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formato:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Atributos:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Atributos:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Cancelar", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "Aj&uda", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "Aj&uda", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 170, 100, 50, 14
END
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Selecção de som"
FONT 8, "MS Shell Dlg"
@ -64,24 +64,24 @@ BEGIN
LTEXT "&Nome:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Gravar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Remover", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Gravar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Remover", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formato:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formato:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Atributos:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Atributos:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Cancelar", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "Aj&uda", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "Aj&uda", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Cancelar", IDCANCEL, 170, 100, 50, 14
END

View file

@ -22,32 +22,32 @@ LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
#pragma code_page(65001)
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Selecție sunet"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "N&ume:", -1, 5, 5, 115, 8, NOT WS_GROUP
LTEXT "N&ume:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Pă&strare ca…", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Elimină", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "Pă&strare ca…", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Elimină", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "F&ormat:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "F&ormat:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Atribute:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Atribute:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Con&firmă", IDOK, 48, 80, 40, 14
PUSHBUTTON "A&nulează", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Manual…", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Manual…", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "Con&firmă", IDOK, 115, 100, 50, 14
PUSHBUTTON "A&nulează", IDCANCEL, 170, 100, 50, 14
END

View file

@ -23,7 +23,7 @@
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Выбор звука"
FONT 8, "MS Shell Dlg"
@ -31,24 +31,24 @@ BEGIN
LTEXT "&Имя:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Сохранить как...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Удалить", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Сохранить как...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Удалить", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Формат:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Формат:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Свойства:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Свойства:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Отмена", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Помощь", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Помощь", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Отмена", IDCANCEL, 170, 100, 50, 14
END

View file

@ -22,7 +22,7 @@
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Izbira zvoka"
FONT 8, "MS Shell Dlg"
@ -30,24 +30,24 @@ BEGIN
LTEXT "&Ime:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Shrani kot ...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Odstrani", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Shrani kot ...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Odstrani", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Lastnosti:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Lastnosti:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "V redu", IDOK, 48, 80, 40, 14
PUSHBUTTON "Prekliči", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Pomoč", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Pomoč", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "V redu", IDOK, 115, 100, 50, 14
PUSHBUTTON "Prekliči", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Përzgjedhja Zërit"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Emri:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Ruaj Si...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Hiq", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Ruaj Si...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Hiq", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Formati:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Formati:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Atributet:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Atributet:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Anulo", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Ndihmë", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Ndihmë", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Anulo", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ljudval"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Namn:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "&Spara som...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Ta bort", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "&Spara som...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Ta bort", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Format:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Format:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Attribut:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Attribut:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Avbryt", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Hjälp", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Hjälp", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Avbryt", IDCANCEL, 170, 100, 50, 14
END

View file

@ -20,7 +20,7 @@
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Ses Seçme"
FONT 8, "MS Shell Dlg"
@ -28,24 +28,24 @@ BEGIN
LTEXT "&Ad:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Ay&rı Sakla...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Kaldır", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "Ay&rı Sakla...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Kaldır", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Biçim:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Biçim:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Öz Nitelikler:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Öz Nitelikler:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "Tamam", IDOK, 48, 80, 40, 14
PUSHBUTTON "İptal", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Yardım", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Yardım", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "Tamam", IDOK, 115, 100, 50, 14
PUSHBUTTON "İptal", IDCANCEL, 170, 100, 50, 14
END

View file

@ -23,7 +23,7 @@
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Sound Selection"
FONT 8, "MS Shell Dlg"
@ -31,24 +31,24 @@ BEGIN
LTEXT "&Ім'я:", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Зберегти &як...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "&Видалити", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "Зберегти &як...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "&Видалити", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "&Формат:", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "&Формат:", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "&Властивості:", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "&Властивості:", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14
PUSHBUTTON "Скасувати", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "&Довідка", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "&Довідка", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "OK", IDOK, 115, 100, 50, 14
PUSHBUTTON "Скасувати", IDCANCEL, 170, 100, 50, 14
END

View file

@ -23,7 +23,7 @@
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "声音选择"
FONT 9, "MS Shell Dlg"
@ -31,31 +31,31 @@ BEGIN
LTEXT "名称(&N):", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "保存为(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "删除(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "保存为(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "删除(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "格式(&F):", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "格式(&F):", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "属性(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "属性(&A):", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "确定", IDOK, 48, 80, 40, 14
PUSHBUTTON "取消", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "帮助(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "帮助(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "确定", IDOK, 115, 100, 50, 14
PUSHBUTTON "取消", IDCANCEL, 170, 100, 50, 14
END
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 100
DLG_ACMFORMATCHOOSE_ID DIALOG 10, 20, 225, 118
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "聲音選擇"
FONT 9, "MS Shell Dlg"
@ -63,24 +63,24 @@ BEGIN
LTEXT "名稱(&N):", -1, 5, 5, 115, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 135, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "儲存為(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14
PUSHBUTTON "刪除(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14
PUSHBUTTON "儲存為(&S)...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 150, 14, 70, 14
PUSHBUTTON "刪除(&R)", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 150, 32, 70, 14
LTEXT "格式(&F):", -1, 5, 41, 44, 8, NOT WS_GROUP
LTEXT "格式(&F):", -1, 5, 56, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 54, 170, 60,
CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
LTEXT "屬性(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP
LTEXT "屬性(&A):", -1, 5, 76, 44, 8, NOT WS_GROUP
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60,
COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 74, 170, 60,
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
DEFPUSHBUTTON "確定", IDOK, 48, 80, 40, 14
PUSHBUTTON "取消", IDCANCEL, 92, 80, 40, 14
PUSHBUTTON "幫助(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14
PUSHBUTTON "幫助(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 5, 100, 50, 14
DEFPUSHBUTTON "確定", IDOK, 115, 100, 50, 14
PUSHBUTTON "取消", IDCANCEL, 170, 100, 50, 14
END

View file

@ -18,10 +18,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "windef.h"
#include "winbase.h"
#include "winuser.h"
#include "wineacm.h"
#include <windef.h>
#include <winuser.h>
#include <msacmdlg.h>
#ifdef LANGUAGE_BG_BG
#include "lang/msacm_Bg.rc"

View file

@ -1,12 +0,0 @@
TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ../../..
SRCDIR = @srcdir@
VPATH = @srcdir@
MODULE = msadp32.acm
IMPORTS = winmm user32 kernel32
C_SRCS = msadp32.c
@MAKE_DLL_RULES@
### Dependencies:

View file

@ -1 +0,0 @@
@ stdcall DriverProc (long long long long long) ADPCM_DriverProc

View file

@ -1,781 +0,0 @@
/*
* MS ADPCM handling
*
* Copyright (C) 2002 Eric Pouech
*
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <assert.h>
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "winnls.h"
#include "mmsystem.h"
#include "mmreg.h"
#include "msacm.h"
#include "msacmdrv.h"
#include "wine/debug.h"
/* see http://www.pcisys.net/~melanson/codecs/adpcm.txt for the details */
WINE_DEFAULT_DEBUG_CHANNEL(adpcm);
/***********************************************************************
* ADPCM_drvOpen
*/
static DWORD ADPCM_drvOpen(LPCSTR str)
{
return 1;
}
/***********************************************************************
* ADPCM_drvClose
*/
static DWORD ADPCM_drvClose(DWORD dwDevID)
{
return 1;
}
typedef struct tagAcmAdpcmData
{
void (*convert)(PACMDRVSTREAMINSTANCE adsi,
const unsigned char*, LPDWORD, unsigned char*, LPDWORD);
} AcmAdpcmData;
/* table to list all supported formats... those are the basic ones. this
* also helps given a unique index to each of the supported formats
*/
typedef struct
{
int nChannels;
int nBits;
int rate;
} Format;
static Format PCM_Formats[] =
{
{1, 8, 8000}, {2, 8, 8000}, {1, 16, 8000}, {2, 16, 8000},
{1, 8, 11025}, {2, 8, 11025}, {1, 16, 11025}, {2, 16, 11025},
{1, 8, 22050}, {2, 8, 22050}, {1, 16, 22050}, {2, 16, 22050},
{1, 8, 44100}, {2, 8, 44100}, {1, 16, 44100}, {2, 16, 44100},
};
static Format ADPCM_Formats[] =
{
{1, 4, 8000}, {2, 4, 8000}, {1, 4, 11025}, {2, 4, 11025},
{1, 4, 22050}, {2, 4, 22050}, {1, 4, 44100}, {2, 4, 44100},
};
#define NUM_PCM_FORMATS (sizeof(PCM_Formats) / sizeof(PCM_Formats[0]))
#define NUM_ADPCM_FORMATS (sizeof(ADPCM_Formats) / sizeof(ADPCM_Formats[0]))
static int MS_Delta[] =
{
230, 230, 230, 230, 307, 409, 512, 614,
768, 614, 512, 409, 307, 230, 230, 230
};
static ADPCMCOEFSET MSADPCM_CoeffSet[] =
{
{256, 0}, {512, -256}, {0, 0}, {192, 64}, {240, 0}, {460, -208}, {392, -232}
};
/***********************************************************************
* ADPCM_GetFormatIndex
*/
static DWORD ADPCM_GetFormatIndex(WAVEFORMATEX* wfx)
{
int i, hi;
Format* fmts;
switch (wfx->wFormatTag)
{
case WAVE_FORMAT_PCM:
hi = NUM_PCM_FORMATS;
fmts = PCM_Formats;
break;
case WAVE_FORMAT_ADPCM:
hi = NUM_ADPCM_FORMATS;
fmts = ADPCM_Formats;
break;
default:
return 0xFFFFFFFF;
}
for (i = 0; i < hi; i++)
{
if (wfx->nChannels == fmts[i].nChannels &&
wfx->nSamplesPerSec == fmts[i].rate &&
wfx->wBitsPerSample == fmts[i].nBits)
return i;
}
return 0xFFFFFFFF;
}
static void init_wfx_adpcm(ADPCMWAVEFORMAT* awfx)
{
register WAVEFORMATEX* pwfx = &awfx->wfx;
/* we assume wFormatTag, nChannels, nSamplesPerSec and wBitsPerSample
* have been initialized... */
if (pwfx->wFormatTag != WAVE_FORMAT_ADPCM) {FIXME("wrong FT\n"); return;}
if (ADPCM_GetFormatIndex(pwfx) == 0xFFFFFFFF) {FIXME("wrong fmt\n"); return;}
switch (pwfx->nSamplesPerSec)
{
case 8000: pwfx->nBlockAlign = 256; break;
case 11025: pwfx->nBlockAlign = 256; break;
case 22050: pwfx->nBlockAlign = 512; break;
default:
case 44100: pwfx->nBlockAlign = 1024; break;
}
pwfx->cbSize = 2 * sizeof(WORD) + 7 * sizeof(ADPCMCOEFSET);
/* 7 is the size of the block head (which contains two samples) */
awfx->wSamplesPerBlock = (pwfx->nBlockAlign - (7 * pwfx->nChannels)) * (2 / pwfx->nChannels) + 2;
pwfx->nAvgBytesPerSec = (pwfx->nSamplesPerSec * pwfx->nBlockAlign) / awfx->wSamplesPerBlock;
awfx->wNumCoef = 7;
memcpy(awfx->aCoef, MSADPCM_CoeffSet, 7 * sizeof(ADPCMCOEFSET));
}
/***********************************************************************
* R16
*
* Read a 16 bit sample (correctly handles endianess)
*/
static inline short R16(const unsigned char* src)
{
return (short)((unsigned short)src[0] | ((unsigned short)src[1] << 8));
}
/***********************************************************************
* W16
*
* Write a 16 bit sample (correctly handles endianess)
*/
static inline void W16(unsigned char* dst, short s)
{
dst[0] = LOBYTE(s);
dst[1] = HIBYTE(s);
}
static inline void clamp_sample(int* sample)
{
if (*sample < -32768) *sample = -32768;
if (*sample > 32767) *sample = 32767;
}
static inline void process_nibble(unsigned nibble, int* idelta,
int* sample1, int* sample2,
const ADPCMCOEFSET* coeff)
{
int sample;
int snibble;
/* nibble is in fact a signed 4 bit integer => propagate sign if needed */
snibble = (nibble & 0x08) ? (nibble - 16) : nibble;
sample = ((*sample1 * coeff->iCoef1) + (*sample2 * coeff->iCoef2)) / 256 +
snibble * *idelta;
clamp_sample(&sample);
*sample2 = *sample1;
*sample1 = sample;
*idelta = ((MS_Delta[nibble] * *idelta) / 256);
if (*idelta < 16) *idelta = 16;
}
static void cvtSSms16K(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
int ideltaL, ideltaR;
int sample1L, sample2L;
int sample1R, sample2R;
ADPCMCOEFSET coeffL, coeffR;
int nsamp;
int nsamp_blk = ((ADPCMWAVEFORMAT*)adsi->pwfxSrc)->wSamplesPerBlock;
DWORD nblock = min(*nsrc / adsi->pwfxSrc->nBlockAlign,
*ndst / (nsamp_blk * 2 * 2));
*nsrc = nblock * adsi->pwfxSrc->nBlockAlign;
*ndst = nblock * nsamp_blk * 2 * 2;
nsamp_blk -= 2; /* see below for samples from block head */
for (; nblock > 0; nblock--)
{
const unsigned char* in_src = src;
assert(*src <= 6);
coeffL = MSADPCM_CoeffSet[*src++];
assert(*src <= 6);
coeffR = MSADPCM_CoeffSet[*src++];
ideltaL = R16(src); src += 2;
ideltaR = R16(src); src += 2;
sample1L = R16(src); src += 2;
sample1R = R16(src); src += 2;
sample2L = R16(src); src += 2;
sample2R = R16(src); src += 2;
/* store samples from block head */
W16(dst, sample2L); dst += 2;
W16(dst, sample2R); dst += 2;
W16(dst, sample1L); dst += 2;
W16(dst, sample1R); dst += 2;
for (nsamp = nsamp_blk; nsamp > 0; nsamp--)
{
process_nibble(*src >> 4, &ideltaL, &sample1L, &sample2L, &coeffL);
W16(dst, sample1L); dst += 2;
process_nibble(*src++ & 0x0F, &ideltaR, &sample1R, &sample2R, &coeffR);
W16(dst, sample1R); dst += 2;
}
src = in_src + adsi->pwfxSrc->nBlockAlign;
}
}
static void cvtMMms16K(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
int idelta;
int sample1, sample2;
ADPCMCOEFSET coeff;
int nsamp;
int nsamp_blk = ((ADPCMWAVEFORMAT*)adsi->pwfxSrc)->wSamplesPerBlock;
DWORD nblock = min(*nsrc / adsi->pwfxSrc->nBlockAlign,
*ndst / (nsamp_blk * 2));
*nsrc = nblock * adsi->pwfxSrc->nBlockAlign;
*ndst = nblock * nsamp_blk * 2;
nsamp_blk -= 2; /* see below for samples from block head */
for (; nblock > 0; nblock--)
{
const unsigned char* in_src = src;
assert(*src <= 6);
coeff = MSADPCM_CoeffSet[*src++];
idelta = R16(src); src += 2;
sample1 = R16(src); src += 2;
sample2 = R16(src); src += 2;
/* store samples from block head */
W16(dst, sample2); dst += 2;
W16(dst, sample1); dst += 2;
for (nsamp = nsamp_blk; nsamp > 0; nsamp -= 2)
{
process_nibble(*src >> 4, &idelta, &sample1, &sample2, &coeff);
W16(dst, sample1); dst += 2;
process_nibble(*src++ & 0x0F, &idelta, &sample1, &sample2, &coeff);
W16(dst, sample1); dst += 2;
}
src = in_src + adsi->pwfxSrc->nBlockAlign;
}
}
#if 0
static void cvtSS16msK(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
}
static void cvtMM16msK(PACMDRVSTREAMINSTANCE adsi,
const unsigned char* src, LPDWORD nsrc,
unsigned char* dst, LPDWORD ndst)
{
}
#endif
/***********************************************************************
* ADPCM_DriverDetails
*
*/
static LRESULT ADPCM_DriverDetails(PACMDRIVERDETAILSW add)
{
add->fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
add->fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
add->wMid = 0xFF;
add->wPid = 0x00;
add->vdwACM = 0x01000000;
add->vdwDriver = 0x01000000;
add->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
add->cFormatTags = 2; /* PCM, MS ADPCM */
add->cFilterTags = 0;
add->hicon = NULL;
MultiByteToWideChar( CP_ACP, 0, "WINE-MS ADPCM", -1,
add->szShortName, sizeof(add->szShortName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Wine MS ADPCM converter", -1,
add->szLongName, sizeof(add->szLongName)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Brought to you by the Wine team...", -1,
add->szCopyright, sizeof(add->szCopyright)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, "Refer to LICENSE file", -1,
add->szLicensing, sizeof(add->szLicensing)/sizeof(WCHAR) );
add->szFeatures[0] = 0;
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_FormatTagDetails
*
*/
static LRESULT ADPCM_FormatTagDetails(PACMFORMATTAGDETAILSW aftd, DWORD dwQuery)
{
static WCHAR szPcm[]={'P','C','M',0};
static WCHAR szMsAdPcm[]={'M','S',' ','A','d','P','C','M',0};
switch (dwQuery)
{
case ACM_FORMATTAGDETAILSF_INDEX:
if (aftd->dwFormatTagIndex >= 2) return ACMERR_NOTPOSSIBLE;
break;
case ACM_FORMATTAGDETAILSF_LARGESTSIZE:
if (aftd->dwFormatTag == WAVE_FORMAT_UNKNOWN)
{
aftd->dwFormatTagIndex = 1; /* WAVE_FORMAT_ADPCM is bigger than PCM */
break;
}
/* fall thru */
case ACM_FORMATTAGDETAILSF_FORMATTAG:
switch (aftd->dwFormatTag)
{
case WAVE_FORMAT_PCM: aftd->dwFormatTagIndex = 0; break;
case WAVE_FORMAT_ADPCM: aftd->dwFormatTagIndex = 1; break;
default: return ACMERR_NOTPOSSIBLE;
}
break;
default:
WARN("Unsupported query %08lx\n", dwQuery);
return MMSYSERR_NOTSUPPORTED;
}
aftd->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
switch (aftd->dwFormatTagIndex)
{
case 0:
aftd->dwFormatTag = WAVE_FORMAT_PCM;
aftd->cbFormatSize = sizeof(PCMWAVEFORMAT);
aftd->cStandardFormats = NUM_PCM_FORMATS;
lstrcpyW(aftd->szFormatTag, szPcm);
break;
case 1:
aftd->dwFormatTag = WAVE_FORMAT_ADPCM;
aftd->cbFormatSize = sizeof(ADPCMWAVEFORMAT) + (7 - 1) * sizeof(ADPCMCOEFSET);
aftd->cStandardFormats = NUM_ADPCM_FORMATS;
lstrcpyW(aftd->szFormatTag, szMsAdPcm);
break;
}
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_FormatDetails
*
*/
static LRESULT ADPCM_FormatDetails(PACMFORMATDETAILSW afd, DWORD dwQuery)
{
switch (dwQuery)
{
case ACM_FORMATDETAILSF_FORMAT:
if (ADPCM_GetFormatIndex(afd->pwfx) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
break;
case ACM_FORMATDETAILSF_INDEX:
afd->pwfx->wFormatTag = afd->dwFormatTag;
switch (afd->dwFormatTag)
{
case WAVE_FORMAT_PCM:
if (afd->dwFormatIndex >= NUM_PCM_FORMATS) return ACMERR_NOTPOSSIBLE;
afd->pwfx->nChannels = PCM_Formats[afd->dwFormatIndex].nChannels;
afd->pwfx->nSamplesPerSec = PCM_Formats[afd->dwFormatIndex].rate;
afd->pwfx->wBitsPerSample = PCM_Formats[afd->dwFormatIndex].nBits;
/* native MSACM uses a PCMWAVEFORMAT structure, so cbSize is not accessible
* afd->pwfx->cbSize = 0;
*/
afd->pwfx->nBlockAlign =
(afd->pwfx->nChannels * afd->pwfx->wBitsPerSample) / 8;
afd->pwfx->nAvgBytesPerSec =
afd->pwfx->nSamplesPerSec * afd->pwfx->nBlockAlign;
break;
case WAVE_FORMAT_ADPCM:
if (afd->dwFormatIndex >= NUM_ADPCM_FORMATS) return ACMERR_NOTPOSSIBLE;
if (afd->cbwfx < sizeof(ADPCMWAVEFORMAT) + (7 - 1) * sizeof(ADPCMCOEFSET))
return ACMERR_NOTPOSSIBLE;
afd->pwfx->nChannels = ADPCM_Formats[afd->dwFormatIndex].nChannels;
afd->pwfx->nSamplesPerSec = ADPCM_Formats[afd->dwFormatIndex].rate;
afd->pwfx->wBitsPerSample = ADPCM_Formats[afd->dwFormatIndex].nBits;
init_wfx_adpcm((ADPCMWAVEFORMAT*)afd->pwfx);
break;
default:
WARN("Unsupported tag %08lx\n", afd->dwFormatTag);
return MMSYSERR_INVALPARAM;
}
break;
default:
WARN("Unsupported query %08lx\n", dwQuery);
return MMSYSERR_NOTSUPPORTED;
}
afd->fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC;
afd->szFormat[0] = 0; /* let MSACM format this for us... */
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_FormatSuggest
*
*/
static LRESULT ADPCM_FormatSuggest(PACMDRVFORMATSUGGEST adfs)
{
/* some tests ... */
if (adfs->cbwfxSrc < sizeof(PCMWAVEFORMAT) ||
adfs->cbwfxDst < sizeof(PCMWAVEFORMAT) ||
ADPCM_GetFormatIndex(adfs->pwfxSrc) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
/* FIXME: should do those tests against the real size (according to format tag */
/* If no suggestion for destination, then copy source value */
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NCHANNELS))
adfs->pwfxDst->nChannels = adfs->pwfxSrc->nChannels;
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_NSAMPLESPERSEC))
adfs->pwfxDst->nSamplesPerSec = adfs->pwfxSrc->nSamplesPerSec;
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WBITSPERSAMPLE))
{
if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM)
adfs->pwfxDst->wBitsPerSample = 4;
else
adfs->pwfxDst->wBitsPerSample = 16;
}
if (!(adfs->fdwSuggest & ACM_FORMATSUGGESTF_WFORMATTAG))
{
if (adfs->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM)
adfs->pwfxDst->wFormatTag = WAVE_FORMAT_ADPCM;
else
adfs->pwfxDst->wFormatTag = WAVE_FORMAT_PCM;
}
/* check if result is ok */
if (ADPCM_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE;
/* recompute other values */
switch (adfs->pwfxDst->wFormatTag)
{
case WAVE_FORMAT_PCM:
adfs->pwfxDst->nBlockAlign = (adfs->pwfxDst->nChannels * adfs->pwfxDst->wBitsPerSample) / 8;
adfs->pwfxDst->nAvgBytesPerSec = adfs->pwfxDst->nSamplesPerSec * adfs->pwfxDst->nBlockAlign;
break;
case WAVE_FORMAT_ADPCM:
init_wfx_adpcm((ADPCMWAVEFORMAT*)adfs->pwfxDst);
break;
default:
FIXME("\n");
break;
}
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_Reset
*
*/
static void ADPCM_Reset(PACMDRVSTREAMINSTANCE adsi, AcmAdpcmData* aad)
{
}
/***********************************************************************
* ADPCM_StreamOpen
*
*/
static LRESULT ADPCM_StreamOpen(PACMDRVSTREAMINSTANCE adsi)
{
AcmAdpcmData* aad;
assert(!(adsi->fdwOpen & ACM_STREAMOPENF_ASYNC));
if (ADPCM_GetFormatIndex(adsi->pwfxSrc) == 0xFFFFFFFF ||
ADPCM_GetFormatIndex(adsi->pwfxDst) == 0xFFFFFFFF)
return ACMERR_NOTPOSSIBLE;
aad = HeapAlloc(GetProcessHeap(), 0, sizeof(AcmAdpcmData));
if (aad == 0) return MMSYSERR_NOMEM;
adsi->dwDriver = (DWORD)aad;
if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
goto theEnd;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ADPCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
/* resampling or mono <=> stereo not available
* ADPCM algo only define 16 bit per sample output
*/
if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
adsi->pwfxDst->wBitsPerSample != 16)
goto theEnd;
#if 0
{
unsigned int nspb = ((IMAADPCMWAVEFORMAT*)adsi->pwfxSrc)->wSamplesPerBlock;
FIXME("spb=%u\n", nspb);
/* we check that in a block, after the header, samples are present on
* 4-sample packet pattern
* we also check that the block alignement is bigger than the expected size
*/
if (((nspb - 1) & 3) != 0) goto theEnd;
if ((((nspb - 1) / 2) + 4) * adsi->pwfxSrc->nChannels < adsi->pwfxSrc->nBlockAlign)
goto theEnd;
}
#endif
/* adpcm decoding... */
if (adsi->pwfxDst->wBitsPerSample == 16 && adsi->pwfxDst->nChannels == 2)
aad->convert = cvtSSms16K;
if (adsi->pwfxDst->wBitsPerSample == 16 && adsi->pwfxDst->nChannels == 1)
aad->convert = cvtMMms16K;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_ADPCM)
{
if (adsi->pwfxSrc->nSamplesPerSec != adsi->pwfxDst->nSamplesPerSec ||
adsi->pwfxSrc->nChannels != adsi->pwfxDst->nChannels ||
adsi->pwfxSrc->wBitsPerSample != 16)
goto theEnd;
#if 0
nspb = ((IMAADPCMWAVEFORMAT*)adsi->pwfxDst)->wSamplesPerBlock;
FIXME("spb=%u\n", nspb);
/* we check that in a block, after the header, samples are present on
* 4-sample packet pattern
* we also check that the block alignement is bigger than the expected size
*/
if (((nspb - 1) & 3) != 0) goto theEnd;
if ((((nspb - 1) / 2) + 4) * adsi->pwfxDst->nChannels < adsi->pwfxDst->nBlockAlign)
goto theEnd;
#endif
#if 0
/* adpcm coding... */
if (adsi->pwfxSrc->wBitsPerSample == 16 && adsi->pwfxSrc->nChannels == 2)
aad->convert = cvtSS16msK;
if (adsi->pwfxSrc->wBitsPerSample == 16 && adsi->pwfxSrc->nChannels == 1)
aad->convert = cvtMM16msK;
#endif
FIXME("We don't support encoding yet\n");
goto theEnd;
}
else goto theEnd;
ADPCM_Reset(adsi, aad);
return MMSYSERR_NOERROR;
theEnd:
HeapFree(GetProcessHeap(), 0, aad);
adsi->dwDriver = 0L;
return MMSYSERR_NOTSUPPORTED;
}
/***********************************************************************
* ADPCM_StreamClose
*
*/
static LRESULT ADPCM_StreamClose(PACMDRVSTREAMINSTANCE adsi)
{
HeapFree(GetProcessHeap(), 0, (void*)adsi->dwDriver);
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_round
*
*/
static inline DWORD ADPCM_round(DWORD a, DWORD b, DWORD c)
{
assert(a && b && c);
/* to be sure, always return an entire number of c... */
return ((double)a * (double)b + (double)c - 1) / (double)c;
}
/***********************************************************************
* ADPCM_StreamSize
*
*/
static LRESULT ADPCM_StreamSize(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMSIZE adss)
{
switch (adss->fdwSize)
{
case ACM_STREAMSIZEF_DESTINATION:
/* cbDstLength => cbSrcLength */
if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_ADPCM)
{
/* don't take block overhead into account, doesn't matter too much */
adss->cbSrcLength = adss->cbDstLength * 4;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ADPCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
FIXME("misses the block header overhead\n");
adss->cbSrcLength = 256 + adss->cbDstLength / 4;
}
else
{
return MMSYSERR_NOTSUPPORTED;
}
break;
case ACM_STREAMSIZEF_SOURCE:
/* cbSrcLength => cbDstLength */
if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_ADPCM)
{
FIXME("misses the block header overhead\n");
adss->cbDstLength = 256 + adss->cbSrcLength / 4;
}
else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_ADPCM &&
adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM)
{
/* don't take block overhead into account, doesn't matter too much */
adss->cbDstLength = adss->cbSrcLength * 4;
}
else
{
return MMSYSERR_NOTSUPPORTED;
}
break;
default:
WARN("Unsupported query %08lx\n", adss->fdwSize);
return MMSYSERR_NOTSUPPORTED;
}
return MMSYSERR_NOERROR;
}
/***********************************************************************
* ADPCM_StreamConvert
*
*/
static LRESULT ADPCM_StreamConvert(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMHEADER adsh)
{
AcmAdpcmData* aad = (AcmAdpcmData*)adsi->dwDriver;
DWORD nsrc = adsh->cbSrcLength;
DWORD ndst = adsh->cbDstLength;
if (adsh->fdwConvert &
~(ACM_STREAMCONVERTF_BLOCKALIGN|
ACM_STREAMCONVERTF_END|
ACM_STREAMCONVERTF_START))
{
FIXME("Unsupported fdwConvert (%08lx), ignoring it\n", adsh->fdwConvert);
}
/* ACM_STREAMCONVERTF_BLOCKALIGN
* currently all conversions are block aligned, so do nothing for this flag
* ACM_STREAMCONVERTF_END
* no pending data, so do nothing for this flag
*/
if ((adsh->fdwConvert & ACM_STREAMCONVERTF_START))
{
ADPCM_Reset(adsi, aad);
}
aad->convert(adsi, adsh->pbSrc, &nsrc, adsh->pbDst, &ndst);
adsh->cbSrcLengthUsed = nsrc;
adsh->cbDstLengthUsed = ndst;
return MMSYSERR_NOERROR;
}
/**************************************************************************
* ADPCM_DriverProc [exported]
*/
LRESULT CALLBACK ADPCM_DriverProc(DWORD dwDevID, HDRVR hDriv, UINT wMsg,
LPARAM dwParam1, LPARAM dwParam2)
{
TRACE("(%08lx %08lx %04x %08lx %08lx);\n",
dwDevID, (DWORD)hDriv, wMsg, dwParam1, dwParam2);
switch (wMsg)
{
case DRV_LOAD: return 1;
case DRV_FREE: return 1;
case DRV_OPEN: return ADPCM_drvOpen((LPSTR)dwParam1);
case DRV_CLOSE: return ADPCM_drvClose(dwDevID);
case DRV_ENABLE: return 1;
case DRV_DISABLE: return 1;
case DRV_QUERYCONFIGURE: return 1;
case DRV_CONFIGURE: MessageBoxA(0, "MSACM MS ADPCM filter !", "Wine Driver", MB_OK); return 1;
case DRV_INSTALL: return DRVCNF_RESTART;
case DRV_REMOVE: return DRVCNF_RESTART;
case ACMDM_DRIVER_NOTIFY:
/* no caching from other ACM drivers is done so far */
return MMSYSERR_NOERROR;
case ACMDM_DRIVER_DETAILS:
return ADPCM_DriverDetails((PACMDRIVERDETAILSW)dwParam1);
case ACMDM_FORMATTAG_DETAILS:
return ADPCM_FormatTagDetails((PACMFORMATTAGDETAILSW)dwParam1, dwParam2);
case ACMDM_FORMAT_DETAILS:
return ADPCM_FormatDetails((PACMFORMATDETAILSW)dwParam1, dwParam2);
case ACMDM_FORMAT_SUGGEST:
return ADPCM_FormatSuggest((PACMDRVFORMATSUGGEST)dwParam1);
case ACMDM_STREAM_OPEN:
return ADPCM_StreamOpen((PACMDRVSTREAMINSTANCE)dwParam1);
case ACMDM_STREAM_CLOSE:
return ADPCM_StreamClose((PACMDRVSTREAMINSTANCE)dwParam1);
case ACMDM_STREAM_SIZE:
return ADPCM_StreamSize((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMSIZE)dwParam2);
case ACMDM_STREAM_CONVERT:
return ADPCM_StreamConvert((PACMDRVSTREAMINSTANCE)dwParam1, (PACMDRVSTREAMHEADER)dwParam2);
case ACMDM_HARDWARE_WAVE_CAPS_INPUT:
case ACMDM_HARDWARE_WAVE_CAPS_OUTPUT:
/* this converter is not a hardware driver */
case ACMDM_FILTERTAG_DETAILS:
case ACMDM_FILTER_DETAILS:
/* this converter is not a filter */
case ACMDM_STREAM_RESET:
/* only needed for asynchronous driver... we aren't, so just say it */
return MMSYSERR_NOTSUPPORTED;
case ACMDM_STREAM_PREPARE:
case ACMDM_STREAM_UNPREPARE:
/* nothing special to do here... so don't do anything */
return MMSYSERR_NOERROR;
default:
return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
}
return 0;
}

View file

@ -357,8 +357,6 @@ BOOL WINAPI GetColorProfileElement( HPROFILE handle, TAGTYPE type, DWORD offset,
ret = get_tag_data( profile, type, offset, buffer, size );
*ref = cmsTagLinkedTo( profile->cmsprofile, type ) != 0;
release_profile( profile );
return ret;
#endif /* HAVE_LCMS2 */
return ret;
}
@ -1235,8 +1233,6 @@ BOOL WINAPI SetColorProfileElement( HPROFILE handle, TAGTYPE type, DWORD offset,
}
ret = set_tag_data( profile, type, offset, buffer, size );
release_profile( profile );
return ret;
#endif /* HAVE_LCMS2 */
return ret;
}

View file

@ -42,7 +42,7 @@ typedef struct tagInputProcessorProfilesSink {
typedef struct tagInputProcessorProfiles {
ITfInputProcessorProfiles ITfInputProcessorProfiles_iface;
ITfSource ITfSource_iface;
/* const ITfInputProcessorProfileMgrVtbl *InputProcessorProfileMgrVtbl; */
ITfInputProcessorProfileMgr ITfInputProcessorProfileMgr_iface;
/* const ITfInputProcessorProfilesExVtbl *InputProcessorProfilesExVtbl; */
/* const ITfInputProcessorProfileSubstituteLayoutVtbl *InputProcessorProfileSubstituteLayoutVtbl; */
LONG refCount;
@ -75,9 +75,107 @@ typedef struct tagEnumTfLanguageProfiles {
ITfCategoryMgr *catmgr;
} EnumTfLanguageProfiles;
typedef struct {
IEnumTfInputProcessorProfiles IEnumTfInputProcessorProfiles_iface;
LONG ref;
} EnumTfInputProcessorProfiles;
static HRESULT ProfilesEnumGuid_Constructor(IEnumGUID **ppOut);
static HRESULT EnumTfLanguageProfiles_Constructor(LANGID langid, IEnumTfLanguageProfiles **ppOut);
static inline EnumTfInputProcessorProfiles *impl_from_IEnumTfInputProcessorProfiles(IEnumTfInputProcessorProfiles *iface)
{
return CONTAINING_RECORD(iface, EnumTfInputProcessorProfiles, IEnumTfInputProcessorProfiles_iface);
}
static HRESULT WINAPI EnumTfInputProcessorProfiles_QueryInterface(IEnumTfInputProcessorProfiles *iface,
REFIID riid, void **ppv)
{
EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface);
if(IsEqualGUID(riid, &IID_IUnknown)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IEnumTfInputProcessorProfiles_iface;
}else if(IsEqualGUID(riid, &IID_IEnumTfInputProcessorProfiles)) {
TRACE("(%p)->(IID_IEnumTfInputProcessorProfiles %p)\n", This, ppv);
*ppv = &This->IEnumTfInputProcessorProfiles_iface;
}else {
*ppv = NULL;
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI EnumTfInputProcessorProfiles_AddRef(IEnumTfInputProcessorProfiles *iface)
{
EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface);
LONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
return ref;
}
static ULONG WINAPI EnumTfInputProcessorProfiles_Release(IEnumTfInputProcessorProfiles *iface)
{
EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface);
LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
if(!ref)
HeapFree(GetProcessHeap(), 0, This);
return ref;
}
static HRESULT WINAPI EnumTfInputProcessorProfiles_Clone(IEnumTfInputProcessorProfiles *iface,
IEnumTfInputProcessorProfiles **ret)
{
EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface);
FIXME("(%p)->(%p)\n", This, ret);
return E_NOTIMPL;
}
static HRESULT WINAPI EnumTfInputProcessorProfiles_Next(IEnumTfInputProcessorProfiles *iface, ULONG count,
TF_INPUTPROCESSORPROFILE *profile, ULONG *fetch)
{
EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface);
FIXME("(%p)->(%u %p %p)\n", This, count, profile, fetch);
if(fetch)
*fetch = 0;
return S_FALSE;
}
static HRESULT WINAPI EnumTfInputProcessorProfiles_Reset(IEnumTfInputProcessorProfiles *iface)
{
EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI EnumTfInputProcessorProfiles_Skip(IEnumTfInputProcessorProfiles *iface, ULONG count)
{
EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface);
FIXME("(%p)->(%u)\n", This, count);
return E_NOTIMPL;
}
static const IEnumTfInputProcessorProfilesVtbl EnumTfInputProcessorProfilesVtbl = {
EnumTfInputProcessorProfiles_QueryInterface,
EnumTfInputProcessorProfiles_AddRef,
EnumTfInputProcessorProfiles_Release,
EnumTfInputProcessorProfiles_Clone,
EnumTfInputProcessorProfiles_Next,
EnumTfInputProcessorProfiles_Reset,
EnumTfInputProcessorProfiles_Skip
};
static inline InputProcessorProfiles *impl_from_ITfInputProcessorProfiles(ITfInputProcessorProfiles *iface)
{
return CONTAINING_RECORD(iface, InputProcessorProfiles, ITfInputProcessorProfiles_iface);
@ -149,28 +247,31 @@ static void add_userkey( REFCLSID rclsid, LANGID langid,
RegCloseKey(key);
}
static HRESULT WINAPI InputProcessorProfiles_QueryInterface(ITfInputProcessorProfiles *iface, REFIID iid, LPVOID *ppvOut)
static HRESULT WINAPI InputProcessorProfiles_QueryInterface(ITfInputProcessorProfiles *iface, REFIID iid, void **ppv)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfiles(iface);
*ppvOut = NULL;
if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfInputProcessorProfiles))
{
*ppvOut = &This->ITfInputProcessorProfiles_iface;
*ppv = &This->ITfInputProcessorProfiles_iface;
}
else if (IsEqualIID(iid, &IID_ITfInputProcessorProfileMgr))
{
*ppv = &This->ITfInputProcessorProfileMgr_iface;
}
else if (IsEqualIID(iid, &IID_ITfSource))
{
*ppvOut = &This->ITfSource_iface;
*ppv = &This->ITfSource_iface;
}
if (*ppvOut)
else
{
ITfInputProcessorProfiles_AddRef(iface);
return S_OK;
*ppv = NULL;
WARN("unsupported interface: %s\n", debugstr_guid(iid));
return E_NOINTERFACE;
}
WARN("unsupported interface: %s\n", debugstr_guid(iid));
return E_NOINTERFACE;
ITfInputProcessorProfiles_AddRef(iface);
return S_OK;
}
static ULONG WINAPI InputProcessorProfiles_AddRef(ITfInputProcessorProfiles *iface)
@ -663,6 +764,125 @@ static const ITfInputProcessorProfilesVtbl InputProcessorProfilesVtbl =
InputProcessorProfiles_SubstituteKeyboardLayout
};
static inline InputProcessorProfiles *impl_from_ITfInputProcessorProfileMgr(ITfInputProcessorProfileMgr *iface)
{
return CONTAINING_RECORD(iface, InputProcessorProfiles, ITfInputProcessorProfileMgr_iface);
}
static HRESULT WINAPI InputProcessorProfileMgr_QueryInterface(ITfInputProcessorProfileMgr *iface, REFIID riid, void **ppv)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
return ITfInputProcessorProfiles_QueryInterface(&This->ITfInputProcessorProfiles_iface, riid, ppv);
}
static ULONG WINAPI InputProcessorProfileMgr_AddRef(ITfInputProcessorProfileMgr *iface)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
return ITfInputProcessorProfiles_AddRef(&This->ITfInputProcessorProfiles_iface);
}
static ULONG WINAPI InputProcessorProfileMgr_Release(ITfInputProcessorProfileMgr *iface)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
return ITfInputProcessorProfiles_Release(&This->ITfInputProcessorProfiles_iface);
}
static HRESULT WINAPI InputProcessorProfileMgr_ActivateProfile(ITfInputProcessorProfileMgr *iface, DWORD dwProfileType,
LANGID langid, REFCLSID clsid, REFGUID guidProfile, HKL hkl, DWORD dwFlags)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
FIXME("(%p)->(%d %x %s %s %p %x)\n", This, dwProfileType, langid, debugstr_guid(clsid),
debugstr_guid(guidProfile), hkl, dwFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI InputProcessorProfileMgr_DeactivateProfile(ITfInputProcessorProfileMgr *iface, DWORD dwProfileType,
LANGID langid, REFCLSID clsid, REFGUID guidProfile, HKL hkl, DWORD dwFlags)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
FIXME("(%p)->(%d %x %s %s %p %x)\n", This, dwProfileType, langid, debugstr_guid(clsid),
debugstr_guid(guidProfile), hkl, dwFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI InputProcessorProfileMgr_GetProfile(ITfInputProcessorProfileMgr *iface, DWORD dwProfileType,
LANGID langid, REFCLSID clsid, REFGUID guidProfile, HKL hkl, TF_INPUTPROCESSORPROFILE *pProfile)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
FIXME("(%p)->(%d %x %s %s %p %p)\n", This, dwProfileType, langid, debugstr_guid(clsid),
debugstr_guid(guidProfile), hkl, pProfile);
return E_NOTIMPL;
}
static HRESULT WINAPI InputProcessorProfileMgr_EnumProfiles(ITfInputProcessorProfileMgr *iface, LANGID langid,
IEnumTfInputProcessorProfiles **ppEnum)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
EnumTfInputProcessorProfiles *enum_profiles;
TRACE("(%p)->(%x %p)\n", This, langid, ppEnum);
enum_profiles = HeapAlloc(GetProcessHeap(), 0, sizeof(*enum_profiles));
if(!enum_profiles)
return E_OUTOFMEMORY;
enum_profiles->IEnumTfInputProcessorProfiles_iface.lpVtbl = &EnumTfInputProcessorProfilesVtbl;
enum_profiles->ref = 1;
*ppEnum = &enum_profiles->IEnumTfInputProcessorProfiles_iface;
return S_OK;
}
static HRESULT WINAPI InputProcessorProfileMgr_ReleaseInputProcessor(ITfInputProcessorProfileMgr *iface, REFCLSID rclsid,
DWORD dwFlags)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
FIXME("(%p)->(%s %x)\n", This, debugstr_guid(rclsid), dwFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI InputProcessorProfileMgr_RegisterProfile(ITfInputProcessorProfileMgr *iface, REFCLSID rclsid,
LANGID langid, REFGUID guidProfile, const WCHAR *pchDesc, ULONG cchDesc, const WCHAR *pchIconFile,
ULONG cchFile, ULONG uIconIndex, HKL hklsubstitute, DWORD dwPreferredLayout, BOOL bEnabledByDefault,
DWORD dwFlags)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
FIXME("(%p)->(%s %x %s %s %d %s %u %u %p %x %x %x)\n", This, debugstr_guid(rclsid), langid, debugstr_guid(guidProfile),
debugstr_w(pchDesc), cchDesc, debugstr_w(pchIconFile), cchFile, uIconIndex, hklsubstitute, dwPreferredLayout,
bEnabledByDefault, dwFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI InputProcessorProfileMgr_UnregisterProfile(ITfInputProcessorProfileMgr *iface, REFCLSID rclsid,
LANGID langid, REFGUID guidProfile, DWORD dwFlags)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
FIXME("(%p)->(%s %x %s %x)\n", This, debugstr_guid(rclsid), langid, debugstr_guid(guidProfile), dwFlags);
return E_NOTIMPL;
}
static HRESULT WINAPI InputProcessorProfileMgr_GetActiveProfile(ITfInputProcessorProfileMgr *iface, REFGUID catid,
TF_INPUTPROCESSORPROFILE *pProfile)
{
InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface);
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(catid), pProfile);
return E_NOTIMPL;
}
static const ITfInputProcessorProfileMgrVtbl InputProcessorProfileMgrVtbl = {
InputProcessorProfileMgr_QueryInterface,
InputProcessorProfileMgr_AddRef,
InputProcessorProfileMgr_Release,
InputProcessorProfileMgr_ActivateProfile,
InputProcessorProfileMgr_DeactivateProfile,
InputProcessorProfileMgr_GetProfile,
InputProcessorProfileMgr_EnumProfiles,
InputProcessorProfileMgr_ReleaseInputProcessor,
InputProcessorProfileMgr_RegisterProfile,
InputProcessorProfileMgr_UnregisterProfile,
InputProcessorProfileMgr_GetActiveProfile
};
/*****************************************************
* ITfSource functions
*****************************************************/
@ -760,6 +980,7 @@ HRESULT InputProcessorProfiles_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut
This->ITfInputProcessorProfiles_iface.lpVtbl= &InputProcessorProfilesVtbl;
This->ITfSource_iface.lpVtbl = &InputProcessorProfilesSourceVtbl;
This->ITfInputProcessorProfileMgr_iface.lpVtbl = &InputProcessorProfileMgrVtbl;
This->refCount = 1;
This->currentLanguage = GetUserDefaultLCID();

View file

@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#pragma once
typedef struct nsWineURI nsWineURI;
/* Keep sync with request_method_strings in nsio.c */

View file

@ -18,23 +18,120 @@
#include "mshtml_private.h"
static const char *debugstr_cp_guid(REFIID riid)
typedef struct {
IEnumConnections IEnumConnections_iface;
LONG ref;
unsigned iter;
ConnectionPoint *cp;
} EnumConnections;
static inline EnumConnections *impl_from_IEnumConnections(IEnumConnections *iface)
{
#define X(x) \
if(IsEqualGUID(riid, &x)) \
return #x
X(IID_IPropertyNotifySink);
X(DIID_HTMLDocumentEvents);
X(DIID_HTMLDocumentEvents2);
X(DIID_HTMLTableEvents);
X(DIID_HTMLTextContainerEvents);
#undef X
return debugstr_guid(riid);
return CONTAINING_RECORD(iface, EnumConnections, IEnumConnections_iface);
}
static HRESULT WINAPI EnumConnections_QueryInterface(IEnumConnections *iface, REFIID riid, void **ppv)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(riid, &IID_IUnknown)) {
*ppv = &This->IEnumConnections_iface;
}else if(IsEqualGUID(riid, &IID_IEnumConnections)) {
*ppv = &This->IEnumConnections_iface;
}else {
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
*ppv = NULL;
return E_NOINTERFACE;
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI EnumConnections_AddRef(IEnumConnections *iface)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
ULONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
return ref;
}
static ULONG WINAPI EnumConnections_Release(IEnumConnections *iface)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
ULONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
if(!ref) {
IConnectionPoint_Release(&This->cp->IConnectionPoint_iface);
heap_free(This);
}
return ref;
}
static HRESULT WINAPI EnumConnections_Next(IEnumConnections *iface, ULONG cConnections, CONNECTDATA *rgcd, ULONG *pcFetched)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
ULONG fetched = 0;
TRACE("(%p)->(%d %p %p)\n", This, cConnections, rgcd, pcFetched);
while(fetched < cConnections && This->iter < This->cp->sinks_size) {
if(!This->cp->sinks[This->iter].unk) {
This->iter++;
continue;
}
rgcd[fetched].pUnk = This->cp->sinks[This->iter].unk;
rgcd[fetched].dwCookie = ++This->iter;
IUnknown_AddRef(rgcd[fetched].pUnk);
fetched++;
}
if(pcFetched)
*pcFetched = fetched;
return fetched == cConnections ? S_OK : S_FALSE;
}
static HRESULT WINAPI EnumConnections_Skip(IEnumConnections *iface, ULONG cConnections)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
FIXME("(%p)->(%d)\n", This, cConnections);
return E_NOTIMPL;
}
static HRESULT WINAPI EnumConnections_Reset(IEnumConnections *iface)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI EnumConnections_Clone(IEnumConnections *iface, IEnumConnections **ppEnum)
{
EnumConnections *This = impl_from_IEnumConnections(iface);
FIXME("(%p)->(%p)\n", This, ppEnum);
return E_NOTIMPL;
}
static const IEnumConnectionsVtbl EnumConnectionsVtbl = {
EnumConnections_QueryInterface,
EnumConnections_AddRef,
EnumConnections_Release,
EnumConnections_Next,
EnumConnections_Skip,
EnumConnections_Reset,
EnumConnections_Clone
};
static inline ConnectionPoint *impl_from_IConnectionPoint(IConnectionPoint *iface)
{
return CONTAINING_RECORD(iface, ConnectionPoint, IConnectionPoint_iface);
@ -45,23 +142,20 @@ static HRESULT WINAPI ConnectionPoint_QueryInterface(IConnectionPoint *iface,
{
ConnectionPoint *This = impl_from_IConnectionPoint(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IConnectionPoint_iface;
}else if(IsEqualGUID(&IID_IConnectionPoint, riid)) {
TRACE("(%p)->(IID_IConnectionPoint %p)\n", This, ppv);
*ppv = &This->IConnectionPoint_iface;
}else {
*ppv = NULL;
WARN("Unsupported interface %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("Unsupported interface %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI ConnectionPoint_AddRef(IConnectionPoint *iface)
@ -162,8 +256,23 @@ static HRESULT WINAPI ConnectionPoint_EnumConnections(IConnectionPoint *iface,
IEnumConnections **ppEnum)
{
ConnectionPoint *This = impl_from_IConnectionPoint(iface);
FIXME("(%p)->(%p)\n", This, ppEnum);
return E_NOTIMPL;
EnumConnections *ret;
TRACE("(%p)->(%p)\n", This, ppEnum);
ret = heap_alloc(sizeof(*ret));
if(!ret)
return E_OUTOFMEMORY;
ret->IEnumConnections_iface.lpVtbl = &EnumConnectionsVtbl;
ret->ref = 1;
ret->iter = 0;
IConnectionPoint_AddRef(&This->IConnectionPoint_iface);
ret->cp = This;
*ppEnum = &ret->IEnumConnections_iface;
return S_OK;
}
static const IConnectionPointVtbl ConnectionPointVtbl =
@ -283,7 +392,7 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
ConnectionPointContainer *This = impl_from_IConnectionPointContainer(iface);
ConnectionPoint *cp;
TRACE("(%p)->(%s %p)\n", This, debugstr_cp_guid(riid), ppCP);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppCP);
if(This->forward_container)
return IConnectionPointContainer_FindConnectionPoint(&This->forward_container->IConnectionPointContainer_iface,
@ -291,7 +400,7 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
cp = get_cp(This, riid, TRUE);
if(!cp) {
FIXME("unsupported riid %s\n", debugstr_cp_guid(riid));
FIXME("unsupported riid %s\n", debugstr_mshtml_guid(riid));
*ppCP = NULL;
return CONNECT_E_NOCONNECTION;
}

View file

@ -129,7 +129,7 @@ static HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo)
hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &ti);
if(FAILED(hres)) {
ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_guid(tid_ids[tid]), hres);
ERR("GetTypeInfoOfGuid(%s) failed: %08x\n", debugstr_mshtml_guid(tid_ids[tid]), hres);
return hres;
}
@ -616,7 +616,7 @@ static HRESULT typeinfo_invoke(DispatchEx *This, func_info_t *func, WORD flags,
hres = IUnknown_QueryInterface(This->outer, tid_ids[func->tid], (void**)&unk);
if(FAILED(hres)) {
ERR("Could not get iface %s: %08x\n", debugstr_guid(tid_ids[func->tid]), hres);
ERR("Could not get iface %s: %08x\n", debugstr_mshtml_guid(tid_ids[func->tid]), hres);
return E_FAIL;
}
@ -702,6 +702,37 @@ static HRESULT function_value(DispatchEx *dispex, LCID lcid, WORD flags, DISPPAR
return E_UNEXPECTED;
hres = typeinfo_invoke(This->obj, This->info, flags, params, res, ei);
break;
case DISPATCH_PROPERTYGET: {
unsigned name_len;
WCHAR *ptr;
BSTR str;
static const WCHAR func_prefixW[] =
{'\n','f','u','n','c','t','i','o','n',' '};
static const WCHAR func_suffixW[] =
{'(',')',' ','{','\n',' ',' ',' ',' ','[','n','a','t','i','v','e',' ','c','o','d','e',']','\n','}','\n'};
/* FIXME: This probably should be more generic. Also we should try to get IID_IActiveScriptSite and SID_GetCaller. */
if(!caller)
return E_ACCESSDENIED;
name_len = SysStringLen(This->info->name);
ptr = str = SysAllocStringLen(NULL, name_len + (sizeof(func_prefixW)+sizeof(func_suffixW))/sizeof(WCHAR));
if(!str)
return E_OUTOFMEMORY;
memcpy(ptr, func_prefixW, sizeof(func_prefixW));
ptr += sizeof(func_prefixW)/sizeof(WCHAR);
memcpy(ptr, This->info->name, name_len*sizeof(WCHAR));
ptr += name_len;
memcpy(ptr, func_suffixW, sizeof(func_suffixW));
V_VT(res) = VT_BSTR;
V_BSTR(res) = str;
return S_OK;
}
default:
FIXME("Unimplemented flags %x\n", flags);
hres = E_NOTIMPL;
@ -1184,6 +1215,7 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD
switch(flags) {
case DISPATCH_PROPERTYPUT:
case DISPATCH_PROPERTYPUT | DISPATCH_PROPERTYPUTREF:
if(res)
V_VT(res) = VT_EMPTY;
hres = builtin_propput(This, func, dp, caller);
@ -1203,7 +1235,7 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD
if(flags != (DISPATCH_PROPERTYGET|DISPATCH_METHOD) || dp->cArgs) {
if(V_VT(&v) != VT_DISPATCH) {
FIXME("Not a function %s\n", debugstr_variant(&v));
FIXME("Not a function %s flags %08x\n", debugstr_variant(&v), flags);
VariantClear(&v);
return E_FAIL;
}

View file

@ -246,7 +246,7 @@ static void remove_child_attr(nsIDOMElement *elem, LPCWSTR tag, nsAString *attr_
static void get_font_size(HTMLDocument *This, WCHAR *ret)
{
nsISelection *nsselection = get_ns_selection(This);
nsIDOMElement *elem = NULL;
nsIDOMHTMLElement *elem = NULL;
nsIDOMNode *node = NULL, *tmp_node;
nsAString tag_str;
LPCWSTR tag;
@ -267,36 +267,29 @@ static void get_font_size(HTMLDocument *This, WCHAR *ret)
break;
if(node_type == ELEMENT_NODE) {
nsIDOMNode_QueryInterface(node, &IID_nsIDOMElement, (void**)&elem);
nsIDOMNode_QueryInterface(node, &IID_nsIDOMHTMLElement, (void**)&elem);
nsAString_Init(&tag_str, NULL);
nsIDOMElement_GetTagName(elem, &tag_str);
nsIDOMHTMLElement_GetTagName(elem, &tag_str);
nsAString_GetData(&tag_str, &tag);
if(!strcmpiW(tag, fontW)) {
nsAString size_str, val_str;
LPCWSTR val;
nsAString val_str;
const PRUnichar *val;
TRACE("found font tag %p\n", elem);
nsAString_InitDepend(&size_str, sizeW);
nsAString_Init(&val_str, NULL);
nsIDOMElement_GetAttribute(elem, &size_str, &val_str);
nsAString_GetData(&val_str, &val);
get_elem_attr_value(elem, sizeW, &val_str, &val);
if(*val) {
TRACE("found size %s\n", debugstr_w(val));
strcpyW(ret, val);
}
nsAString_Finish(&size_str);
nsAString_Finish(&val_str);
}
nsAString_Finish(&tag_str);
nsIDOMElement_Release(elem);
nsIDOMHTMLElement_Release(elem);
}
if(*ret)

View file

@ -81,8 +81,9 @@ HTMLOuterWindow *get_target_window(HTMLOuterWindow *window, nsAString *target_st
if(!strcmpiW(target, _parentW)) {
if(!window->parent) {
WARN("Window has no parent\n");
return NULL;
WARN("Window has no parent, treat as self\n");
IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface);
return window;
}
IHTMLWindow2_AddRef(&window->parent->base.IHTMLWindow2_iface);

View file

@ -28,16 +28,16 @@ static HRESULT WINAPI HTMLDOMAttribute_QueryInterface(IHTMLDOMAttribute *iface,
{
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLDOMAttribute_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMAttribute, riid)) {
TRACE("(%p)->(IID_IHTMLDOMAttribute %p)\n", This, ppv);
*ppv = &This->IHTMLDOMAttribute_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
WARN("%s not supported\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}
@ -123,11 +123,25 @@ static HRESULT WINAPI HTMLDOMAttribute_get_nodeName(IHTMLDOMAttribute *iface, BS
return IDispatchEx_GetMemberName(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, p);
}
static HRESULT WINAPI HTMLDOMAttribute_put_nodeName(IHTMLDOMAttribute *iface, VARIANT v)
static HRESULT WINAPI HTMLDOMAttribute_put_nodeValue(IHTMLDOMAttribute *iface, VARIANT v)
{
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
DISPID dispidNamed = DISPID_PROPERTYPUT;
DISPPARAMS dp = {&v, &dispidNamed, 1, 1};
EXCEPINFO ei;
VARIANT ret;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
if(!This->elem) {
FIXME("NULL This->elem\n");
return E_UNEXPECTED;
}
memset(&ei, 0, sizeof(ei));
return IDispatchEx_InvokeEx(&This->elem->node.dispex.IDispatchEx_iface, This->dispid, LOCALE_SYSTEM_DEFAULT,
DISPATCH_PROPERTYPUT, &dp, &ret, &ei, NULL);
}
static HRESULT WINAPI HTMLDOMAttribute_get_nodeValue(IHTMLDOMAttribute *iface, VARIANT *p)
@ -201,7 +215,7 @@ static const IHTMLDOMAttributeVtbl HTMLDOMAttributeVtbl = {
HTMLDOMAttribute_GetIDsOfNames,
HTMLDOMAttribute_Invoke,
HTMLDOMAttribute_get_nodeName,
HTMLDOMAttribute_put_nodeName,
HTMLDOMAttribute_put_nodeValue,
HTMLDOMAttribute_get_nodeValue,
HTMLDOMAttribute_get_specified
};

View file

@ -55,34 +55,28 @@ static HRESULT WINAPI HTMLCurrentStyle_QueryInterface(IHTMLCurrentStyle *iface,
{
HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
*ppv = NULL;
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle2, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle2 %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle2_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle3, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle3 %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle3_iface;
}else if(IsEqualGUID(&IID_IHTMLCurrentStyle4, riid)) {
TRACE("(%p)->(IID_IHTMLCurrentStyle4 %p)\n", This, ppv);
*ppv = &This->IHTMLCurrentStyle4_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
WARN("unsupported %s\n", debugstr_mshtml_guid(riid));
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("unsupported %s\n", debugstr_guid(riid));
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLCurrentStyle_AddRef(IHTMLCurrentStyle *iface)
@ -785,8 +779,8 @@ static HRESULT WINAPI HTMLCurrentStyle_get_overflowY(IHTMLCurrentStyle *iface, B
static HRESULT WINAPI HTMLCurrentStyle_get_textTransform(IHTMLCurrentStyle *iface, BSTR *p)
{
HTMLCurrentStyle *This = impl_from_IHTMLCurrentStyle(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_nsstyle_attr(This->nsstyle, STYLEID_TEXT_TRANSFORM, p, 0);
}
static const IHTMLCurrentStyleVtbl HTMLCurrentStyleVtbl = {

View file

@ -1555,8 +1555,17 @@ static HRESULT WINAPI HTMLDocument_get_onerrorupdate(IHTMLDocument2 *iface, VARI
static HRESULT WINAPI HTMLDocument_toString(IHTMLDocument2 *iface, BSTR *String)
{
HTMLDocument *This = impl_from_IHTMLDocument2(iface);
FIXME("(%p)->(%p)\n", This, String);
return E_NOTIMPL;
static const WCHAR objectW[] = {'[','o','b','j','e','c','t',']',0};
TRACE("(%p)->(%p)\n", This, String);
if(!String)
return E_INVALIDARG;
*String = SysAllocString(objectW);
return *String ? S_OK : E_OUTOFMEMORY;
}
static HRESULT WINAPI HTMLDocument_createStyleSheet(IHTMLDocument2 *iface, BSTR bstrHref,
@ -2585,8 +2594,21 @@ static HRESULT WINAPI HTMLDocument5_get_doctype(IHTMLDocument5 *iface, IHTMLDOMN
static HRESULT WINAPI HTMLDocument5_get_implementation(IHTMLDocument5 *iface, IHTMLDOMImplementation **p)
{
HTMLDocument *This = impl_from_IHTMLDocument5(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
HTMLDocumentNode *doc_node = This->doc_node;
TRACE("(%p)->(%p)\n", This, p);
if(!doc_node->dom_implementation) {
HRESULT hres;
hres = create_dom_implementation(&doc_node->dom_implementation);
if(FAILED(hres))
return hres;
}
IHTMLDOMImplementation_AddRef(doc_node->dom_implementation);
*p = doc_node->dom_implementation;
return S_OK;
}
static HRESULT WINAPI HTMLDocument5_createAttribute(IHTMLDocument5 *iface, BSTR bstrattrName,
@ -3841,7 +3863,7 @@ static ULONG WINAPI SupportErrorInfo_Release(ISupportErrorInfo *iface)
static HRESULT WINAPI SupportErrorInfo_InterfaceSupportsErrorInfo(ISupportErrorInfo *iface, REFIID riid)
{
FIXME("(%p)->(%s)\n", iface, debugstr_guid(riid));
FIXME("(%p)->(%s)\n", iface, debugstr_mshtml_guid(riid));
return S_FALSE;
}
@ -4113,106 +4135,81 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
{
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown, %p)\n", This, ppv);
if(IsEqualGUID(&IID_IUnknown, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IDispatch, riid))
*ppv = &This->IDispatchEx_iface;
}else if(IsEqualGUID(&IID_IDispatchEx, riid)) {
TRACE("(%p)->(IID_IDispatchEx, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IDispatchEx, riid))
*ppv = &This->IDispatchEx_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument, riid)) {
TRACE("(%p)->(IID_IHTMLDocument, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument2, riid)) {
TRACE("(%p)->(IID_IHTMLDocument2, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument2, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument3, riid)) {
TRACE("(%p)->(IID_IHTMLDocument3, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument3, riid))
*ppv = &This->IHTMLDocument3_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument4, riid)) {
TRACE("(%p)->(IID_IHTMLDocument4, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument4, riid))
*ppv = &This->IHTMLDocument4_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument5, riid)) {
TRACE("(%p)->(IID_IHTMLDocument5, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument5, riid))
*ppv = &This->IHTMLDocument5_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument6, riid)) {
TRACE("(%p)->(IID_IHTMLDocument6, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument6, riid))
*ppv = &This->IHTMLDocument6_iface;
}else if(IsEqualGUID(&IID_IHTMLDocument7, riid)) {
TRACE("(%p)->(IID_IHTMLDocument7, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHTMLDocument7, riid))
*ppv = &This->IHTMLDocument7_iface;
}else if(IsEqualGUID(&IID_IPersist, riid)) {
TRACE("(%p)->(IID_IPersist, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersist, riid))
*ppv = &This->IPersistFile_iface;
}else if(IsEqualGUID(&IID_IPersistMoniker, riid)) {
TRACE("(%p)->(IID_IPersistMoniker, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistMoniker, riid))
*ppv = &This->IPersistMoniker_iface;
}else if(IsEqualGUID(&IID_IPersistFile, riid)) {
TRACE("(%p)->(IID_IPersistFile, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistFile, riid))
*ppv = &This->IPersistFile_iface;
}else if(IsEqualGUID(&IID_IMonikerProp, riid)) {
TRACE("(%p)->(IID_IMonikerProp, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IMonikerProp, riid))
*ppv = &This->IMonikerProp_iface;
}else if(IsEqualGUID(&IID_IOleObject, riid)) {
TRACE("(%p)->(IID_IOleObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleObject, riid))
*ppv = &This->IOleObject_iface;
}else if(IsEqualGUID(&IID_IOleDocument, riid)) {
TRACE("(%p)->(IID_IOleDocument, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleDocument, riid))
*ppv = &This->IOleDocument_iface;
}else if(IsEqualGUID(&IID_IOleDocumentView, riid)) {
TRACE("(%p)->(IID_IOleDocumentView, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleDocumentView, riid))
*ppv = &This->IOleDocumentView_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid)) {
TRACE("(%p)->(IID_IOleInPlaceActiveObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid))
*ppv = &This->IOleInPlaceActiveObject_iface;
}else if(IsEqualGUID(&IID_IViewObject, riid)) {
TRACE("(%p)->(IID_IViewObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IViewObject, riid))
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IViewObject2, riid)) {
TRACE("(%p)->(IID_IViewObject2, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IViewObject2, riid))
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IViewObjectEx, riid)) {
TRACE("(%p)->(IID_IViewObjectEx, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IViewObjectEx, riid))
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IOleWindow, riid)) {
TRACE("(%p)->(IID_IOleWindow, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleWindow, riid))
*ppv = &This->IOleInPlaceActiveObject_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceObject, riid)) {
TRACE("(%p)->(IID_IOleInPlaceObject, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleInPlaceObject, riid))
*ppv = &This->IOleInPlaceObjectWindowless_iface;
}else if(IsEqualGUID(&IID_IOleInPlaceObjectWindowless, riid)) {
TRACE("(%p)->(IID_IOleInPlaceObjectWindowless, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleInPlaceObjectWindowless, riid))
*ppv = &This->IOleInPlaceObjectWindowless_iface;
}else if(IsEqualGUID(&IID_IServiceProvider, riid)) {
TRACE("(%p)->(IID_IServiceProvider, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IServiceProvider, riid))
*ppv = &This->IServiceProvider_iface;
}else if(IsEqualGUID(&IID_IOleCommandTarget, riid)) {
TRACE("(%p)->(IID_IOleCommandTarget, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleCommandTarget, riid))
*ppv = &This->IOleCommandTarget_iface;
}else if(IsEqualGUID(&IID_IOleControl, riid)) {
TRACE("(%p)->(IID_IOleControl, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IOleControl, riid))
*ppv = &This->IOleControl_iface;
}else if(IsEqualGUID(&IID_IHlinkTarget, riid)) {
TRACE("(%p)->(IID_IHlinkTarget, %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IHlinkTarget, riid))
*ppv = &This->IHlinkTarget_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IConnectionPointContainer, riid))
*ppv = &This->cp_container.IConnectionPointContainer_iface;
}else if(IsEqualGUID(&IID_IPersistStreamInit, riid)) {
TRACE("(%p)->(IID_IPersistStreamInit %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistStreamInit, riid))
*ppv = &This->IPersistStreamInit_iface;
}else if(IsEqualGUID(&DIID_DispHTMLDocument, riid)) {
TRACE("(%p)->(DIID_DispHTMLDocument %p)\n", This, ppv);
else if(IsEqualGUID(&DIID_DispHTMLDocument, riid))
*ppv = &This->IHTMLDocument2_iface;
}else if(IsEqualGUID(&IID_ISupportErrorInfo, riid)) {
TRACE("(%p)->(IID_ISupportErrorInfo %p)\n", This, ppv);
else if(IsEqualGUID(&IID_ISupportErrorInfo, riid))
*ppv = &This->ISupportErrorInfo_iface;
}else if(IsEqualGUID(&IID_IPersistHistory, riid)) {
TRACE("(%p)->(IID_IPersistHistory %p)\n", This, ppv);
else if(IsEqualGUID(&IID_IPersistHistory, riid))
*ppv = &This->IPersistHistory_iface;
}else if(IsEqualGUID(&CLSID_CMarkup, riid)) {
else if(IsEqualGUID(&IID_IObjectWithSite, riid))
*ppv = &This->IObjectWithSite_iface;
else if(IsEqualGUID(&IID_IOleContainer, riid))
*ppv = &This->IOleContainer_iface;
else if(IsEqualGUID(&IID_IObjectSafety, riid))
*ppv = &This->IObjectSafety_iface;
else if(IsEqualGUID(&IID_IProvideClassInfo, riid))
*ppv = &This->IProvideClassInfo_iface;
else if(IsEqualGUID(&CLSID_CMarkup, riid)) {
FIXME("(%p)->(CLSID_CMarkup %p)\n", This, ppv);
*ppv = NULL;
}else if(IsEqualGUID(&IID_IRunnableObject, riid)) {
@ -4230,18 +4227,6 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
}else if(IsEqualGUID(&IID_IStdMarshalInfo, riid)) {
TRACE("(%p)->(IID_IStdMarshalInfo %p) returning NULL\n", This, ppv);
*ppv = NULL;
}else if(IsEqualGUID(&IID_IObjectWithSite, riid)) {
TRACE("(%p)->(IID_IObjectWithSite %p)\n", This, ppv);
*ppv = &This->IObjectWithSite_iface;
}else if(IsEqualGUID(&IID_IOleContainer, riid)) {
TRACE("(%p)->(IID_IOleContainer %p)\n", This, ppv);
*ppv = &This->IOleContainer_iface;
}else if(IsEqualGUID(&IID_IObjectSafety, riid)) {
TRACE("(%p)->(IID_IObjectSafety %p)\n", This, ppv);
*ppv = &This->IObjectSafety_iface;
}else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
TRACE("(%p)->(IID_IProvideClassInfo, %p)\n", This, ppv);
*ppv = &This->IProvideClassInfo_iface;
}else {
return FALSE;
}
@ -4304,15 +4289,15 @@ static HRESULT HTMLDocumentNode_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLDocumentNode *This = impl_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(htmldoc_qi(&This->basedoc, riid, ppv))
return *ppv ? S_OK : E_NOINTERFACE;
if(IsEqualGUID(&IID_IInternetHostSecurityManager, riid)) {
TRACE("(%p)->(IID_IInternetHostSecurityManager %p)\n", This, ppv);
if(IsEqualGUID(&IID_IInternetHostSecurityManager, riid))
*ppv = &This->IInternetHostSecurityManager_iface;
}else {
else
return HTMLDOMNode_QI(&This->node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
@ -4344,11 +4329,7 @@ static void HTMLDocumentNode_destructor(HTMLDOMNode *iface)
This->nsnode_selector = NULL;
}
if(This->nsdoc) {
assert(!This->window);
release_document_mutation(This);
nsIDOMHTMLDocument_Release(This->nsdoc);
}else if(This->window) {
if(!This->nsdoc && This->window) {
/* document fragments own reference to inner window */
IHTMLWindow2_Release(&This->window->base.IHTMLWindow2_iface);
This->window = NULL;
@ -4595,19 +4576,19 @@ static HRESULT WINAPI CustomDoc_QueryInterface(ICustomDoc *iface, REFIID riid, v
{
HTMLDocumentObj *This = impl_from_ICustomDoc(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(htmldoc_qi(&This->basedoc, riid, ppv))
return *ppv ? S_OK : E_NOINTERFACE;
if(IsEqualGUID(&IID_ICustomDoc, riid)) {
TRACE("(%p)->(IID_ICustomDoc %p)\n", This, ppv);
*ppv = &This->ICustomDoc_iface;
}else if(IsEqualGUID(&IID_ITargetContainer, riid)) {
TRACE("(%p)->(IID_ITargetContainer %p)\n", This, ppv);
*ppv = &This->ITargetContainer_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
FIXME("Unimplemented interface %s\n", debugstr_guid(riid));
FIXME("Unimplemented interface %s\n", debugstr_mshtml_guid(riid));
*ppv = NULL;
return E_NOINTERFACE;
}
@ -4744,7 +4725,7 @@ HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject)
nsresult nsres;
HRESULT hres;
TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppvObject);
TRACE("(%p %s %p)\n", pUnkOuter, debugstr_mshtml_guid(riid), ppvObject);
doc = heap_alloc_zero(sizeof(HTMLDocumentObj));
if(!doc)

View file

@ -138,6 +138,68 @@ HRESULT replace_node_by_html(nsIDOMHTMLDocument *nsdoc, nsIDOMNode *nsnode, cons
return hres;
}
nsresult get_elem_attr_value(nsIDOMHTMLElement *nselem, const WCHAR *name, nsAString *val_str, const PRUnichar **val)
{
nsAString name_str;
nsresult nsres;
nsAString_InitDepend(&name_str, name);
nsAString_Init(val_str, NULL);
nsres = nsIDOMHTMLElement_GetAttribute(nselem, &name_str, val_str);
nsAString_Finish(&name_str);
if(NS_FAILED(nsres)) {
ERR("GetAttribute(%s) failed: %08x\n", debugstr_w(name), nsres);
nsAString_Finish(val_str);
return nsres;
}
nsAString_GetData(val_str, val);
return NS_OK;
}
HRESULT elem_string_attr_getter(HTMLElement *elem, const WCHAR *name, BOOL use_null, BSTR *p)
{
const PRUnichar *val;
nsAString val_str;
nsresult nsres;
HRESULT hres = S_OK;
nsres = get_elem_attr_value(elem->nselem, name, &val_str, &val);
if(NS_FAILED(nsres))
return E_FAIL;
TRACE("%s: returning %s\n", debugstr_w(name), debugstr_w(val));
if(*val || !use_null) {
*p = SysAllocString(val);
if(!*p)
hres = E_OUTOFMEMORY;
}else {
*p = NULL;
}
nsAString_Finish(&val_str);
return hres;
}
HRESULT elem_string_attr_setter(HTMLElement *elem, const WCHAR *name, const WCHAR *value)
{
nsAString name_str, val_str;
nsresult nsres;
nsAString_InitDepend(&name_str, name);
nsAString_InitDepend(&val_str, value);
nsres = nsIDOMHTMLElement_SetAttribute(elem->nselem, &name_str, &val_str);
nsAString_Finish(&name_str);
nsAString_Finish(&val_str);
if(NS_FAILED(nsres)) {
WARN("SetAttribute failed: %08x\n", nsres);
return E_FAIL;
}
return S_OK;
}
typedef struct
{
DispatchEx dispex;
@ -771,30 +833,53 @@ static HRESULT WINAPI HTMLElement_get_onselectstart(IHTMLElement *iface, VARIANT
static HRESULT WINAPI HTMLElement_scrollIntoView(IHTMLElement *iface, VARIANT varargStart)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&varargStart));
return E_NOTIMPL;
cpp_bool start = TRUE;
nsresult nsres;
TRACE("(%p)->(%s)\n", This, debugstr_variant(&varargStart));
switch(V_VT(&varargStart)) {
case VT_EMPTY:
case VT_ERROR:
break;
case VT_BOOL:
start = V_BOOL(&varargStart) != VARIANT_FALSE;
break;
default:
FIXME("Unsupported argument %s\n", debugstr_variant(&varargStart));
}
if(!This->nselem) {
FIXME("Unsupported for comments\n");
return E_NOTIMPL;
}
nsres = nsIDOMHTMLElement_ScrollIntoView(This->nselem, start, 1);
assert(nsres == NS_OK);
return S_OK;
}
static HRESULT WINAPI HTMLElement_contains(IHTMLElement *iface, IHTMLElement *pChild,
VARIANT_BOOL *pfResult)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
HTMLElement *child;
cpp_bool result;
nsresult nsres;
cpp_bool result = FALSE;
TRACE("(%p)->(%p %p)\n", This, pChild, pfResult);
child = unsafe_impl_from_IHTMLElement(pChild);
if(!child) {
ERR("not our element\n");
return E_FAIL;
}
if(pChild) {
HTMLElement *child;
nsresult nsres;
nsres = nsIDOMNode_Contains(This->node.nsnode, child->node.nsnode, &result);
if(NS_FAILED(nsres)) {
ERR("failed\n");
return E_FAIL;
child = unsafe_impl_from_IHTMLElement(pChild);
if(!child) {
ERR("not our element\n");
return E_FAIL;
}
nsres = nsIDOMNode_Contains(This->node.nsnode, child->node.nsnode, &result);
assert(nsres == NS_OK);
}
*pfResult = result ? VARIANT_TRUE : VARIANT_FALSE;
@ -804,8 +889,10 @@ static HRESULT WINAPI HTMLElement_contains(IHTMLElement *iface, IHTMLElement *pC
static HRESULT WINAPI HTMLElement_get_sourceIndex(IHTMLElement *iface, LONG *p)
{
HTMLElement *This = impl_from_IHTMLElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
TRACE("(%p)->(%p)\n", This, p);
return get_elem_source_index(This, p);
}
static HRESULT WINAPI HTMLElement_get_recordNumber(IHTMLElement *iface, VARIANT *p)
@ -1547,37 +1634,26 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
{
HTMLElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IHTMLElement, riid)) {
TRACE("(%p)->(IID_IHTMLElement %p)\n", This, ppv);
*ppv = &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IHTMLElement2, riid)) {
TRACE("(%p)->(IID_IHTMLElement2 %p)\n", This, ppv);
*ppv = &This->IHTMLElement2_iface;
}else if(IsEqualGUID(&IID_IHTMLElement3, riid)) {
TRACE("(%p)->(IID_IHTMLElement3 %p)\n", This, ppv);
*ppv = &This->IHTMLElement3_iface;
}else if(IsEqualGUID(&IID_IHTMLElement4, riid)) {
TRACE("(%p)->(IID_IHTMLElement4 %p)\n", This, ppv);
*ppv = &This->IHTMLElement4_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
*ppv = &This->cp_container.IConnectionPointContainer_iface;
}else {
return HTMLDOMNode_QI(&This->node, riid, ppv);
}
if(*ppv) {
IHTMLElement_AddRef(&This->IHTMLElement_iface);
return S_OK;
}
return HTMLDOMNode_QI(&This->node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
void HTMLElement_destructor(HTMLDOMNode *iface)
@ -1896,25 +1972,23 @@ static HRESULT WINAPI HTMLFiltersCollection_QueryInterface(IHTMLFiltersCollectio
{
HTMLFiltersCollection *This = impl_from_IHTMLFiltersCollection(iface);
TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppv );
TRACE("%p %s %p\n", This, debugstr_mshtml_guid(riid), ppv );
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLFiltersCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLFiltersCollection, riid)) {
TRACE("(%p)->(IID_IHTMLFiltersCollection %p)\n", This, ppv);
*ppv = &This->IHTMLFiltersCollection_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLFiltersCollection_AddRef(IHTMLFiltersCollection *iface)
@ -2082,31 +2156,24 @@ static HRESULT WINAPI HTMLAttributeCollection_QueryInterface(IHTMLAttributeColle
{
HTMLAttributeCollection *This = impl_from_IHTMLAttributeCollection(iface);
*ppv = NULL;
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLAttributeCollection, riid)) {
TRACE("(%p)->(IID_IHTMLAttributeCollection %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection_iface;
}else if(IsEqualGUID(&IID_IHTMLAttributeCollection2, riid)) {
TRACE("(%p)->(IID_IHTMLAttributeCollection2 %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection2_iface;
}else if(IsEqualGUID(&IID_IHTMLAttributeCollection3, riid)) {
TRACE("(%p)->(IID_IHTMLAttributeCollection3 %p)\n", This, ppv);
*ppv = &This->IHTMLAttributeCollection3_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
*ppv = NULL;
WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
return E_NOINTERFACE;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
return E_NOINTERFACE;
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
static ULONG WINAPI HTMLAttributeCollection_AddRef(IHTMLAttributeCollection *iface)

View file

@ -36,16 +36,16 @@ static HRESULT WINAPI HTMLRect_QueryInterface(IHTMLRect *iface, REFIID riid, voi
{
HTMLRect *This = impl_from_IHTMLRect(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IUnknown, riid)) {
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLRect_iface;
}else if(IsEqualGUID(&IID_IHTMLRect, riid)) {
TRACE("(%p)->(IID_IHTMLRect %p)\n", This, ppv);
*ppv = &This->IHTMLRect_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else {
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
FIXME("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
*ppv = NULL;
return E_NOINTERFACE;
}

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