本文整理汇总了C++中GetConsoleCP函数的典型用法代码示例。如果您正苦于以下问题:C++ GetConsoleCP函数的具体用法?C++ GetConsoleCP怎么用?C++ GetConsoleCP使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetConsoleCP函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnReadConsoleInputA
BOOL WINAPI OnReadConsoleInputA(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead)
{
//typedef BOOL (WINAPI* OnReadConsoleInputA_t)(HANDLE hConsoleInput, PINPUT_RECORD lpBuffer, DWORD nLength, LPDWORD lpNumberOfEventsRead);
SUPPRESSORIGINALSHOWCALL;
ORIGINAL_KRNL(ReadConsoleInputA);
//if (gpFarInfo && bMainThread)
// TouchReadPeekConsoleInputs(0);
BOOL lbRc = FALSE;
#if defined(_DEBUG)
#if 1
UINT nCp = GetConsoleCP();
UINT nOutCp = GetConsoleOutputCP();
UINT nOemCp = GetOEMCP();
UINT nAnsiCp = GetACP();
#endif
#endif
// To minimize startup duration and possible problems
// hook server will start on first 'user interaction'
CheckHookServer();
if (ph && ph->PreCallBack)
{
SETARGS4(&lbRc,hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead);
// Если функция возвращает FALSE - реальное чтение не будет вызвано
if (!ph->PreCallBack(&args))
return lbRc;
}
CESERVER_CONSOLE_APP_MAPPING* pAppMap = NULL;
PreReadConsoleInput(hConsoleInput, rcif_Ansi|rcif_LLInput, &pAppMap);
//#ifdef USE_INPUT_SEMAPHORE
//DWORD nSemaphore = ghConInSemaphore ? WaitForSingleObject(ghConInSemaphore, INSEMTIMEOUT_READ) : 1;
//_ASSERTE(nSemaphore<=1);
//#endif
lbRc = F(ReadConsoleInputA)(hConsoleInput, lpBuffer, nLength, lpNumberOfEventsRead);
PostReadConsoleInput(hConsoleInput, rcif_Ansi|rcif_LLInput, pAppMap);
//#ifdef USE_INPUT_SEMAPHORE
//if ((nSemaphore == WAIT_OBJECT_0) && ghConInSemaphore) ReleaseSemaphore(ghConInSemaphore, 1, NULL);
//#endif
if (ph && ph->PostCallBack)
{
SETARGS4(&lbRc,hConsoleInput,lpBuffer,nLength,lpNumberOfEventsRead);
ph->PostCallBack(&args);
}
if (lbRc && lpNumberOfEventsRead && *lpNumberOfEventsRead && lpBuffer)
{
OnPeekReadConsoleInput('R', 'A', hConsoleInput, lpBuffer, *lpNumberOfEventsRead);
}
return lbRc;
}
示例2: LF
WCHAR *WCMD_fgets(WCHAR *buf, DWORD noChars, HANDLE h)
{
DWORD charsRead;
BOOL status;
DWORD i;
/* We can't use the native f* functions because of the filename syntax differences
between DOS and Unix. Also need to lose the LF (or CRLF) from the line. */
if (!WCMD_is_console_handle(h)) {
LARGE_INTEGER filepos;
char *bufA;
UINT cp;
const char *p;
cp = GetConsoleCP();
bufA = heap_alloc(noChars);
/* Save current file position */
filepos.QuadPart = 0;
SetFilePointerEx(h, filepos, &filepos, FILE_CURRENT);
status = ReadFile(h, bufA, noChars, &charsRead, NULL);
if (!status || charsRead == 0) {
heap_free(bufA);
return NULL;
}
/* Find first EOL */
for (p = bufA; p < (bufA + charsRead); p = CharNextExA(cp, p, 0)) {
if (*p == '\n' || *p == '\r')
break;
}
/* Sets file pointer to the start of the next line, if any */
filepos.QuadPart += p - bufA + 1 + (*p == '\r' ? 1 : 0);
SetFilePointerEx(h, filepos, NULL, FILE_BEGIN);
i = MultiByteToWideChar(cp, 0, bufA, p - bufA, buf, noChars);
heap_free(bufA);
}
else {
status = WCMD_ReadFile(h, buf, noChars, &charsRead);
if (!status || charsRead == 0) return NULL;
/* Find first EOL */
for (i = 0; i < charsRead; i++) {
if (buf[i] == '\n' || buf[i] == '\r')
break;
}
}
/* Truncate at EOL (or end of buffer) */
if (i == noChars)
i--;
buf[i] = '\0';
return buf;
}
示例3: php_win32_cp_get_enc
PW32CP const struct php_win32_cp *php_win32_cp_do_setup(const char *enc)
{/*{{{*/
if (!enc) {
enc = php_win32_cp_get_enc();
}
cur_cp = php_win32_cp_get_by_enc(enc);
if (!orig_cp) {
orig_cp = php_win32_cp_get_by_id(GetACP());
}
if (!strcmp(sapi_module.name, "cli")) {
if (!orig_in_cp) {
orig_in_cp = php_win32_cp_get_by_id(GetConsoleCP());
if (!orig_in_cp) {
orig_in_cp = orig_cp;
}
}
if (!orig_out_cp) {
orig_out_cp = php_win32_cp_get_by_id(GetConsoleOutputCP());
if (!orig_out_cp) {
orig_out_cp = orig_cp;
}
}
php_win32_cp_cli_io_setup();
}
return cur_cp;
}/*}}}*/
示例4: rb_locale_charmap
/*
* call-seq:
* Encoding.locale_charmap -> string
*
* Returns the locale charmap name.
* It returns nil if no appropriate information.
*
* Debian GNU/Linux
* LANG=C
* Encoding.locale_charmap #=> "ANSI_X3.4-1968"
* LANG=ja_JP.EUC-JP
* Encoding.locale_charmap #=> "EUC-JP"
*
* SunOS 5
* LANG=C
* Encoding.locale_charmap #=> "646"
* LANG=ja
* Encoding.locale_charmap #=> "eucJP"
*
* The result is highly platform dependent.
* So Encoding.find(Encoding.locale_charmap) may cause an error.
* If you need some encoding object even for unknown locale,
* Encoding.find("locale") can be used.
*
*/
VALUE
rb_locale_charmap(VALUE klass)
{
#if defined NO_LOCALE_CHARMAP
return rb_usascii_str_new2("ASCII-8BIT");
#elif defined _WIN32 || defined __CYGWIN__
const char *codeset = 0;
char cp[sizeof(int) * 3 + 4];
# ifdef __CYGWIN__
const char *nl_langinfo_codeset(void);
codeset = nl_langinfo_codeset();
# endif
if (!codeset) {
UINT codepage = GetConsoleCP();
if (!codepage) codepage = GetACP();
snprintf(cp, sizeof(cp), "CP%d", codepage);
codeset = cp;
}
return rb_usascii_str_new2(codeset);
#elif defined HAVE_LANGINFO_H
char *codeset;
codeset = nl_langinfo(CODESET);
return rb_usascii_str_new2(codeset);
#else
return Qnil;
#endif
}
示例5: _Py_device_encoding
PyObject *
_Py_device_encoding(int fd)
{
#if defined(MS_WINDOWS)
UINT cp;
#endif
if (!_PyVerify_fd(fd) || !isatty(fd)) {
Py_RETURN_NONE;
}
#if defined(MS_WINDOWS)
if (fd == 0)
cp = GetConsoleCP();
else if (fd == 1 || fd == 2)
cp = GetConsoleOutputCP();
else
cp = 0;
/* GetConsoleCP() and GetConsoleOutputCP() return 0 if the application
has no console */
if (cp != 0)
return PyUnicode_FromFormat("cp%u", (unsigned int)cp);
#elif defined(CODESET)
{
char *codeset = nl_langinfo(CODESET);
if (codeset != NULL && codeset[0] != 0)
return PyUnicode_FromString(codeset);
}
#endif
Py_RETURN_NONE;
}
示例6: locale_charmap
static VALUE
locale_charmap(VALUE (*conv)(const char *))
{
#if defined NO_LOCALE_CHARMAP
# error NO_LOCALE_CHARMAP defined
#elif defined _WIN32 || defined __CYGWIN__
const char *codeset = 0;
char cp[SIZEOF_CP_NAME];
# ifdef __CYGWIN__
const char *nl_langinfo_codeset(void);
codeset = nl_langinfo_codeset();
# endif
if (!codeset) {
UINT codepage = GetConsoleCP();
if (!codepage) codepage = GetACP();
CP_FORMAT(cp, codepage);
codeset = cp;
}
return (*conv)(codeset);
#elif defined HAVE_LANGINFO_H
char *codeset;
codeset = nl_langinfo(CODESET);
return (*conv)(codeset);
#else
return ENCINDEX_US_ASCII;
#endif
}
示例7: wide
/* Not thread safe
Assumes the string to convert was received from the console.
*/
static wchar_t* wide(const char* fname) {
static wchar_t *buf=0;
static int len=0;
int n;
ERR(n=MultiByteToWideChar(GetConsoleCP(),0,fname,(int)strlen(fname),buf,0));
if(len<n) {
if(buf)
VirtualFree(buf,0,MEM_RELEASE);
ERR(buf=VirtualAlloc(0,(n+1)*sizeof(wchar_t),MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE));
len=n;
}
ERR(MultiByteToWideChar(GetConsoleCP(),0,fname,(int)strlen(fname),buf,len));
return buf;
Error:
exit(-1);
return 0;
}
示例8: getConsoleEncoding
static char* getConsoleEncoding()
{
char* buf = malloc(16);
int cp = GetConsoleCP();
if (cp >= 874 && cp <= 950)
sprintf(buf, "ms%d", cp);
else
sprintf(buf, "cp%d", cp);
return buf;
}
示例9: m_inputCP
/** Initialize the console. */
ConsoleInitializer::ConsoleInitializer()
: m_inputCP(GetConsoleCP()), m_outputCP(GetConsoleOutputCP())
{
// http://msdn.microsoft.com/en-us/library/ms686036%28VS.85%29.aspx
//bool b1 = SetConsoleCP(65001); // set to UTF-8
//bool b2 = SetConsoleOutputCP(65001); // set to UTF-8
//bool b1 = SetConsoleCP(1200); // set to UTF-16LE
//bool b2 = SetConsoleOutputCP(1200); // set to UTF-16LE
//unsigned inputCP = GetConsoleCP();
//unsigned outputCP = GetConsoleOutputCP();
}
示例10: gsdll_stdin_utf8
/* stdio functions - versions that translate to/from utf-8 */
static int GSDLLCALL
gsdll_stdin_utf8(void *instance, char *buf, int len)
{
static WCHAR thiswchar = 0; /* wide character to convert to multiple bytes */
static int nmore = 0; /* number of additional encoding bytes to generate */
UINT consolecp = 0;
int nret = 0; /* number of bytes returned to caller */
int i;
while (len) {
while (len && nmore) {
nmore--;
*buf++ = 0x80 | ((thiswchar >> (6 * nmore)) & 0x3F), nret++;
len--;
}
while (len) {
if (0 >= _read(fileno(stdin), buf, 1))
return nret;
nret++, buf++, len--;
if (buf[-1] == '\n')
/* return at end of line (note: no traslation needed) */
return nret;
else if ((unsigned char)buf[-1] <= 0x7F)
/* no translation needed for 7-bit ASCII codes */
continue;
else {
/* extended character, may be double */
BYTE dbcsstr[2];
dbcsstr[0] = buf[-1];
if (!consolecp)
consolecp = GetConsoleCP();
thiswchar = L'?'; /* initialize in case the conversion below fails */
if (IsDBCSLeadByteEx(consolecp, dbcsstr[0])) {
/* double-byte character code, fetch the trail byte */
_read(fileno(stdin), &dbcsstr[1], 1);
MultiByteToWideChar(consolecp, 0, dbcsstr, 2, &thiswchar, 1);
}
else {
MultiByteToWideChar(consolecp, 0, dbcsstr, 1, &thiswchar, 1);
}
/* convert thiswchar to utf-8 */
if (thiswchar <= 0x007F) { /* encoded as single byte */
buf[-1] = (char)thiswchar;
} else if (thiswchar <= 0x07FF) { /* encoded as 2 bytes */
buf[-1] = 0xC0 | ((thiswchar >> 6) & 0x1F);
nmore = 1;
break;
} else if (thiswchar <= 0xFFFF) { /* encoded as 3 bytes */
buf[-1] = 0xE0 | ((thiswchar >> 12) & 0xF);
nmore = 2;
break;
} else
示例11: QDialog
DiagnosticsDialog::DiagnosticsDialog( QWidget *parent )
: QDialog( parent )
{
setupUi( this );
setAttribute( Qt::WA_DeleteOnClose, true );
QString info;
QTextStream s( &info );
s << "<b>" << tr("Locale (time-, number format / codepage):") << "</b> ";
QLocale::Language language = QLocale::system().language();
QString locale = (language == QLocale::C ? "English/United States" : QLocale::languageToString( language ) );
CPINFOEX CPInfoEx;
if ( GetCPInfoEx( GetConsoleCP(), 0, &CPInfoEx ) != 0 )
locale.append( " / " ).append( CPInfoEx.CodePageName );
s << locale << "<br />";
s << "<b>" << tr("User rights: ") << "</b>" << getUserRights() << "<br />";
QStringList base = Common::packages( QStringList() << "Eesti ID kaardi tarkvara", false );
if ( !base.isEmpty() )
s << "<b>" << tr("Base version:") << "</b> " << base.join( "<br />" ) << "<br />";
s << "<b>" << tr("ID-card utility version:") << "</b> "<< QCoreApplication::applicationVersion() << "<br />";
s << "<b>" << tr("OS:") << "</b> " << Common::applicationOs() << "<br />";
s << "<b>" << tr("CPU:") << "</b> " << getProcessor() << "<br /><br />";
s << "<b>" << tr("Library paths:") << "</b> " << QCoreApplication::libraryPaths().join( ";" ) << "<br />";
s << "<b>" << tr("Libraries") << ":</b><br />";
s << getLibVersion( "digidoc" ) << "<br />";
s << getLibVersion( "digidocpp" ) << "<br />";
s << getLibVersion( "advapi32" ) << "<br />";
s << getLibVersion( "crypt32" ) << "<br />";
s << getLibVersion( "winscard" ) << "<br />";
s << getLibVersion( "esteidcsp|esteidcm" ) << "<br />";
s << getLibVersion( "libeay32" ) << "<br />";
s << getLibVersion( "ssleay32" ) << "<br />";
s << getLibVersion( "opensc-pkcs11" ) << "<br />";
s << "QT (" << qVersion() << ")<br />" << "<br />";
s << "<b>" << tr("Smart Card service status: ") << "</b>" << " " << (isPCSCRunning() ? tr("Running") : tr("Not running")) << "<br /><br />";
s << "<b>" << tr("Card readers") << ":</b><br />" << getReaderInfo() << "<br />";
QStringList browsers = Common::packages( QStringList() << "Mozilla" << "Google Chrome" );
QSettings reg( "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Internet Explorer", QSettings::NativeFormat );
browsers << QString( "Internet Explorer (%1)" ).arg( reg.value( "Version" ).toString() );
s << "<b>" << tr("Browsers:") << "</b><br />" << browsers.join( "<br />" ) << "<br /><br />";
diagnosticsText->setHtml( info );
details = buttonBox->addButton( tr( "More info" ), QDialogButtonBox::HelpRole );
}
示例12: subsurface_console_init
void subsurface_console_init(bool dedicated)
{
(void)console_desc;
/* if this is a console app already, do nothing */
#ifndef WIN32_CONSOLE_APP
/* just in case of multiple calls */
memset((void *)&console_desc, 0, sizeof(console_desc));
/* the AttachConsole(..) call can be used to determine if the parent process
* is a terminal. if it succeeds, there is no need for a dedicated console
* window and we don't need to call the AllocConsole() function. on the other
* hand if the user has set the 'dedicated' flag to 'true' and if AttachConsole()
* has failed, we create a dedicated console window.
*/
console_desc.allocated = AttachConsole(ATTACH_PARENT_PROCESS);
if (console_desc.allocated)
dedicated = false;
if (!console_desc.allocated && dedicated)
console_desc.allocated = AllocConsole();
if (!console_desc.allocated)
return;
console_desc.cp = GetConsoleCP();
SetConsoleOutputCP(CP_UTF8); /* make the ouput utf8 */
/* set some console modes; we don't need to reset these back.
* ENABLE_EXTENDED_FLAGS = 0x0080, ENABLE_QUICK_EDIT_MODE = 0x0040 */
HANDLE h_in = GetStdHandle(STD_INPUT_HANDLE);
if (h_in) {
SetConsoleMode(h_in, 0x0080 | 0x0040);
CloseHandle(h_in);
}
/* dedicated only; disable the 'x' button as it will close the main process as well */
HWND h_cw = GetConsoleWindow();
if (h_cw && dedicated) {
SetWindowTextA(h_cw, "Subsurface Console");
HMENU h_menu = GetSystemMenu(h_cw, 0);
if (h_menu) {
EnableMenuItem(h_menu, SC_CLOSE, MF_BYCOMMAND | MF_DISABLED);
DrawMenuBar(h_cw);
}
SetConsoleCtrlHandler(NULL, TRUE); /* disable the CTRL handler */
}
/* redirect; on win32, CON is a reserved pipe target, like NUL */
console_desc.out = freopen("CON", "w", stdout);
console_desc.err = freopen("CON", "w", stderr);
if (!dedicated)
puts(""); /* add an empty line */
#endif
}
示例13: encode_to_mbs_size
int encode_to_mbs_size(const char *src, int srcsz)
{
int unicode_size;
wchar_t *unicode;
//int unicode_len;
int /*chars,*/ err;
unicode_size = u8_wc_size(src, srcsz);
unicode = (wchar_t *) alloca((unicode_size + 1) * sizeof(unsigned short));
unicode[unicode_size] = L'\0';
u8_toucs(unicode, unicode_size, src, srcsz);
err = WideCharToMultiByte(GetConsoleCP(), WC_COMPOSITECHECK, unicode, unicode_size, NULL, 0, NULL, NULL);
return err;
}
示例14: php_win32_cp_get_enc
PW32CP const struct php_win32_cp *php_win32_cp_do_setup(const char *enc)
{/*{{{*/
if (!enc) {
enc = php_win32_cp_get_enc();
}
if (!strcmp(sapi_module.name, "cli")) {
orig_cp = php_win32_cp_get_by_id(GetConsoleCP());
} else {
orig_cp = php_win32_cp_get_by_id(GetACP());
}
cur_cp = php_win32_cp_get_by_enc(enc);
return cur_cp;
}/*}}}*/
示例15: checkWin32Codepage
static void
checkWin32Codepage(void)
{
unsigned int wincp,
concp;
wincp = GetACP();
concp = GetConsoleCP();
if (wincp != concp)
{
printf(_("WARNING: Console code page (%u) differs from Windows code page (%u)\n"
" 8-bit characters might not work correctly. See psql reference\n"
" page \"Notes for Windows users\" for details.\n"),
concp, wincp);
}
}