Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
1

Распахнуть консоль на весь экран

11.04.2010, 01:00. Просмотров 7235. Ответов 16
Метки нет (Все метки)

Здрасти, можно ли как нибудь программно сделать чтобы при запуске консоль автоматически делалась на весь экран?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2010, 01:00
Ответы с готовыми решениями:

Как распахнуть окно Командной строки на весь экран?
Как сделать. Чтобы командная строка на весь экран раскрывалась?

Если смотреть видео в контакте, и если распахнуть видео на весь экран, то звук идет, а изображения нет(!). Если нажать на эту кнопку (на картинке об
Если смотреть видео в контакте, и если распахнуть видео на весь экран, то звук идет, а изображения...

Отобразить консоль во весь экран
Существует ли функция, что бы консольное приложение при запуске открывалось во весь экран??? Если...

Развернуть консоль на весь экран
Пожалуйста помогите, мне нужно развернуть консоль на весь экран и записать cols и lines в...

16
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
11.04.2010, 01:22 2
Если не ошибаюсь, последний параметр в WinMain() как-раз про это...
0
60 / 22 / 2
Регистрация: 13.03.2010
Сообщений: 65
11.04.2010, 01:24 3
Консольные приложения разрабатывают для универсального ввода и вывода.

Добавлено через 36 секунд
А о внешнем виде заботятся не разработчики консольного приложения...
1
ниначмуроФ
846 / 530 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
11.04.2010, 01:28  [ТС] 4
kirjushyk, ну мне надо чтобы во весь экран

Добавлено через 3 минуты
easybudda, а что за WinMain()?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
11.04.2010, 01:42 5
PointsEqual, http://msdn.microsoft.com/en-u... 85%29.aspxХотя там нет какого-нибудь SW_FULLSCREEN
в винде можно ярлык к программе сделать и в его свойствах указать, чтоб во всё окно запускалось...
1
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
11.04.2010, 01:57 6
PointsEqual, easybudda прав, консольное приложение можно максимизировать путем правки ярлыка приложения.
Хотя в принципе никто не мешает (если я конечно не ошибаюсь) при запуске послать окну консоли сообщение для его максимизации.
1
30 / 30 / 2
Регистрация: 09.04.2010
Сообщений: 60
11.04.2010, 03:13 7
Как и всегда - все гениальное просто Держи пример:
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
#include <iostream>
 
int main( void )
{
  COORD dummy;
  bool ret = SetConsoleDisplayMode(GetStdHandle( STD_OUTPUT_HANDLE ), 1, &dummy);
  std::cin.get();
  return 0;
}
Честно говоря я сам немного "озадачился" пока думал ) А вообще лучше сам еще почитай MSDN про функцию

C++
1
2
3
4
5
BOOL WINAPI SetConsoleDisplayMode(
  __in          HANDLE hConsoleOutput,
  __in          DWORD dwFlags,
  PCOORD lpNewScreenBufferDimensions
);

и вот еще интересный пример, но писал не я, каюсь...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <windows.h>
#include <iostream>
 
 
BOOL NT_SetConsoleDisplayMode(HANDLE hOutputHandle, DWORD dwNewMode)
{
    typedef BOOL (WINAPI *SCDMProc_t) (HANDLE, DWORD, LPDWORD);
    SCDMProc_t SetConsoleDisplayMode;
    HMODULE hKernel32;
    BOOL bFreeLib = FALSE, ret;
    const char KERNEL32_NAME[] = "kernel32.dll";
 
    hKernel32 = GetModuleHandleA(KERNEL32_NAME);
    if (hKernel32 == NULL)
    {
        hKernel32 = LoadLibraryA(KERNEL32_NAME);
        if (hKernel32 == NULL)
            return FALSE;
 
        bFreeLib = true;
    }//if
 
    SetConsoleDisplayMode = 
        (SCDMProc_t)GetProcAddress(hKernel32, "SetConsoleDisplayMode");
    if (SetConsoleDisplayMode == NULL)
    {
        SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
        ret = FALSE;
    }//if
    else
    {
        DWORD dummy;
        ret = SetConsoleDisplayMode(hOutputHandle, dwNewMode, &dummy);
    }//else
 
    if (bFreeLib)
        FreeLibrary(hKernel32);
 
    return ret;
}//NT_SetConsoleDisplayMode
 
int main( void )
{
  NT_SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE ), 1 );
  std::cin.get();
  return 0;
}
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10875 / 6763 / 1619
Регистрация: 25.07.2009
Сообщений: 12,483
11.04.2010, 12:56 8
Цитата Сообщение от ***GIN*** Посмотреть сообщение
BOOL WINAPI SetConsoleDisplayMode( __in HANDLE hConsoleOutput, __in DWORD dwFlags, PCOORD lpNewScreenBufferDimensions );
Что-то у меня это счастье так и не заработало. В том wincon.h который к MSVS 2005 прилагается, такой функции вообще нет (хотя в MSDN опять же 2005 она описана). А в варианте wincon.h из gcc значится:
C
1
2
3
#if (_WIN32_WINNT >= 0x0501)
BOOL WINAPI SetConsoleDisplayMode(HANDLE,DWORD,PCOORD);
#endif
и тоже ни за какие коврижки не компилируется... Даже вот так пробовал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <windows.h>
#include <iostream>
 
#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0502
#endif
 
int main( void )
{
  COORD dummy;
  SetConsoleDisplayMode(GetStdHandle( STD_OUTPUT_HANDLE ), 1, &dummy);
  std::cout << "Hello, World!" << std::endl;
  std::cin.get();
  return 0;
}
всё равно не работает...
Код
C:\cpp\system>g++ -o full_screen.exe full_screen.cpp
full_screen.cpp: In function `int main()':
full_screen.cpp:12: error: `SetConsoleDisplayMode' was not declared in this scope
Код
C:\cpp\system>cl full_screen.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

full_screen.cpp
...
full_screen.cpp(12) : error C3861: 'SetConsoleDisplayMode': identifier not found
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
11.04.2010, 14:11 9
Цитата Сообщение от ***GIN*** Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
#include <iostream>
 
int main( void )
{
  COORD dummy;
  bool ret = SetConsoleDisplayMode(GetStdHandle( STD_OUTPUT_HANDLE ), 1, &dummy);
  std::cin.get();
  return 0;
}
Чуть переделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <windows.h>
#include <iostream>
 
int main() {
  COORD dummy;
  
  BOOL bSuccess = SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE), CONSOLE_FULLSCREEN_MODE, &dummy);
 
  if (!bSuccess) {
    DWORD dwError = GetLastError();
    std::cerr << dwError << std::endl;
    return 1;
  }
 
  std::cin.get();
 
  return 0;
}
SetConsoleDisplayMode возвращает FALSE, а GetLastError ERROR_CALL_NOT_IMPLEMENTED. MSVS 2008, Windows 7 Ultimate.
Попробуйте проверить у себя.
0
30 / 30 / 2
Регистрация: 09.04.2010
Сообщений: 60
11.04.2010, 17:41 10
На самом деле странно... Попробуй действительно вызвать SetConsoleDisplayMode из библиотеки kernel32.dll как это сделано в "моем" втором примере, предварительно загрузи ее и вызывай эту функцию как там показано. Мне почему то кажется у тебя к проекту как раз kernel32.dll не подгружена... Проверь ее наличие в разделе Project/Properties/Linker/Command Line. Посмотри на мое содержимое данного раздела и сравни со своим:

/OUT:"D:\Visual Studio 2008\test\Debug\test.exe" /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTFILE:"Debug\test.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"d:\Visual Studio 2008\test\Debug\test.pdb" /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
11.04.2010, 18:09 11
***GIN***, если бы kernel32.lib не была подключена, линкер не смог бы связать с ней вызов SetConsoleDisplayMode, так что дело не в этом.
0
30 / 30 / 2
Регистрация: 09.04.2010
Сообщений: 60
18.04.2010, 01:27 12
Я тут подумал немного, и пришел к одной мысли. У тебя случайно не Windows Vista или 7 ???
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
18.04.2010, 01:32 13
Цитата Сообщение от ***GIN*** Посмотреть сообщение
У тебя случайно не Windows Vista или 7
Именно Windows 7, но далеко не случайно.
0
30 / 30 / 2
Регистрация: 09.04.2010
Сообщений: 60
18.04.2010, 01:41 14
На сколько я знаю, там нет поддержки полноэкранного режима консоли как это было скажем в XP. По крайней мере я знаю точно, что в Windows Vista у меня воспользоваться такой фичей не получалось...

Добавлено через 4 минуты
Почитай скажем здесь:

http://social.technet.microsof... fdccdc0c2/

Добавлено через 47 секунд
В 7 я думаю такая же проблема-фича
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
18.04.2010, 01:49 15
***GIN***, так и есть. Я писал в посте #9 что функция SetConsoleDisplayMode в Windows 7 возвращает ошибку, означающую, что данная функция не реализована (ERROR_CALL_NOT_IMPLEMENTED).
0
30 / 30 / 2
Регистрация: 09.04.2010
Сообщений: 60
18.04.2010, 02:00 16
В общем зря в Microsoft отказались от использования данной функции, а я хотел верить в обратное) К сожалению только сейчас вспомнил, что когда то, года полтора назад встречался с данной проблемой. И куда катиться Microsoft... остается верить в то что все это к лучшему)
0
Эксперт С++
2331 / 1704 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
18.04.2010, 02:06 17
Цитата Сообщение от ***GIN*** Посмотреть сообщение
И куда катиться Microsoft.
В правильном направлении. Консольное окно во весь экран - бред, ибо не красиво, не удобно и не нужно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2010, 02:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как открыть консоль на весь экран?
Как открыть консоль на весь экран?

Консоль выдает не весь текст
консоль выдает не весь текст файла. часть текста где то две трети с начала нельзя прокрутить....

Как развернуть консоль во весь екран?
Кто-нибудь знает как это делается? ну или как создать консольное окно 1280х720

Stack - как можно вывести весь стэк в консоль
Есть стэк в котором 25 стринг записей (M, F). Вопрос: как можно вывести весь стэк в консоль и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.