Автор | Сообщение |
|
| |
Пост N: 55
Зарегистрирован: 31.05.07
|
|
Отправлено: 29.12.09 10:56. Заголовок: Консольные приложения
Если собирать в HMG с помощью ключей /C /X (xHarbour), то не выводится информация обычным образом (Qout, QQout, @ Say, ...), только через OutStd(). Как это лечится?
|
|
|
Ответов - 1
[только новые]
|
|
|
| |
Пост N: 21
Зарегистрирован: 01.01.10
|
|
Отправлено: 04.01.10 05:06. Заголовок: Как это лечится?
Есть два различных типа приложений - КОНСОЛЬНОЕ и 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.
|
|
|