Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2007, 21:38   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию во весь экран

Как заставить дос приложение развернуться на весь экран при запуске? Типа как Альт+Ентер, только само.
Артэс вне форума Ответить с цитированием
Старый 14.06.2007, 23:40   #2
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

У дос приложений есть ограничение в максимальной ширине окна, точно не скажу, гдето от 600 до 800 px.
А двигаться надо в сторону программного изменения разрешения экрана монитора на теже 640х480.(или 800х600)
Alex21 вне форума Ответить с цитированием
Старый 14.06.2007, 23:51   #3
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Ну а нельзя как-нибудь в коде этой программы прописать, что бы на весь экран расширялось?
Артэс вне форума Ответить с цитированием
Старый 15.06.2007, 00:01   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Повторяю еще раз:
Цитата:
У дос приложений есть ограничение в максимальной ширине окна
Сделайте: Пуск-Выполнить-В командной строке наберите "cmd" (без кавычек)Enter и попробуйте открыть на весь экран!!!

Вот код программной смены разрешения экрана в ходе выполения проги. только это Delphi, под С++ - незнаю как будет.
///////////////////////////
function SetFullscreenMode:Boolean;
var DeviceMode : TDevMode;
begin
with DeviceMode do begin
dmSize:=SizeOf(DeviceMode);
dmBitsPerPel:=16;
dmPelsWidth:=640;
dmPelsHeight:=480;
dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
result:=False;
if ChangeDisplaySettings(DeviceMode,CD S_TEST or CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL
then Exit;
Result:=ChangeDisplaySettings(Devic eMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL;
end;
end;
procedure RestoreDefaultMode;
var T : TDevMode absolute 0;
begin
ChangeDisplaySettings(T,CDS_FULLSCR EEN);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if setFullScreenMode then begin
sleep(7000);
RestoreDefaultMode;
end;
end;
///////////////////
Alex21 вне форума Ответить с цитированием
Старый 15.06.2007, 00:12   #5
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Сделайте: Пуск-Выполнить-В командной строке наберите "cmd" (без кавычек)Enter и попробуйте открыть на весь экран!!!
Попробывал и открылось
Артэс вне форума Ответить с цитированием
Старый 05.07.2007, 19:19   #6
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Это должно помочь!!!
Код:
function NT_GetConsoleDisplayMode(var lpdwMode: DWORD): Boolean;
type
  TGetConsoleDisplayMode = function(var lpdwMode: DWORD): BOOL;
  stdcall;
var
  hKernel: THandle;  
  GetConsoleDisplayMode: TGetConsoleDisplayMode;
begin  
  Result := False;
  hKernel := GetModuleHandle('kernel32.dll');  
  if (hKernel > 0) then
  begin @GetConsoleDisplayMode :=  
      GetProcAddress(hKernel, 'GetConsoleDisplayMode');
    if Assigned(GetConsoleDisplayMode) then  
    begin
      Result := GetConsoleDisplayMode(lpdwMode);  
    end;
  end;  
end;
function NT_SetConsoleDisplayMode(hOut: THandle; dwNewMode: DWORD;
  var lpdwOldMode: DWORD): Boolean;
type
  TSetConsoleDisplayMode = function(hOut: THandle; dwNewMode: DWORD;
  var lpdwOldMode: DWORD): BOOL;
  stdcall;
var
  hKernel: THandle;
  SetConsoleDisplayMode: TSetConsoleDisplayMode;
begin
  Result := False;
  hKernel := GetModuleHandle('kernel32.dll');
  if (hKernel > 0) then
  begin @SetConsoleDisplayMode :=
      GetProcAddress(hKernel, 'SetConsoleDisplayMode');
    if Assigned(SetConsoleDisplayMode) then  
    begin  
      Result := SetConsoleDisplayMode(hOut, dwNewMode, lpdwOldMode);
    end;  
  end;  
end;
function GetConsoleWindow: THandle;  
var
  S: AnsiString;  
  C: Char;  
begin
  Result := 0;
  Setlength(S, MAX_PATH + 1);  
  if GetConsoleTitle(PChar(S), MAX_PATH) <> 0 then
  begin  
    C := S[1];  
    S[1] := '$';
    SetConsoleTitle(PChar(S));  
    Result := FindWindow(nil, PChar(S));  
    S[1] := C;
    SetConsoleTitle(PChar(S));  
  end;  
end;
function SetConsoleFullScreen(bFullScreen: Boolean): Boolean;  
const
  MAGIC_CONSOLE_TOGGLE = 57359;  
var  
  dwOldMode: DWORD;
  dwNewMode: DWORD;  
  hOut: THandle;
  hConsole: THandle;  
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then  
  begin
    dwNewMode := Ord(bFullScreen);  
    NT_GetConsoleDisplayMode(dwOldMode);
    hOut := GetStdHandle(STD_OUTPUT_HANDLE);  
    Result := NT_SetConsoleDisplayMode(hOut, dwNewMode, dwOldMode);
  end  
  else
  begin
    hConsole := GetConsoleWindow;
    Result := hConsole <> 0;
    if Result then
    begin
      if bFullScreen then
      begin
        SendMessage(GetConsoleWindow, WM_COMMAND, MAGIC_CONSOLE_TOGGLE, 0);
      end
      else
      begin
        // Better solution than keybd_event under Win9X ?
        keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
        keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0);
        keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0);
        keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
  AllocConsole;
  try
    SetConsoleFullScreen(True);
    Write('Hi, you are in full screen mode now. Type something [Enter]: ');
    Readln(s);
    SetConsoleFullScreen(False);
    // ShowMessage(Format('You typed: "%s"', [s]));
  finally
    FreeConsole;
  end;
end;
Alex21 вне форума Ответить с цитированием
Старый 17.08.2007, 15:37   #7
ROMAS-MASTER™
Новичок
Джуниор
 
Аватар для ROMAS-MASTER™
 
Регистрация: 17.08.2007
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Как заставить дос приложение развернуться на весь экран при запуске? Типа как Альт+Ентер, только само.
Артэс, если ты имел cmd или подобное приложение (и если я правильно понял твой вопрос ), то можно сделать так:
1) запускаешь не вполноэкранном режиме
2) клацаешь л.к.м. в верхнем левом углу, выбираешь Умолчания
3) вкладка общие -> отображение -> выбираешь Во весь экран
4)
ROMAS-MASTER™ вне форума Ответить с цитированием
Старый 17.08.2007, 23:37   #8
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

сделай эмуляцию нажатия клавиш альт+ентер и будет точно "типа как" =))) а Александр слишком заумно предложил, это если тока требует большой стабильности. а если прикол другу подкинуть типа большого досовского черного незакрывающегося экрана при автозагрузке, то можно еще и системное разрешение рабочего стола подогнать, вот смеха будет, заместо ХР дос. =))))
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод на экран Rifler Паскаль, Turbo Pascal, PascalABC.NET 10 18.07.2008 18:30
Как развернуть проигрываемый видео файл на весь екран SeRhy Мультимедиа в Delphi 2 26.01.2008 21:43
Флажки на весь столбец Talisman Microsoft Office Excel 12 02.01.2008 19:20
форма во весь экран??? zzzzz Помощь студентам 8 08.11.2007 08:39