mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 22:01:43 +00:00
[MODE]
- Localization of output based on a patch by Lee Schroeder, but where I haven't modified yet the output localization of errors. - Dynamically underline the headers of the device status reports (by me). CORE-12178 svn path=/trunk/; revision=72996
This commit is contained in:
parent
d259d035bc
commit
7f59e9a13c
5 changed files with 221 additions and 61 deletions
|
@ -1,6 +1,9 @@
|
|||
|
||||
include_directories(${REACTOS_SOURCE_DIR}/sdk/lib/conutils)
|
||||
|
||||
add_executable(mode mode.c mode.rc)
|
||||
set_module_type(mode win32cui UNICODE)
|
||||
target_link_libraries(mode conutils ${PSEH_LIB})
|
||||
add_importlibs(mode user32 msvcrt kernel32)
|
||||
set_target_properties(mode PROPERTIES SUFFIX ".com")
|
||||
add_cd_file(TARGET mode DESTINATION reactos/system32 FOR all)
|
||||
|
|
67
reactos/base/applications/cmdutils/mode/lang/en-US.rc
Normal file
67
reactos/base/applications/cmdutils/mode/lang/en-US.rc
Normal file
|
@ -0,0 +1,67 @@
|
|||
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_USAGE "Configure System Devices.\n\n\
|
||||
Device Status: MODE [device] [/STATUS]\n\
|
||||
Serial port: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]\n\
|
||||
[to=on|off] [xon=on|off] [odsr=on|off]\n\
|
||||
[octs=on|off] [dtr=on|off|hs]\n\
|
||||
[rts=on|off|hs|tg] [idsr=on|off]\n\
|
||||
Redirect printing: MODE LPTn[:]=COMm[:]\n\
|
||||
Select code page: MODE CON[:] CP SELECT=yyy\n\
|
||||
Code page status: MODE CON[:] CP [/STATUS]\n\
|
||||
Display mode: MODE CON[:] [COLS=c] [LINES=n]\n\
|
||||
Typematic rate: MODE CON[:] [RATE=r DELAY=d]\n"
|
||||
|
||||
IDS_QUERY_SERIAL_FOUND " Found serial device - %s\n"
|
||||
IDS_QUERY_PRINTER_FOUND " Found printer device - %s\n"
|
||||
IDS_QUERY_PARALLEL_FOUND " Found parallel device - %s\n"
|
||||
IDS_QUERY_DOSDEV_FOUND " Found DOS device - %s\n"
|
||||
// IDS_QUERY_MISC_FOUND " Found other device - %s\n"
|
||||
|
||||
// IDS_QUERY_DEVICE_FOUND " Found %s device - %s\n"
|
||||
// IDS_SERIAL "serial"
|
||||
// IDS_PRINTER "parallel"
|
||||
// IDS_OTHER "other"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_DEVICE_STATUS_HEADER "Status for device %s:"
|
||||
|
||||
IDS_COM_STATUS_BAUD " Baud: %ld\n"
|
||||
IDS_COM_STATUS_PARITY " Parity: %s\n"
|
||||
IDS_COM_STATUS_DATA_BITS " Data Bits: %d\n"
|
||||
IDS_COM_STATUS_STOP_BITS " Stop Bits: %s\n"
|
||||
IDS_COM_STATUS_TIMEOUT " Timeout: %s\n"
|
||||
IDS_COM_STATUS_XON_XOFF " XON/XOFF: %s\n"
|
||||
IDS_COM_STATUS_CTS_HANDSHAKING " CTS handshaking: %s\n"
|
||||
IDS_COM_STATUS_DSR_HANDSHAKING " DSR handshaking: %s\n"
|
||||
IDS_COM_STATUS_DSR_SENSITIVITY " DSR sensitivity: %s\n"
|
||||
IDS_COM_STATUS_DTR_CIRCUIT " DTR circuit: %s\n"
|
||||
IDS_COM_STATUS_RTS_CIRCUIT " RTS circuit: %s\n"
|
||||
|
||||
IDS_CONSOLE_STATUS_LINES " Lines: %d\n"
|
||||
IDS_CONSOLE_STATUS_COLS " Columns: %d\n"
|
||||
IDS_CONSOLE_KBD_DELAY " Keyboard delay: %ld\n"
|
||||
IDS_CONSOLE_KBD_RATE " Keyboard rate: %ld\n"
|
||||
IDS_CONSOLE_CODEPAGE " Code page: %d\n"
|
||||
|
||||
IDS_PRINTER_OUTPUT_NOT_REROUTED " Printer output is not being rerouted.\n"
|
||||
IDS_PRINTER_OUTPUT_REROUTED_SERIAL " Printer output is being rerouted to serial port %s.\n"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_ERROR_QUERY_DEVICES "ERROR: Unable to query DOS devices (0x%lx).\n"
|
||||
IDS_ERROR_QUERY_DEVICES_FORM " QueryDosDeviceW(%s) returned unrecognised form %s.\n"
|
||||
IDS_ERROR_SET_PARALLEL_STATE "SetParallelState(%d) - DefineDosDevice(%s) (0x%lx)\n"
|
||||
IDS_ERROR_INVALID_PARAMETER "ERROR: Invalid parameter - %s\n"
|
||||
IDS_ERROR_ILLEGAL_DEVICE_NAME "ERROR: Illegal device name - %s (0x%lx)\n"
|
||||
IDS_ERROR_STATUS_GET_DEVICE "ERROR: Failed to get the status for device COM%d:\n"
|
||||
IDS_ERROR_STATUS_SET_DEVICE "ERROR: Failed to set the status for device COM%d:\n"
|
||||
IDS_ERROR_INVALID_PARITY_BITS "ERROR: Invalid value for Parity Bits %d:\n"
|
||||
IDS_ERROR_INVALID_STOP_BITS "ERROR: Invalid value for Stop Bits %d:\n"
|
||||
IDS_ERROR_NO_MEMORY "ERROR: Not enough memory.\n"
|
||||
END
|
|
@ -35,35 +35,44 @@
|
|||
#include <winuser.h>
|
||||
#include <wincon.h>
|
||||
|
||||
#include <conutils.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
#define MAX_PORTNAME_LEN 20
|
||||
#define MAX_COMPORT_NUM 10
|
||||
|
||||
#define ASSERT(a)
|
||||
|
||||
const WCHAR* const usage_strings[] =
|
||||
/*** For fixes, see also network/net/main.c ***/
|
||||
// VOID PrintPadding(...)
|
||||
INT
|
||||
__cdecl
|
||||
UnderlinedResPrintf(
|
||||
IN PCON_STREAM Stream,
|
||||
IN UINT uID,
|
||||
...)
|
||||
{
|
||||
L"Device Status: MODE [device] [/STATUS]",
|
||||
L"Select code page: MODE CON[:] CP SELECT=yyy",
|
||||
L"Code page status: MODE CON[:] CP [/STATUS]",
|
||||
L"Display mode: MODE CON[:] [COLS=c] [LINES=n]",
|
||||
L"Typematic rate: MODE CON[:] [RATE=r DELAY=d]",
|
||||
L"Redirect printing: MODE LPTn[:]=COMm[:]",
|
||||
L"Serial port: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]\n" \
|
||||
L" [to=on|off] [xon=on|off] [odsr=on|off]\n" \
|
||||
L" [octs=on|off] [dtr=on|off|hs]\n" \
|
||||
L" [rts=on|off|hs|tg] [idsr=on|off]",
|
||||
};
|
||||
INT Len;
|
||||
va_list args;
|
||||
|
||||
void Usage(void)
|
||||
{
|
||||
UINT i;
|
||||
#define MAX_BUFFER_SIZE 4096
|
||||
INT i;
|
||||
WCHAR szMsgBuffer[MAX_BUFFER_SIZE];
|
||||
|
||||
wprintf(L"\nConfigures system devices.\n\n");
|
||||
for (i = 0; i < ARRAYSIZE(usage_strings); i++)
|
||||
{
|
||||
wprintf(L"%s\n", usage_strings[i]);
|
||||
}
|
||||
wprintf(L"\n");
|
||||
va_start(args, uID);
|
||||
Len = ConResPrintfV(Stream, uID, args);
|
||||
va_end(args);
|
||||
|
||||
ConPuts(Stream, L"\n");
|
||||
for (i = 0; i < Len; i++)
|
||||
szMsgBuffer[i] = L'-';
|
||||
szMsgBuffer[Len] = UNICODE_NULL;
|
||||
|
||||
// FIXME: Use ConStreamWrite instead.
|
||||
ConPuts(Stream, szMsgBuffer);
|
||||
|
||||
return Len;
|
||||
}
|
||||
|
||||
int QueryDevices(VOID)
|
||||
|
@ -79,26 +88,30 @@ int QueryDevices(VOID)
|
|||
{
|
||||
if (wcsstr(ptr, L"COM"))
|
||||
{
|
||||
wprintf(L" Found serial device - %s\n", ptr);
|
||||
ConResPrintf(StdOut, IDS_QUERY_SERIAL_FOUND, ptr);
|
||||
}
|
||||
else if (wcsstr(ptr, L"PRN"))
|
||||
{
|
||||
wprintf(L" Found printer device - %s\n", ptr);
|
||||
ConResPrintf(StdOut, IDS_QUERY_PRINTER_FOUND, ptr);
|
||||
}
|
||||
else if (wcsstr(ptr, L"LPT"))
|
||||
{
|
||||
wprintf(L" Found parallel device - %s\n", ptr);
|
||||
ConResPrintf(StdOut, IDS_QUERY_PARALLEL_FOUND, ptr);
|
||||
}
|
||||
else if (wcsstr(ptr, L"AUX") || wcsstr(ptr, L"NUL"))
|
||||
{
|
||||
ConResPrintf(StdOut, IDS_QUERY_DOSDEV_FOUND, ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
// wprintf(L" Found other device - %s\n", ptr);
|
||||
// ConResPrintf(StdOut, IDS_QUERY_MISC_FOUND, ptr);
|
||||
}
|
||||
ptr += (wcslen(ptr) + 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wprintf(L" ERROR: QueryDosDeviceW(...) failed: 0x%lx\n", GetLastError());
|
||||
wprintf(L"ERROR: QueryDosDeviceW(...) failed: 0x%lx\n", GetLastError());
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -109,21 +122,21 @@ int ShowParallelStatus(INT nPortNum)
|
|||
WCHAR szPortName[MAX_PORTNAME_LEN];
|
||||
|
||||
swprintf(szPortName, L"LPT%d", nPortNum);
|
||||
wprintf(L"\nStatus for device LPT%d:\n", nPortNum);
|
||||
wprintf(L"-----------------------\n");
|
||||
|
||||
ConPuts(StdOut, L"\n");
|
||||
UnderlinedResPrintf(StdOut, IDS_DEVICE_STATUS_HEADER, szPortName);
|
||||
ConPuts(StdOut, L"\n");
|
||||
|
||||
if (QueryDosDeviceW(szPortName, buffer, ARRAYSIZE(buffer)))
|
||||
{
|
||||
WCHAR* ptr = wcsrchr(buffer, L'\\');
|
||||
if (ptr != NULL)
|
||||
{
|
||||
if (_wcsicmp(szPortName, ++ptr) == 0)
|
||||
{
|
||||
wprintf(L" Printer output is not being rerouted.\n");
|
||||
}
|
||||
ConResPuts(StdOut, IDS_PRINTER_OUTPUT_NOT_REROUTED);
|
||||
else
|
||||
{
|
||||
wprintf(L" Printer output is being rerouted to serial port %s\n", ptr);
|
||||
}
|
||||
ConResPrintf(StdOut, IDS_PRINTER_OUTPUT_REROUTED_SERIAL, ptr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
|
@ -133,8 +146,9 @@ int ShowParallelStatus(INT nPortNum)
|
|||
}
|
||||
else
|
||||
{
|
||||
wprintf(L" ERROR: QueryDosDeviceW(%s) failed: 0x%lx\n", szPortName, GetLastError());
|
||||
wprintf(L"ERROR: QueryDosDeviceW(%s) failed: 0x%lx\n", szPortName, GetLastError());
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -193,30 +207,34 @@ int ShowConsoleStatus(VOID)
|
|||
CONSOLE_SCREEN_BUFFER_INFO csbi;
|
||||
DWORD dwKbdDelay, dwKbdSpeed;
|
||||
|
||||
wprintf(L"\nStatus for device CON:\n");
|
||||
wprintf(L"-----------------------\n");
|
||||
ConPuts(StdOut, L"\n");
|
||||
UnderlinedResPrintf(StdOut, IDS_DEVICE_STATUS_HEADER, L"CON");
|
||||
ConPuts(StdOut, L"\n");
|
||||
|
||||
if (GetConsoleScreenBufferInfo(hConOut, &csbi))
|
||||
{
|
||||
wprintf(L" Lines: %d\n", csbi.dwSize.Y);
|
||||
wprintf(L" Columns: %d\n", csbi.dwSize.X);
|
||||
ConResPrintf(StdOut, IDS_CONSOLE_STATUS_LINES, csbi.dwSize.Y);
|
||||
ConResPrintf(StdOut, IDS_CONSOLE_STATUS_COLS , csbi.dwSize.X);
|
||||
}
|
||||
if (SystemParametersInfoW(SPI_GETKEYBOARDDELAY, 0, &dwKbdDelay, 0))
|
||||
{
|
||||
wprintf(L" Keyboard delay: %ld\n", dwKbdDelay);
|
||||
ConResPrintf(StdOut, IDS_CONSOLE_KBD_DELAY, dwKbdDelay);
|
||||
}
|
||||
if (SystemParametersInfoW(SPI_GETKEYBOARDSPEED, 0, &dwKbdSpeed, 0))
|
||||
{
|
||||
wprintf(L" Keyboard rate: %ld\n", dwKbdSpeed);
|
||||
ConResPrintf(StdOut, IDS_CONSOLE_KBD_RATE, dwKbdSpeed);
|
||||
}
|
||||
wprintf(L" Code page: %d\n", GetConsoleOutputCP());
|
||||
ConResPrintf(StdOut, IDS_CONSOLE_CODEPAGE, GetConsoleOutputCP());
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ShowConsoleCPStatus(VOID)
|
||||
{
|
||||
wprintf(L"\nStatus for device CON:\n");
|
||||
wprintf(L"-----------------------\n");
|
||||
wprintf(L" Code page: %d\n", GetConsoleOutputCP());
|
||||
ConPuts(StdOut, L"\n");
|
||||
UnderlinedResPrintf(StdOut, IDS_DEVICE_STATUS_HEADER, L"CON");
|
||||
ConPuts(StdOut, L"\n");
|
||||
|
||||
ConResPrintf(StdOut, IDS_CONSOLE_CODEPAGE, GetConsoleOutputCP());
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -567,6 +585,7 @@ int ShowSerialStatus(INT nPortNum)
|
|||
|
||||
DCB dcb;
|
||||
COMMTIMEOUTS CommTimeouts;
|
||||
WCHAR szPortName[MAX_PORTNAME_LEN];
|
||||
|
||||
if (!SerialPortQuery(nPortNum, &dcb, &CommTimeouts, FALSE))
|
||||
{
|
||||
|
@ -582,21 +601,30 @@ int ShowSerialStatus(INT nPortNum)
|
|||
wprintf(L"ERROR: Invalid value for Stop Bits %d:\n", dcb.StopBits);
|
||||
dcb.StopBits = 0;
|
||||
}
|
||||
wprintf(L"\nStatus for device COM%d:\n", nPortNum);
|
||||
wprintf(L"-----------------------\n");
|
||||
wprintf(L" Baud: %ld\n", dcb.BaudRate);
|
||||
wprintf(L" Parity: %s\n", parity_strings[dcb.Parity]);
|
||||
wprintf(L" Data Bits: %d\n", dcb.ByteSize);
|
||||
wprintf(L" Stop Bits: %s\n", stopbit_strings[dcb.StopBits]);
|
||||
wprintf(L" Timeout: %s\n",
|
||||
(CommTimeouts.ReadTotalTimeoutConstant != 0) ||
|
||||
(CommTimeouts.WriteTotalTimeoutConstant != 0) ? L"ON" : L"OFF");
|
||||
wprintf(L" XON/XOFF: %s\n", dcb.fOutX ? L"ON" : L"OFF");
|
||||
wprintf(L" CTS handshaking: %s\n", dcb.fOutxCtsFlow ? L"ON" : L"OFF");
|
||||
wprintf(L" DSR handshaking: %s\n", dcb.fOutxDsrFlow ? L"ON" : L"OFF");
|
||||
wprintf(L" DSR sensitivity: %s\n", dcb.fDsrSensitivity ? L"ON" : L"OFF");
|
||||
wprintf(L" DTR circuit: %s\n", control_strings[dcb.fDtrControl]);
|
||||
wprintf(L" RTS circuit: %s\n", control_strings[dcb.fRtsControl]);
|
||||
|
||||
swprintf(szPortName, L"COM%d", nPortNum);
|
||||
|
||||
ConPuts(StdOut, L"\n");
|
||||
UnderlinedResPrintf(StdOut, IDS_DEVICE_STATUS_HEADER, szPortName);
|
||||
ConPuts(StdOut, L"\n");
|
||||
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_BAUD, dcb.BaudRate);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_PARITY, parity_strings[dcb.Parity]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_DATA_BITS, dcb.ByteSize);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_STOP_BITS, stopbit_strings[dcb.StopBits]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_TIMEOUT,
|
||||
control_strings[(CommTimeouts.ReadTotalTimeoutConstant != 0) ||
|
||||
(CommTimeouts.WriteTotalTimeoutConstant != 0) ? 1 : 0]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_XON_XOFF,
|
||||
control_strings[dcb.fOutX ? 1 : 0]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_CTS_HANDSHAKING,
|
||||
control_strings[dcb.fOutxCtsFlow ? 1 : 0]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_DSR_HANDSHAKING,
|
||||
control_strings[dcb.fOutxDsrFlow ? 1 : 0]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_DSR_SENSITIVITY,
|
||||
control_strings[dcb.fDsrSensitivity ? 1 : 0]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_DTR_CIRCUIT, control_strings[dcb.fDtrControl]);
|
||||
ConResPrintf(StdOut, IDS_COM_STATUS_RTS_CIRCUIT, control_strings[dcb.fRtsControl]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1080,6 +1108,9 @@ int wmain(int argc, WCHAR* argv[])
|
|||
|
||||
INT nPortNum;
|
||||
|
||||
/* Initialize the Console Standard Streams */
|
||||
ConInitStdStreams();
|
||||
|
||||
/*
|
||||
* MODE.COM has a very peculiar way of parsing its arguments,
|
||||
* as they can be even not separated by any space. This extreme
|
||||
|
@ -1130,7 +1161,7 @@ int wmain(int argc, WCHAR* argv[])
|
|||
|
||||
if (wcsstr(argStr, L"/?") || wcsstr(argStr, L"-?"))
|
||||
{
|
||||
Usage();
|
||||
ConResPuts(StdOut, IDS_USAGE);
|
||||
goto Quit;
|
||||
}
|
||||
else if (_wcsnicmp(argStr, L"/STA", 4) == 0)
|
||||
|
|
|
@ -1,5 +1,17 @@
|
|||
#include <windef.h>
|
||||
|
||||
#include "resource.h"
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Mode Utility"
|
||||
#define REACTOS_STR_INTERNAL_NAME "mode"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "mode.com"
|
||||
#include <reactos/version.rc>
|
||||
|
||||
/* UTF-8 */
|
||||
#pragma code_page(65001)
|
||||
|
||||
#ifdef LANGUAGE_EN_US
|
||||
#include "lang/en-US.rc"
|
||||
#endif
|
||||
|
|
47
reactos/base/applications/cmdutils/mode/resource.h
Normal file
47
reactos/base/applications/cmdutils/mode/resource.h
Normal file
|
@ -0,0 +1,47 @@
|
|||
#ifndef RESOURCE_H
|
||||
#define RESOURCE_H
|
||||
|
||||
#define IDS_USAGE 0
|
||||
|
||||
#define IDS_QUERY_SERIAL_FOUND 1
|
||||
#define IDS_QUERY_PRINTER_FOUND 2
|
||||
#define IDS_QUERY_PARALLEL_FOUND 3
|
||||
// #define IDS_QUERY_MISC_FOUND 4
|
||||
#define IDS_QUERY_DOSDEV_FOUND 4
|
||||
// #define IDS_QUERY_DEVICE_FOUND 1
|
||||
// #define IDS_SERIAL 2
|
||||
// #define IDS_PRINTER 3
|
||||
// #define IDS_OTHER 4
|
||||
|
||||
#define IDS_DEVICE_STATUS_HEADER 5
|
||||
#define IDS_COM_STATUS_BAUD 6
|
||||
#define IDS_COM_STATUS_PARITY 7
|
||||
#define IDS_COM_STATUS_DATA_BITS 8
|
||||
#define IDS_COM_STATUS_STOP_BITS 9
|
||||
#define IDS_COM_STATUS_TIMEOUT 10
|
||||
#define IDS_COM_STATUS_XON_XOFF 11
|
||||
#define IDS_COM_STATUS_CTS_HANDSHAKING 12
|
||||
#define IDS_COM_STATUS_DSR_HANDSHAKING 13
|
||||
#define IDS_COM_STATUS_DSR_SENSITIVITY 14
|
||||
#define IDS_COM_STATUS_DTR_CIRCUIT 15
|
||||
#define IDS_COM_STATUS_RTS_CIRCUIT 16
|
||||
#define IDS_CONSOLE_STATUS_LINES 17
|
||||
#define IDS_CONSOLE_STATUS_COLS 18
|
||||
#define IDS_CONSOLE_KBD_DELAY 19
|
||||
#define IDS_CONSOLE_KBD_RATE 20
|
||||
#define IDS_CONSOLE_CODEPAGE 21
|
||||
#define IDS_PRINTER_OUTPUT_NOT_REROUTED 22
|
||||
#define IDS_PRINTER_OUTPUT_REROUTED_SERIAL 23
|
||||
|
||||
#define IDS_ERROR_QUERY_DEVICES 24
|
||||
#define IDS_ERROR_QUERY_DEVICES_FORM 25
|
||||
#define IDS_ERROR_SET_PARALLEL_STATE 26
|
||||
#define IDS_ERROR_INVALID_PARAMETER 27
|
||||
#define IDS_ERROR_ILLEGAL_DEVICE_NAME 28
|
||||
#define IDS_ERROR_STATUS_GET_DEVICE 29
|
||||
#define IDS_ERROR_STATUS_SET_DEVICE 30
|
||||
#define IDS_ERROR_INVALID_PARITY_BITS 31
|
||||
#define IDS_ERROR_INVALID_STOP_BITS 32
|
||||
#define IDS_ERROR_NO_MEMORY 33
|
||||
|
||||
#endif /* RESOURCE_H */
|
Loading…
Add table
Add a link
Reference in a new issue