![]() |
|
|
![]()
|
|
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Мой проект состоит из трех независимых программ.
Первая программа - (это основная моя работа) - это программа для микроконтроллера Atmel на 51 ядре, прибор измеряет несколько параметров и может передавать их через интерфейс RS485, протокол у меня свой. Вторая программа - это уже программа на комп, предназначена для использования в рамках нашего предприятия и нужна для полного конфигурирования этого прибора с компа - это запись флеш-памяти (в которую надо загнать несолько тысяц значений из файла), всех параметров, и тд. (соответственно, прибор имеет соответствующее распознавание команд интерфейса.) Сейчас речь идет о третьей программе. Она уже предназначена для пользователя. Представляет своего рода терминал, который может обслуживать до 256 приборов. (Протокол обмена данных с прибором предусматривает 8 битную адресацию, опрос происходит по схеме "1. Все молчат - комп посылает запрос. 2. Все молчат - адресуемый говорит с компом".) Вот. Соответственно на каждый прибор надо создать свое отображение. В этом отображении должны показываться основные параметры прибора (диапазон измериний, тип функции, измеренный параметр, ну и прочая специфика.). Причем на те, что стоят в важных местах, пользователь по своему усмотрению может открыть окошечко, в котором будет рисоваться график измеренного параметра. Окошечек этих будетоткрыто немного, где-то три-четыре (по опыту), с остальных приборов надо будет только снимать по одному параметру и сигнализировать в случае появляние каких-то крайних ситуаций. Важно, что эти окошечки не должны сильно загромождать экран, поэтому пользователь должен сам решить, какие ему больше всего нужны. Соответсвенно, как я придумал это устроить чисто дизайнерски. 1. Главное окно имеет вид диалога с менюшкой, в которой находятся всякиевещи типа настроек портов, скоростей, таймаутов и прочего. 2. В главном окне есть табличка, которую я ка раз и хотел сделать. В ней при опознавании присутствия прибора с новым адресом добавляется строка. в этой строке добавляются следующие элементы:
в общем-то и вся идея. Единственное, что мне тут не нравится - это тот самый присловутый скроллинг, ведь все сразу в таблицу не влезет. Но можно будет сделать так, чтобы вверху всегда стояли строки наиболееприорететные, а нижние вылезали в зону видимости только по принудительному скроллу или при аварийной ситуации, а в нормальном виде они просто где-то существует, и их значения всегда можно просмтреть в файле, который генерит программа. Пробовал делть не в виде таблицы, а просто разбросать все "квадратики" по всему экрану, но уж больно в глазах рябит от такого представления. К тому же у всех разрешение монитора разное. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Ха!Так чем мой пример не подходит? В столбце режим так пишем-режим.По нажатию-делаем комбо.. Значит так.Хороним диалог.(Извини) Делаем SDI,разделеный сплитером.В левом углу CListView,в правом CScrollView,для графика.. ListView можно делать со встроеными чеками.Смотри SetExStyle(),кажется -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Слушай, что называется "с ходу" он у меня не компиляется. У меня студия.NET, я в ней пока не очень разобрался, так как до этого видел только 6 и то мало с ней работал, а время у меня сейчас на секунды идет. Выдает несколько ерроров, не очень мне понятных, и один не опасный варнинг насчет преобразования типов и всякой ботвы. TitleTip.cpp(240): error C2360: initialization of 'pts' is skipped by 'case' label TitleTip.cpp(241): error C2360: initialization of 'pts' is skipped by 'case' label TitleTip.cpp(206) : see declaration of 'pts' GridCtrl.cpp(2830): error C2668: 'CUIntArray::InsertAt' : ambiguous call to overloaded function
Ну по прочтению некоторых ветвей форума я уже понял, что ты не любишь диалоги Но тут есть маленькая деталь - программировать под винды я начал сравнительно недавно, и с SDI еще не разбирался. (Хотя, мысль мне нравится, но тогда уж делать с MDI мне так кажется - на каждый прибор свой документ создавать и кучу чайлд-окон лепить в разных представлениях.) А с диалогами вроде бы что-то получается. Во всяком случае открыть\закрыть, нарисовать что-то внутри, подвигать их я научился уже. Так что ввиду нехватки времени пока придется первую версию сделать так,как представляется для меня возможным. Проект-то надо в воскресение чтоб работал уже. Плюс естественно не без глюков все выйдет, еще какое-то время уйдет на отладку и креш-тесты -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||
|
|||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Dreamer_0x01
Хочешь,напишу тебе халявный интерфейс.Дай скриншот диалога.Все бесплатно.
Неудобно.Можно SDI,но с переключениями представлений -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Спасибо, Coocky. Я восхищаюсь подобным участием и поступками. Но может быть, оттого я сейчас сижу именно сдесь и работаю за копейки, что никогда не любил выезжать на чужой спине. Часто это было как раз наоборот. А поскольку это моя работа, и я за нее деньги получаю, я ее делаю сам. Я должен сам во всем рахобраться, иначе у меня не будет удовлетворения от сделанного. Мне бы лучше понять, почему уменя твой пример не компиляется, это задело меня за живое - не люблю чувствовать себя чайником. Но как я понял, то что я написал,для тебя не очень информативно. Вот попробую еще сегодня дома скомпилять в шестой версии, может прокатит. Добавлено @ 10:25 Кстати, ты говорил, что со скроллом будут ужасные глюки. Странно, но у меня нет сейчас ни одного, как я его не насиловал. Правда, это еще не окончательный вариант, а всего лишь наброски.. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 2 Всего: 25 |
для тех кто еще не передумал извращаться над лист контролом: если вы пожелаете еще и сделать анимашайн при наведения мышке на ячейку должен вам сообщить что выглядить будет уродливо, перерисовываться будет миниму 2 строки... мерцания в принципе гарантируеться, использовать двойную буферизацию будет затруднитель так как придеться хранить второй буфер для каждой строки, а потом сливать... может я и не прав, но это то что ощутил на себе.... если я не прав дайте код... для двойной буфферизации лист контрола -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Dreamer_0x01
Да я сам в шоке.Разве там есть switch? 'CUIntArray::InsertAt' А это откуда? Ты точно МФС юзаешь? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Есть, да еще какой... ;) В "CTitleTip::PreTranslateMessage(MSG* pMsg) "
А это в "int CGridCtrl::InsertColumn(LPCTSTR strHeading, UINT nFormat /* = DT_CENTER|DT_VCENTER|DT_SINGLELINE */, int nColumn /* = -1 */) " , "m_arColWidths.InsertAt(nColumn, (int)0);" А МФС юзаю конечно... Может, я что-то не то стянул? Стягивал файл "26.зип", приаттаченный к твоему сообщению из какой-то старой ветви форума. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||
|
|||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Я тогда файлы не крепил-прав еще не было.Ща поищу Добавлено @ 22:03 Вот лови.И будь Внимательный при поиске http://forum.vingrad.ru/index.php?showtopic=34913 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
Да, и вправду лажа какая-то получилась...Сейчас историю в броузере просматриваю - ума не приложу, откуда я в тот день этот файл выкачал... Эксперимент продолжается! Ура! -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Dreamer_0x01
Ну проблемі будут-звони.За интерфейс отвечаю -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |