![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Программа должна открывать текстовый файл, имя которого указывается с командной строки, зачитывать первую строку этого файла и отображать эту строку в окне. Окно программы должно быть отцентровано на экране, и строка должна быть отцентрована в окне по вертикали и горизонтали.
Размер окна по горизонтали должен быть таков, чтобы строка могла поместиться в окне. Если строка не может поместиться, то ее можно обрезать по границе последнего помещающегося слова, или последней помещающейся буквы, если строка не имеет пробелов. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
и что советовать?
могу посоветовать использовать MFC... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
в смысле, какие использовать функции, а как я уже разберусь!
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
их много... спашивай что именно нужно.
для начала: DrawText и GetTextMetrics -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
Модератор: Название темы должно отражать ее суть!
|
|||
|
||||
| Helicopterr |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 20.8.2005 Где: Stavropol Репутация: нет Всего: 3 |
Valeria
размеры окна и его положения - это легко, a что касается переноса строки - придется делать отдельную ф-цию, которая будет вставльть символы \n. Не справишься - пиши.
При чем тут MFC?... Это сообщение отредактировал(а) Helicopterr - 18.5.2006, 02:41 -------------------- people can fly |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
при том, что
к тому же: при чем тут консоль? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Оба правы: консоль, для запроса, после чего виндовое окошко. Для окошка достаточно чистой апешки, которую генерит среда.
Функций не много: DrawText c флагами DT_CALCRECT|DT_VCENTER|DT_CENTER|DT_SINGLELINE - чтобы получить прямоугольник, в который можно вписать строку AdjustWindowRectEx - чтобы получить размер самого окна из этого прямоугольника SetWindowPos - чтобы переместить окно в нужную точку в консольном приложении нужно организовать цикл обработки очереди сообщений, но это уже после запрса с консоли. Окошко как создать, надеюсь писать не надо, по форуму много информации на эту тему. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Спасибо большое всем!
Просто последний раз этим занималась на втором курсе, сейчас на последнем, а работаю в Делфи. А написать надо быстро, поэтому решила спросить, чтобы в МСДН не лазить. |
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Helicopterr чего-то не очень у меня получилось запустить
Выдал ошибку Debug Assertion Failed! это с чем связано?Написала в консоле в Visual C++,запустила так,как написано. |
|||
|
||||
| Valeria |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 16.5.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
GremlinProg, а вот не очень понятно. Писать в консольном приложении? что-то типа приведенного выше,да (см. Helicopterr)?
а вот по поводу окошка? как его оттуда потом запускать? в смысле это приложение уже Win32 Application. а не Console. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 13 Всего: 98 |
в смысле? откуда "оттуда"?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
пишешь обычное консольное приложение, но подключаешь хидер windows.h.
после запроса с консоли строки, которую нужно показать в окошке, нужно создать окно и завести цикл. Чтобы не особо заморачиваться, открой среду и создай два приложения: консольное и виндовое. По умолчанию тебе сгенерируются два проекта в виндовом - скопируй все что в нем находится(это файл, в котором _tWinMain или просто WinMain) и перенеси его в консольное приложение, в файл, где определена функция main. у тебя получится смешанное приложение. все, что находится в WinMain перенеси в main, а WinMain удали. Далее тебе понадобится параметр HINSTANCE hInstance из WinMain, в main, такого нет, используй взамен GetModuleHandle(NULL), для exe'шника - это то же самое. после этого тебе остается вначале main вставить пару строк с запросом строки с консоли, а в WndProc добавить прорисовку строки на все окно. Строку сделай глобальной, чтобы опять же, не заморачиваться. Размер окна можно установить сразу после его создания: после удачного вызова InitInstance, только переправь её так, чтобы она возвращала дескриптор окна, а не BOOL; либо в WndProc на сообщение WM_CREATE. Вроде ни чего не забыл. На мой взгляд - это самый быстрый и простой способ, не требующий глубоких познаний или воспоминаний. Да, хидер windows.h желательно довавить в stdafx.h. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Helicopterr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 20.8.2005 Где: Stavropol Репутация: нет Всего: 3 |
Valeria
так как ты написала так и сделал
делаешь в Visual C++ ехе-ху из моего кода. Сразу её не запускаешь. Копируешь её на диск С вместе с файлом myread.dat из которого будем читать строку. Потом в командной стрке (в Windows XP это Пуск->Выполнить) пишешь: C:\ThisProgName myread.dat ThisProgName - это то, как ты назвала эту программу. Вобщем незнаю, у меня работает. -------------------- people can fly |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Кстати MSDN читать полезно даже когда пишешь для дяди Борланда. В делфи много умного придумали, но не все по-человечески )
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |