IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   класс - окно для вывода текстовой информации (http://www.imho.ws/showthread.php?t=127637)

crawler 26.12.2007 20:17

класс - окно для вывода текстовой информации
 
Привет всем. Нужна помощь - надо создать вспомогательное текстовое окошко (желательно с вертикальной прокруткой) и выводить в него небольшие текстовые сообщения.

Я сделал класс, который будет скомпилирован в ДЛЛ, а чужая прога дает фейс и будет вызывать мой класс. Внутри моего класса один из членов будет этот логгер. Мой класс сегодня никак не трогает ГУИ.

Окошко логгера должно будет создаваться в конструкторе моего класса (который создается при старте аппликации), и будет создана только 1 копия моего класса (если это важно).

Код должен быть в С/С++, и желательно юзать ВинАПИ.

Декларация - чтото вроде такого:
Код:

class LogWindow
{
public:
    LogWindow            ();
    ~LogWindow          ();     
    bool AddMsgToWindow (char *msg);
    bool ClearWindow    (); { m_szMsgBuffer[0] = '\0'; return Update(); }

private:
    bool  Update();
    HWND        m_hwnd;
    char          m_szMsgBuffer[10000];
};


PSyton 27.12.2007 07:15

А в чем собственно проблема-то?
Создай в ресурсах окошко, например с RichEdit'ом, а в конструкторе класса делай CreateWindow(), потом когда надо ShowWindow(SW_SHOw/SW_HIDE).
После создания получаешь хендл RichEdit'а и
когда надо что-то вставить в текстовую облать, отсылаешь RichEdit'у сообщение через SendMessage(), какие параметры можно посмотреть в MSDN... Очистка тоже через SendMessage.

crawler 27.12.2007 10:03

проблема собсно в "создать". RichEdit даже не нужен, достаточно обычного TextEdit ( или StaticText ).
Цитата:

Создай в ресурсах окошко,
можно примерчик плиз? а то я с ГУИ не особо в ладах

И еще - как создать это окошко чтобы оно висело "поверх" всего остального?

BillyIII 27.12.2007 11:24

все просто:
1 регишь класс
2 создаешь окно
3 добавляешь дочернее класса "EDIT" - это текст-бокс
4 стиль WS_EX_TOPMOST - поверх окон

crawler 27.12.2007 12:09

Цитата:

1 регишь класс - зачем? и как?
2 создаешь окно - ну с этим вроде как понятно
3 добавляешь дочернее класса "EDIT" - это текст-бокс -как?
ooooxxx ;( я понимаю что все просто. В теории даже понятно. Но я этого никогда не делал.

Если все так просто - накидай эти 10 строк кода.

BillyIII 27.12.2007 12:17

если есть VisualStudio - создай проект из шаблона Win32 App

посмотри в MSDN:
RegisterClassEx()
CreateWindowEx()

и ещё вариант:
создать консоль, вызвав AllocConsole()
далее получить хэндл стдаут через GetStdHandle(STD_OUTPUT_HANDLE)
теперь использовать WriteFile для записи в консоль

PSyton 27.12.2007 12:20

Вечером отпишу, если никто не напишет.
Конслоь тоже кстати вариант.

crawler 27.12.2007 13:42

консоль - самое то. WriteConsole() удобнее WriteFile . Спасибо большое.


Часовой пояс GMT +4, время: 04:26.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.