Досовское окно

Предыдущая тема Следующая тема Перейти вниз

Досовское окно

Сообщение  Gena в Чт Янв 15, 2009 9:32 pm

Вот интересно узнать(и будет очень полезно мне): Как во время выполнения программы в графическом окне писать в досовском/консольном? Заодно хочу узнать, можно ли его убрать?

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 23
Откуда : Москва

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Досовское окно

Сообщение  tux в Пт Янв 16, 2009 12:08 pm

Наскока я знаю, так просто ето к сожалению не получится. Я так понимаю, необходимо нечто рисовать на графическом окне, а в консольное выводить какуюто отладочную информацию. FB может одновременно быть только в одном режиме, а постоянно переключаться из одного в другой будет достаточно трудоемкой задачей (да и неудобно). Можно как вариант сделать два обсолютно разных приложения, одно графическое, другое консольное, но для выводимых значений использовать одну и ту же область памяти (правда если венда не будет на ето ругаться), но ет достаточно геморойно. Второй вариант, ето создать графическое окно с помощью winApi, тогда консольное окно останется нетронутым, но в таком случае придется отказаться от функций типа flip и пр, хотя я думаю ето небольшая проблема. Ну... вроде больше ниче толкового в голову не приходит..
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 28
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: Досовское окно

Сообщение  Gena в Сб Янв 17, 2009 5:10 pm

Ага, понятно. я спрашивал, потому что хотел сделат что-то типа консоли, но если геморно в текстовике, то сделаю в графическом окне.
Можно ли не выводить досовское окно?

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 23
Откуда : Москва

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Досовское окно

Сообщение  ShenZN в Сб Янв 17, 2009 8:42 pm

Чтобы не выводить консольное окно нужно использовать такую опцию: fbc -s gui test.bas.
Подробнее: Использование командной строки

ShenZN

Сообщения : 155
Дата регистрации : 2008-02-18
Откуда : Ukraine

Посмотреть профиль http://lodestar-game.narod.ru

Вернуться к началу Перейти вниз

Re: Досовское окно

Сообщение  DiG. GeRR в Сб Янв 31, 2009 8:11 pm

А на самом деле все гораздо проще. Для создания консоли в приложениях Windows GUI кое-что предусмотрено. Итак, абсолютно любое приложение может вызвать апи AllocConsole, в результате создается консоль для этого приложения. После этого нужно получить хендлы для вывода/ввода (GetStdHandle), когда консоль больше не нужна, вызывается FreeConsole. Как то так:

Код:
#include "windows.bi"

declare function DlgProc (byval hWnd as HWND,byval uMsg as UINT,byval wParam as WPARAM,byval lParam as LPARAM) as bool

'digger.Rc

'main.dlg
#define DLG_1   1000
#define BTN_1   1001

Dim shared hInput as HANDLE
dim shared hOutput as HANDLE
dim shared myString as string
myString = "My text in console  "
dim shared myBuffer as string

DialogBoxParam(GetModuleHandle(0),cast(LPCSTR,DLG_1),0,@DlgProc,0)
end

function DlgProc (byval hWnd as HWND,byval uMsg as UINT,byval wParam as WPARAM,byval lParam AS LPARAM) as bool
   dim as long id,event,_temp
   
   select case uMsg
      Case WM_CLOSE
         EndDialog(hWnd,0)
      case WM_COMMAND
         select case loword(wParam)
            Case BTN_1
               AllocConsole()
               hInput = GetStdHandle(STD_INPUT_HANDLE)
               hOutput = GetStdHandle(STD_OUTPUT_HANDLE)
               
               WriteConsole(hOutput,StrPtr(myString),Len(myString),@_temp,0)
               
               ReadConsole(hInput,@myBuffer,120,@_temp,0)
               
               FreeConsole()
         End Select
      case else
         return FALSE
   End Select
   return TRUE
   
end function

DiG. GeRR

Сообщения : 101
Дата регистрации : 2009-01-30
Возраст : 25
Откуда : Рудный, Казахстан

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Досовское окно

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения