Форум » GUI » Консольные приложения » Ответить

Консольные приложения

spair2k: Если собирать в HMG с помощью ключей /C /X (xHarbour), то не выводится информация обычным образом (Qout, QQout, @ Say, ...), только через OutStd(). Как это лечится?

Ответов - 1

sergey5703: Есть два различных типа приложений - КОНСОЛЬНОЕ и GUI. И они между собой не дружат. Для вывода текста на экран (в GUI приложении) предназначена функция Win32 API TextOut. Вот пример из программы на Delphi вывода прямо на Рабочий Стол (DestTop): program OutDesk; uses Windows, Messages, SysUtils, Classes, Graphics, Math, Forms; var DC: HDC; DeskTop: TCanvas; StrInfo: String; Left, Top, Right, Bottom, OldBkMode: Integer; WorkArea: TRect; begin StrInfo := 'Hello, World!'; DeskTop := TCanvas.Create; try with DeskTop do begin DC := GetDCEx(GetDesktopWindow, 0, DCX_CACHE or DCX_LOCKWINDOWUPDATE); Handle := DC; try Brush.Color := clBackground; Font.Color := clWhite; Font.Style := [fsBold]; SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkArea, 0); Right := WorkArea.Right - 3; Bottom := WorkArea.Bottom - 3; Left := Right - TextWidth(StrInfo); Top := Bottom - TextHeight(StrInfo); OldBkMode := SetBkMode(Handle, TRANSPARENT); // Собственно вывод строки на рабочий стол TextOut(Left, Top, StrInfo); SetBkMode(Handle, OldBkMode); finally Handle := 0; ReleaseDC(GetDesktopWindow, DC); end; end; finally FreeAndNil(DeskTop); end; end. Для упрощения этого процесса используются различные объекты - StaticText, Label, Memo и другие. Их использование нужно смотреть в документации к MiniGUI или в Tutorial.



полная версия страницы