Как улучшить работу в текстовом режиме?
1) Существуют ли функции в header iostream.h для обработки клавиатуры так, чтобы консоль закрывалась по нажатию любой клавиши? По типу getch(); //#include <conio.h>:
#include <iostream.h>
#include <conio.h>
void main(void)
{
cout << " forum.codenet.ru is the best place! " << endl;
getch(); //#include <conio.h>
}
2) Как "программно" развернуть консоль на весь экран(full screen mode)?
3) Как сделать консольное окно прозрачным? Например, с помощью AlphaBlind в Windows XP?
Буду рад вашим предложениям!
1) Существуют ли функции в header iostream.h для обработки клавиатуры так, чтобы консоль закрывалась по нажатию любой клавиши? По типу getch(); //#include <conio.h>:
Во-первых, не используй iostream.h (это не по Стандарту), а используй iostream.
Во-вторых, ф-ции работы с клавиатурой, как и с любым другим железом, не входят в стандартную библиотеку C++, а значит в iostream (и в iostream.h) их нет. Так что conio.h - вполне логичное решение.
Я нашёл в Registry следующий параметр, изменяя который, я могу открывать Command Prompt (cmd.exe, XP/2k only) на весь экран:
[HKEY_CURRENT_USER\Console] "FullScreen"=dword:00000000 //window mode
[HKEY_CURRENT_USER\Console] "FullScreen"=dword:00000001 //full screen mode
Я не знаю, как записывать параметры в Registry, и надеюсь на вашу помощь в этом. Где модно найти подробное описание Registry API. Алгоритм таков:
2.1) Записать [HKEY_CURRENT_USER\Console] "FullScreen"=dword:00000001 //full screen mode;
2.2) работать с консольным I/O;
2.3) Записать [HKEY_CURRENT_USER\Console] "FullScreen"=dword:00000000 //window mode;
2.4) Завершить программу;
3) Как сделать консольное окно прозрачным? Например, с помощью AlphaBlind в Windows XP?
Возможно, вы видели подобное в KDE 3.0, когда Command Prompt может настраиваться прозрачным. Существует ли возможность сделать Windows Command Prompt (cmd.exe) прозрачным?
Если вы считаете что это невозможно, то посоветуйте как написать самостоятельное приложение использующее AlphaBlind для достижения прозрачности? В этом случае желательно наследовать I/O стандарт с cmd.exe, чтобы можно было выводить сообщения как в обычную консоль, типа cout << " forum.codenet.ru is the best place! " << endl;
Я заранее благодарю вас за понимание и помощь.
Описание функции:
Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
lRes = RegSetValueEx(rk, pEntries->szValue, 0, REG_BINARY, (const BYTE *)pEntries->pMember, pEntries->cb);
lRes = RegSetValueEx(rkParent, szValueName, 0, REG_BINARY, rgBinary, cbValDiv2);
А это non-C++ samples, но в С++ я пока аналогов не нашёл:
[Visual Basic]
Dim f As New RegistryPermission( _
RegistryPermissionAccess.Read, _
"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0")
[C#]
RegistryPermission f = new RegistryPermission(
RegistryPermissionAccess.Read,
"HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0");
[Visual Basic, C#] The following code adds permission to read from and write to the FloatingPointProcessor key to the RegistryPermission f.
[Visual Basic]
f.AddPathList( _
RegistryPermissionAccess.Write Or RegistryPermissionAccess.Read, _
"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\FloatingPointProcessor\0")
[C#]
f.AddPathList(
RegistryPermissionAccess.Write | RegistryPermissionAccess.Read,
"HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor\\0");
[Visual Basic, C#] The RegistryPermission f now represents the permission to read from the CentralProcessor key and to read from and write to the FloatingPointProcessor key.
Я заранее благодарю вас за понимание и помощь.
#using <mscorlib.dll>
using namespace System;
using namespace Microsoft::Win32;
int main(void)
{
RegistryKey * pRegKey = Registry::CurrentUser;
pRegKey = pRegKey->OpenSubKey(L"Console");
Object *pValue = pRegKey->GetValue(L"FullScreen");
Console::WriteLine(L"The FullScreen value is: {0}.", pValue);
Object *pValue = pRegKey->GetValue(L"FullScreen");
pRegKey->SetValue(L"FullScreen", "1");
Console::WriteLine(L"The FullScreen value is: {0}.", pValue);
return 0;
}
Visual Studio .NET сообщает об ошибке:
Fatal Error C1190
managed targeted code requires '#using <mscorlib.dll>' and '/clr' option
А вот, что сказано в MSDN по этой проблеме:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcerrFatalErrorC1190.asp
Visual C++ Concepts: Building a C/C++ Program
Fatal Error C1190
managed targeted code requires '#using <mscorlib.dll>' and '/clr' option
You are using Managed Extensions for C++ constructs and the /clr compiler option, but you did not explicitly include mscorlib.dll.
The following sample generates C1190:
// C1190.cpp
// compile with: /clr
// uncomment the following line to resolve errors
// #using <mscorlib.dll>
__gc class A { // C1190
};
int main() {
}
Файл mscorlib.dll находиться по пути C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705, и этот путь указан в настройках Visual Studio .NET.
Так в чём же проблема? У кого какие мысли?
С уважением.
Как улучшить работу в текстовом режиме?
1) Существуют ли функции в header iostream.h для обработки клавиатуры так, чтобы консоль закрывалась по нажатию любой клавиши? По типу getch(); //#include <conio.h>:
#include <iostream.h>
#include <conio.h>
void main(void)
{
cout << " forum.codenet.ru is the best place! " << endl;
getch(); //#include <conio.h>
}
2) Как "программно" развернуть консоль на весь экран(full screen mode)?
3) Как сделать консольное окно прозрачным? Например, с помощью AlphaBlind в Windows XP?
Буду рад вашим предложениям!
При компиляции под Apple инструкция getch(); //#include <conio.h> оказывается неправильной. Хотя на conio.h компилятор "согласился". Кто знаком с правильным способом её записи под Apple?
Существуют ли примеры программ, которые создают окно с помощью WinAPI подобное Command Prompt (Командная строка) с нуля?
С уважением.
А далее осуществлять I/O.
//My sample
#using <mscorlib.dll>
using namespace System;
using namespace Microsoft::Win32;
int main(void)
{
RegistryKey * pRegKey = Registry::CurrentUser;
pRegKey = pRegKey->OpenSubKey(L"Console");
Object *pValue = pRegKey->GetValue(L"FullScreen");
Console::WriteLine(L"The FullScreen value is: {0}.", pValue);
Object *pValue = pRegKey->GetValue(L"FullScreen");
pRegKey->SetValue(L"FullScreen", "1");
Console::WriteLine(L"The FullScreen value is: {0}.", pValue);
return 0;
}
Visual Studio .NET сообщает об ошибке:
Fatal Error C1190
managed targeted code requires '#using <mscorlib.dll>' and '/clr' option
А вот, что сказано в MSDN по этой проблеме:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcerrFatalErrorC1190.asp
Visual C++ Concepts: Building a C/C++ Program
Fatal Error C1190
managed targeted code requires '#using <mscorlib.dll>' and '/clr' option
You are using Managed Extensions for C++ constructs and the /clr compiler option, but you did not explicitly include mscorlib.dll.
The following sample generates C1190:
// C1190.cpp
// compile with: /clr
// uncomment the following line to resolve errors
// #using <mscorlib.dll>
__gc class A { // C1190
};
int main() {
}
Файл mscorlib.dll находиться по пути C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705, и этот путь указан в настройках Visual Studio .NET.
Так в чём же проблема? У кого какие мысли?
С уважением.
>> С добавлением опции /clr для компиляции, появляется ещё ошибка, а прежняя по-прежнему существует. Так каким путём эту проблему решить?
:-? :???: