Привет всем! Кто мне может ответить на такой странный вопрос: Написать WIN32 консольное приложение, которое сможет в консоли поставить графический режим и использовать графику, как это было в ДОСе... Не использовать GUI! Не писать ДОС-приложение! Хочу WIN32-Console приложение, которое может залезть в душу виндовой виртуальной машине (которая эмулирует дос-графику) и попользовать ее.... Если проще - хочу графику в WIN32 консоли....
есть на sf.net какая то либа, к-рая позволяет эмулить графику в ASCII (называется что ли как-то asclib или как-то так, точно не помню). люди извращались и запускали кваку в текст-моде с помощью этой либы. думаю, стоит покопать в эту сторону.
Спасибо, но мне не нужен ASCII-арт. Мне нужно залезть в душу виртуальной машине NT и поставить графический режим в консоли так же, как винда бы это сделала при эмуляции ДОС-графики! Фактически это не "консоль" в привычном понимании этого слова, а извращенное приложение, которое насилует виртуальную машину...
microprogs А чем GDI не угодил? Консольное окно также имеет контекст на котором можно рисовать. http://www.firststeps.ru/mfc/winapi/r.php?6
Спасибо, но мне не нужны примеры, как рисовать с помошью GDI, MFC, это итак ясно... Мне нужно другое: Поставить графический режим в консоли - т.е. при нажатии Alt+Enter оно будет не отличимо от ДОС-графики... Как забраться в душу этому API, который пользует виртуальная машина??? Кто-нибудь ковырял виртуальную машину?
Как рисуется в форме, так и рисуется в консоли, консоль от формы ни чем не отличается, берешь контекст устройства по хендалу консоли и на чинаешь муливать, затем отпускаешь его. hDC = GetDC(Handle) ... ReleaseDC(Handle,hDC)
Я умею рисовать НА ОКНЕ!!! И на окне консоли рисовать тоже умею!!! Как рисовать на окне консоли, когда его развернули на весь экран??? Т.к. в данном случае уже работает не GDI, виртуальная машина и ставится там именно текстовый режим! А значить если я нажал ALT+ENTER, то никакая GDI мулевать уже не поможет!!!
microprogs Откуда такая уверенность? Кстати, в текстовом режиме рисовать вообще нельзя по определению.
Рисование на развернутом экране я не встречал. Но не уверен что в текстовом режиме нельзя рисовать по определению, давайте вспомним спектрум, там тоже нельзя было на бордюре рисовать и писать, а ведь делали такие финты, это надоже догадаться расчитать смену цвета бордюра с выводом его на лучевую трубку.
Я знаю, что в текстовом режиме рисовать нельзя!!! Я понимаю, чем отличается TextMode от GraphMode! Я хочу узнать, какие функции вызывает виртуальная машина, когда эмулирует дос-приложение, которое СТАВИТ ГРАФИЧЕСКИЙ РЕЖИМ! Кто-то этим занимался??? Времени нет самому ковыряться.... Ведь можно открыть айс и проследить запуск и выполнение дос-приложения в винде.... Тока на это нужно время, может кто-то занимался??? Видел в универе чувака, который рисовал в консоли на ура!!! И это было полноценное WIN32-CONSOLE приложение!!! Жаль только я его видел один раз ( З.Ы. И не надо меня учить, чем текст отличается от графики! =) З.Ы. Ответьте пожалуйста по-существу, а не трепом... Ведь постановка задачи ясна, разве нет?
microprogs А у всех остальных свободного времени полно, чтоб ерундой заниматься и перед тобой отчитываться о проделанной работе Кажется, тут уже неоднократно намекали на возможность использования замечательной графической подсистемы - GDI. На изучение примитив точки, линии, прямоугольника, эллипса и т.д. у тебя тоже нет времени? А у того чувака в универе время, видимо, было.
Вопрос банальный до безобразия - нафига? Чем вам не угодило DOS приложение или консольное Win-приложение с ASCII артом? и наконец нафиг юзать вышеперечисленное если есть GUI и нормальные виндовозные окна? Захотелось назад к предкам - это в DOS, захотелось рисовать как в винде - это к винде... Зачем изобретать колесо?
Я знаю GDI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Я его юзал столько раз и писал такие вещи!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! КОГДА КОНСОЛЬ РАЗВЕРНУТА НА ВЕСЬ ЭКРАН, GDI НЕ РИСУЕТ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Т.К. ТАМ УЖЕ СТАВИТСЯ РЕАЛЬНЫЙ ТЕКСТОВЫЙ РЕЖИМ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! БРАЛ ТРИ КОМПА, ТОТ TEXTMODE, КОТОРЫЙ НЕ СТАВИТСЯ В ЧИСТОМ ДОСЕ, НЕ СТАВИТСЯ И В РАЗВЕРНУТОЙ НА ВЕСЬ ЭКРАН WIN-CONSOLE-ЭМУЛЯЦИИ ДОС ПРИЛОЖЕНИЯ!!!!!!!!!!!! Я ПРОШУ НЕ РИСОВАНИЕ, КАК ТАКОВОЕ, А КАК КОВЫРЯТЬ ВИРТУАЛЬНУЮ МАШИНУ!!!!! ВЕДЬ ЭТО ЯДРО NT, НЕУЖЕЛИ В НЕМ НИКТО НЕ КОВЫРЯЛСЯ??????????????????????????
microprogs Хватит орать! Откуда у VM может быть API?! Единственное, что с натяжкой можно назвать API досовской виртуальной машины - колгейт через исключение #UD, генерируемое комбинацией байт C4C4.
Позволю не согласится. А на что это похоже?: Код (Text): Address Section Type ( Name Comment 0F004107 .text Export BlockWOWIdle 0F004135 .text Export getMSW 0F0043AC .text Export DispatchInterrupts 0F004CDD .text Export getIF 0F004CFB .text Export VDDRetrieveNtHandle 4 arguments 0F004E05 .text Export Sim32pGetVDMPointer 2 arguments 0F005088 .text Export getSP 0F0050B6 .text Export getSS 0F0050CF .text Export setSP 1 argument 0F005406 .text Export getCS 0F005464 .text Export getDX 0F0057DE .text Export getIP 0F00595D .text Export getSI 0F0059B3 .text Export setIP 1 argument 0F005A5E .text Export VDDAssociateNtHandle 0F005AD4 .text Export VDDAllocateDosHandle 0F006107 .text Export SuspendTimerThread 0F006238 .text Export getBX 0F006251 .text Export host_ExitThread 0F00670D .text Export host_CreateThread 0F00677F .text Export setCF 1 argument 0F0067DB .text Export ResumeTimerThread 0F006F9F .text Export setCX 1 argument 0F006FC4 .text Export setDX 1 argument 0F007074 .text Export getBL 0F007556 .text Export demFileFindFirst 3 arguments 0F007A62 .text Export setBX 1 argument 0F007AB5 .text Export getAL 0F007ACD .text Export setAL 1 argument 0F007CA4 .text Export getDS 0F007CFA .text Export setAX 1 argument 0F007E38 .text Export demClientErrorEx 3 arguments 0F007F8C .text Export demFileFindNext 1 argument 0F0080C0 .text Export setBP 1 argument 0F00819E .text Export getCX 0F0084DD .text Export demGetPhysicalDriveType 1 argument 0F008A5D .text Export call_ica_hw_interrupt 3 arguments 0F009493 .text Export getAH 0F0094AE .text Export getAX 0F0097A3 .text Export getCL 0F00A349 .text Export getDL 0F00B4EA .text Export setDI 1 argument 0F00CDAD .text Export setCH 1 argument 0F00DC8B .text Export setDL 1 argument 0F00E3BF .text Export IsCdRomFile 1 argument 0F00F34C .text Export <ModuleEntryPoint> 0F00FC60 .text Export setBL 1 argument 0F01061E .text Export getIntelRegistersPointer 0F0106C0 .text Export getCF 0F010BCB .text Export setIF 1 argument 0F011B79 .text Export setAH 1 argument 0F01257C .text Export setES 1 argument 0F0125A0 .text Export getBP 0F014137 .text Export getES 0F014D6D .text Export setCS 1 argument 0F015C49 .text Export RegisterWOWIdle 0F017D39 .text Export setDH 1 argument 0F018661 .text Export getCH 0F0199FE .text Export setCL 1 argument 0F01AB46 .text Export getDI 0F032153 .text Export SoftPcEoi 0F032781 .text Export VDDInstallMemoryHook 0F032872 .text Export VDDDeInstallMemoryHook 0F032916 .text Export VDDAllocMem 0F032991 .text Export VDDFreeMem 0F032A0C .text Export VDDIncludeMem 0F032A65 .text Export VDDExcludeMem 0F032B5B .text Export VDDInstallUserHook 0F032BC2 .text Export VDDDeInstallUserHook 0F032CF0 .text Export VDDInstallIOHook 0F032ED3 .text Export VDDDeInstallIOHook 0F032F98 .text Export VDDReserveIrqLine 0F033034 .text Export VDDReleaseIrqLine 0F0330DC .text Export VDDRequestDMA 0F0331D6 .text Export VDDQueryDMA 0F033261 .text Export VDDSetDMA 0F033352 .text Export VdmParametersInfo 0F0333E4 .text Export VdmGetParametersInfoError 0F033A16 .text Export WOWSysErrorBox 0F0341BF .text Export host_direct_access_error 1 argument 0F034543 .text Export WaitIfIdle 0F034FD6 .text Export host_com_close 1 argument 0F0355CB .text Export host_simulate 0F0434C2 .text Export getEAX 0F0434DA .text Export getEBX 0F0434F2 .text Export getBH 0F04350D .text Export getECX 0F043525 .text Export getEDX 0F04353D .text Export getDH 0F043558 .text Export getESP 0F043570 .text Export getEBP 0F043588 .text Export getESI 0F0435A0 .text Export getEDI 0F0435B8 .text Export getEIP 0F0435D0 .text Export getFS 0F0435E9 .text Export getGS 0F043602 .text Export getPF 0F043620 .text Export getAF 0F04363E .text Export getZF 0F04365C .text Export getSF 0F043698 .text Export getDF 0F0436B6 .text Export getOF 0F0436D4 .text Export getEFLAGS 0F0436EC .text Export setEAX 0F04370F .text Export setEBX 0F043732 .text Export setBH 1 argument 0F043762 .text Export setECX 0F043785 .text Export setEDX 0F0437A8 .text Export setESP 1 argument 0F0437CB .text Export setEBP 0F0437EE .text Export setESI 0F043811 .text Export setSI 1 argument 0F043836 .text Export setEDI 0F043859 .text Export setEIP 0F04387C .text Export setSS 1 argument 0F0438A0 .text Export setDS 1 argument 0F0438C4 .text Export setFS 0F0438E8 .text Export setGS 0F04390C .text Export setPF 0F043927 .text Export setAF 0F043942 .text Export setZF 1 argument 0F04396E .text Export setSF 0F04399D .text Export setDF 0F0439CC .text Export setOF 0F0439FB .text Export setMSW 0F043A1F .text Export setEFLAGS 0F043EDE .text Export cpu_createthread 2 arguments 0F0446A7 .text Export VdmDbgAttach 0F044790 .text Export DBGNotifyNewTask 0F0447AA .text Export DBGNotifyRemoteThreadAddress 0F0447C4 .text Export DBGNotifyDebugged 0F044839 .text Export VdmTraceEvent 0F044B07 .text Export GetDOSAppName 0F044CC5 .text Export demFileDelete 1 argument 0F044FCA .text Export VDDReleaseDosHandle 0F04696B .text Export demIsShortPathName 0F047782 .text Export demLFNCleanup 0F047BC0 .text Export demSetCurrentDirectoryLCDS 2 arguments 0F047C3B .text Export demGetCurrentDirectoryLCDS 2 arguments 0F04801F .text Export demSetCurrentDirectoryGetDrive 0F04811A .text Export demLFNGetCurrentDirectory 2 arguments 0F0486BB .text Export demGetFileTimeByHandle_WOW 0F048F10 .text Export demWOWLFNInit 0F048F44 .text Export demWOWLFNAllocateSearchHandle 0F048F91 .text Export demWOWLFNGetSearchHandle 0F048FB2 .text Export demWOWLFNCloseSearchHandle 0F04986D .text Export demWOWLFNEntry 0F04C04B .text Export GetWOWShortCutInfo 0F04C4E3 .text Export cmdCheckTempInit 0F04C55A .text Export cmdCheckTemp 0F04E812 .text Export VDDTerminateVDM 0F04F8BF .text Export DpmiSetIncrementalAlloc 0F04FBEA .text Export MGetVdmPointer 0F04FC03 .text Export VdmMapFlat 3 arguments 0F04FCA3 .text Export SetShadowDescriptorEntries 2 arguments 0F06BB08 .data Export fSeparateWow 0F077414 .data Export SelectorLimit 0F09AB24 .data Export Dos_Flag_Addr 0F09BB2C .data Export CurrentMonitorTeb 0F09BD58 .data Export pDeviceChain 0F09C0DC .data Export ExpLdt 0F09C0E0 .data Export FlatAddress microprogs вот тебе и направление куда рыть. Правда настоящего досовского графического режима все равно НЕ БУДЕТ !!! П.С. По-видимому один я тебя понял