Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/
PowrótPowrótHistoria odwiedzonych stron
AutorWiadomość
Data: 2010-07-28 19:45:13

pekfos
Jak zmaksymalizować konsolę Windows?

Chcę móc zmieniać, na poziomie inicializacji mojej biblioteki rozmiar konsoli.
mam już na to sposób ale przy powiększaniu konsoli zachowuje ona dawny rozmiar,
ale dodane zostają paski przesuwu a po zmaksymalizowaniu konsoli okno ma właściwe
wymiary.
jak (z poziomu kodu) zmaksymalizować konsolę? (mam jej uchwyt, używam windows.h).

Data: 2010-07-28 20:06:02

Domdziu


Spróbuj tego :

HANDLE okno = GetStdHandle(STD_OUTPUT_HANDLE);

COORD size;

size.X = 80;
size.Y = 25;

SetConsoleScreenBufferSize(okno, size);

Ale nie wiem czy to będzie działać na 100% ;] Tą funkcje znalazłem u wujka Google.;]

Data: 2010-07-28 21:05:00

021995c


możesz użyć symulacji klawiszy alt + enter

keybd_event(VK_MENU,0x38,0,0);
keybd_event(VK_RETURN,0x1c,0,0);
keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0);


tu mam drugi kod konsola automatycznie się włącza full screen

#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;
  }
  SetConsoleDisplayMode =
  (SCDMProc_t)GetProcAddress(hKernel32, "SetConsoleDisplayMode");
  if (SetConsoleDisplayMode == NULL)
  {
    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
    ret = FALSE;
  }
  else
  {
    DWORD dummy;
    ret = SetConsoleDisplayMode(hOutputHandle, dwNewMode, &dummy);
  }
  if (bFreeLib)
  FreeLibrary(hKernel32);
  return ret;
}
int main( void )
{
  NT_SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE ), 1 );
  std::cin.get();
  return 0;
}


tu masz kod trochę krótszy bez wywołania w głównej funkcji int main()


#include <windows.h>

void FullScr() {

  typedef BOOL WINAPI (*SetConsoleDisplayModeT)(HANDLE,DWORD,DWORD*);


  SetConsoleDisplayModeT SetConsoleDisplayMode;

  HINSTANCE hLib = LoadLibrary("KERNEL32.DLL");

  SetConsoleDisplayMode = ( SetConsoleDisplayModeT )
  GetProcAddress(hLib,"SetConsoleDisplayMode");

  DWORD oldmode;

  SetConsoleDisplayMode(GetStdHandle(STD_OUTPUT_HANDLE)
  ,1,&oldmode);

  FreeLibrary(hLib);

}
Data: 2010-07-29 16:28:25

pekfos


Domdziu przeczytaj mój post jeszcze raz bo piszesz mi to co określiłem że już mam.

Według MSDN to SetConsoleDisplayMode wygląda tak:

BOOL WINAPI SetConsoleDisplayMode(HANDLE,DWORD,PCOORD)


a nie

BOOL WINAPI SetConsoleDisplayMode(HANDLE,DWORD,DWORD*)



Czy twój kod jest zatem poprawny? (tak i tak nie działa)

testowałem symulację klawiszy ale nie daje to żadnego skutku poza komunikatem "ten system nie obsługuje trybu pełnoekranowego"

Data: 2010-07-29 17:45:33

VND


Oba kody jak najbardziej działają... ale na XP, Vista nie obsługuje pełnoekranowego DOSa. Podobnie zapewne jest z Win7.

Data: 2010-07-29 19:23:06

Iname (√ιק)


DOSa? Windowsowa konsola nie ma nic wspólnego z DOSem. Poza tym, system nie ma nic do tego, to sterowniki karty graficznej nie obsługują, nie system jako taki.

Data: 2010-07-29 21:48:17

VND


DOS - ale mi się wyrwało, oczywiście miałem na myśli konsolę, to chyba oczywiste było. Prawda to jest wina sterowników dla Visty co nie zmienia faktu, że nadal nie działa. Na upartego można zainstalować te dla XP, ale czy warto żeby mieć tylko konsole na fullscreen?

Data: 2010-07-30 02:46:37

Piotr Szawdyński


Myślę, że nie ma sensu na siłę wymuszać pełnoekranowej konsoli. Konsolę powinieneś używać do tworzenia aplikacji przetwarzających dane, a nie do tworzenia aplikacji, w której użytkownik ma na czymś pracować. Zaręczam Ci, że prędzej ktoś będzie szukał analogicznej aplikacji zbudowanej na WinAPI czy czymkolwiek podobnym np. QT, aniżeli katował się użytkowaniem konsoli. Fullscreen ma również tę wadę, że nie widać paska startu, a wielu użytkowników jest do niego przywiązanych poprzez komunikatory pracujące w tle itp. Przemyśl więc dobrze czy na pewno cel uświęca środki.

12



Statystyki tematuOstatnio przeczytali
Czytało użytkowników:26madmike44, michalp, malan, Dragonit, pixelmaster, dmx81, SeaMonster131, TheLukon, lenrokskate, Iname (√ιק), VND, pekfos
Przeczytało użytkowników:12
Czytało osób ogólnie:67
Przeczytało osób ogólnie:26



PowrótPowrótHistoria odwiedzonych stron
Panel Logowania
Login:
Hasło:

Użytkowników
Obecnie aktywnych:11
Zalogowanych:0
Zarejestrowanych:4367
Ostatnie 24h:720
Non-cookie 24h:2180
Wszystkich:214776
Ostatnia Aktualizacja
2010-09-01 19:27:34 (6 dni temu)
Ostatnio aktywni
fish133 godz
wiewiorka9 godz
Koni10 godz
BuZuz10 godz
Prezmen12 godz
trupank13 godz
szczgl14 godz
filipesq14 godz
KRIIS55116 godz
kuba181716 godz
extra217 godz
pixelmaster18 godz

Wynajem Sopot - wakacje
Pokój 2 osobowy 130zł/doba;
Lokalizacja: Sopot


O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinki
Kurs HTML - strona WWW za darmoRestauracja "ATOL" - SopotValid HTML 4.01 TransitionalValid CSS!HTML CSS JavaScript FLASH PHP MySQL