Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

MDI Child в роли досовой консоли   Найти похожие ветки 

 
ssk ©   (2004-11-24 14:20) [0]

Всем привет! Кто-нибудь знает, как реализовать сабж или в принципе невозможно?

З.Ы. разного рода советы "кинь Memo & Edit" просьба не предлагать.


 
TUser ©   (2004-11-24 14:41) [1]


> З.Ы. разного рода советы "кинь Memo & Edit" просьба не предлагать.

А чего так?


 
Rem ©   (2004-11-24 14:43) [2]

О какой "досовой" консоли идет речь?

Вы уточните, что вам нужно: консольное приложение, которое, на самом деле, к DOS не имеет никакого отношения, или командная строка*, которая к DOS тоже никакого отношения не имеет?

* Платформа NT


 
Digitman ©   (2004-11-24 14:47) [3]

дурней не придумаешь - пытаться засандалить досову консоль в кач-ве доч.окна

никто не ограничивал пока еще назначение StdIn- и StdOut-дивайсов для ассоциированного с досовой консолью ввода/вывода


 
ssk ©   (2004-11-24 14:56) [4]

>дурней не придумаешь - пытаться засандалить досову консоль в кач-ве доч.окна

согласен на все 100%, но надо сделать именно так. это не я придумал такую прихоть. так что если есть идеи - предлагайте.

>Вы уточните, что вам нужно:

есть MDIChild. в нем нужно реализовать полную работу командной строки, как в NT


 
TUser ©   (2004-11-24 14:57) [5]


> это не я придумал такую прихоть.

Сделай [3] (или через пайпы) - пусть заказчик/начальник/препод думает, что это ДОС-консоль.


 
ssk ©   (2004-11-24 15:06) [6]

Спасибо за ответы. Буду разбираться дальше.


 
GuAV ©   (2004-11-29 18:21) [7]

Кое что получилось. А именно - запуздырить коммандную строку в обычное SDI окно.
IMHO, ещё немного поэкспериментировать и будет сабж.

function EnumThreadWndProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
begin
 SetParent(hWnd, lParam);
 Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 Wnd: HWND;
 SI: TStartupInfo;
 PI: TProcessInformation;
begin
 case SysUtils.Win32Platform of
   VER_PLATFORM_WIN32_WINDOWS: //  проверено в Win98
     begin
       FillChar(SI, SizeOf(SI), 0);
       SI.cb := SizeOf(SI);
       Win32Check(CreateProcess(nil, "COMMAND.COM",
          nil, nil, False, 0, nil, nil, SI, PI));
       try
         WaitForInputIdle(PI.hProcess, INFINITE);
         EnumThreadWindows(PI.dwThreadId,
           @EnumThreadWndProc, Handle);
       finally
         CloseHandle(PI.hThread);
         CloseHandle(PI.hProcess);
       end;
     end;
   VER_PLATFORM_WIN32_NT:  //  проверено в WinXP
     begin
       FillChar(SI, SizeOf(SI), 0);
       SI.cb := SizeOf(SI);
       Win32Check(CreateProcess(nil, "COMMAND.COM",
         nil, nil, False, 0, nil, nil, SI, PI));
       try
         WaitForInputIdle(PI.hProcess, INFINITE);
         repeat
           Wnd := FindWindow("ConsoleWindowClass", nil);
           Sleep(50);
         until Wnd <> 0;
         Windows.SetParent(Wnd, Handle);
       finally
         CloseHandle(PI.hThread);
         CloseHandle(PI.hProcess);
       end;
     end;
 end;
end;


 
GuAV ©   (2004-11-29 18:39) [8]

Для MDI идея такая - на каждую ком. строку создавать MDI Child окно, у самой командной строки убирать заголовок и границу и вставлять его в это MDI Child окно, сообщения для Child типа WM_GETMINMAXINFO, SIZE пересылать окну ком. строки. Короче делается.

Различия 9х и ХР: WaitForInputIdle - в 9х вернёт когда все окна созданы, в ХР почему-то раньше. В ХР одно окно  "ConsoleWindowClass", а в 9х несколько окон.



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.033 c
1-1101573700
Dmitry_04
2004-11-27 19:41
2004.12.12
Есть ли какойнибудь компонент для создания меню как в RealPlayer?


14-1101061787
uny
2004-11-21 21:29
2004.12.12
забавное - "вопросы детей к богу"


1-1101856765
newage
2004-12-01 02:19
2004.12.12
производный класс свои проперти


1-1101848922
Kolan
2004-12-01 00:08
2004.12.12
Перенос Series


14-1101186125
Sour
2004-11-23 08:02
2004.12.12
Еще вопрос про SMTP и POP3 серверы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский