ann_nef
|
|
« : 23-06-2011 14:44 » |
|
Помогите ещё раз. Задача,которую хотела реализовать : в первом диалоге вводятся параметры и в буфер записывается информация, из первого вызываю второй диалог, в котором должен отобразится график. Пока вызывается второе окно и в нём надо нажать кнопку для вывода графика. Как обойтись без реального нажатия кнопки? Есть два пути решения (SendMessage или OnPaint) , но ничего не получилось. Написано на visual c++ 6.
|
|
« Последнее редактирование: 23-06-2011 14:55 от ann_nef »
|
Записан
|
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 23-06-2011 16:28 » |
|
ann_nef, архив не смотрел, но в общем-то сразу вопрос, какое сообщение посылается при помощи SendMessage, и какому окну?
А причём тут OnPaint?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #2 : 23-06-2011 16:34 » |
|
Те ты хочешь, чтобы график просто сразу отрисовывался, без нажатия кнопки? Добавлено через 15 минут и 29 секунд:ann_nef, 1. Зачем ты используешь CEdit в качестве рамки для рисования? 2. Делаешь свой CMyWnd класс от CStatic и в его OnDraw отрисовываешь график (полностью логику из void WinGraf::GrafBuf(int buf[],int fl)). Только конечно без CClientDC dc(GetDlgItem(IDC_Egraf)); ты DC получишь в ф-ю в качестве параметра 2.а В примере ниже я сделал класс от CWnd. 3. Добавляешь к диалогу в ресурсах простой статик, связываешь ресурс с объектом - членом класса, и при декларации заменяешь CStatic на CMyWnd. 4. в OnInitDialog класса WinGraf передаёшь этому окошку данные, как ты это делаешь в WinGraf::OnBgraf(). CMyWnd конечно должен эти данные хранить, аналогично как ты это сделала с WinGraf. Можно (лучше) конечно и сразу их передать. Только в этом случае (по-хорошему в любом) надо избавится от public членов, и ввести функцию инициаллизации. Ну если у тебя туго со временем, то можно сделать объект CMyWnd тоже public и инциаллизировать его из CCompareSinDlg, там где ты подготавливаешь и вызываешь WinGraf Добавлено через 2 минуты и 16 секунд:5. Очень трудно читать такой код. Если ты уже придерживаешься стандарта де факто, то называй классы начиная с С, а то у тебя CCompareSinDlg, а WinGraf просто так, хотя по сути это CWinGraf DlgДобавлено через 31 минуту и 43 секунды:В общем примерно так. Сделал через public, потом сама исправишь. И ещё одно, у меня ща 6ки под рукой нет, сделал в самой маленькой - 2005. Поэтому, если ты в 6ой проект откроешь, то добавь к нему новые классы - 4 файла (я сделал ещё одни диалог для демонстрации). Или просто не открывай "мой" проект, а добавь их в свой и замени в своём файлы ресурсов rc и h, и CompareSinDlg.cpp из "моего". Добавлено через 1 минуту и 45 секунд:ps Код отрисовки полностью твой (со всеми огрехами), я только цвет фона добавил, можешь поменять. Про остальное молчу... Ругаться сегодня нет ни желания, ни сил. Оправдываю тебя нехваткой времени.
|
|
« Последнее редактирование: 23-06-2011 17:42 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
ann_nef
|
|
« Ответ #3 : 24-06-2011 06:27 » |
|
Джон, спасибо за то, что не ругаешься, за помощь и советы. Сейчас всё попробую. К сожалению, последние три месяца все усилия,в том числе немногочисленные умственные, направлены на то,чтобы не остаться калекой после неудачного падения из-за гололедицы в конце марта. Хотя и до этого большого порядка в программе не было.
Добавлено через 54 минуты и 4 секунды: Джон, твой вариант, естественно, работает. Почти то,что нужно. Правда, виден только один из 2-х графиков, первый промелькивает и стирается вторым. Но, это детали,я даже примерно знаю,как это исправить.
|
|
« Последнее редактирование: 24-06-2011 07:25 от ann_nef »
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #4 : 24-06-2011 07:48 » |
|
К сожалению, последние три месяца все усилия,в том числе немногочисленные умственные, направлены на то,чтобы не остаться калекой после неудачного падения из-за гололедицы в конце марта. Ты уж будь пооосторожней. А то кого мы воспитывать будем? Про остальное сейчас наговорю сентимены. "Как вы яхту назовёте, так она и поплывёт." (с) В том смысле, как вы программу напишите, так она и будет работать. Программу надо любить, и она отплатит тем же. Как я уже сказал, в коде отрисовки я не разбирался. Такое ощущение, что у тебя нет конкретного алгоритма. Обычно такой код у людей, которые программируют методом "ненаучного тыка". Те пробуют всё подряд, пока что-нить не получится. Разбираться в таком коде, да даже просто его "читать", нет никакого желания. Длиннючая ф-я с обрывками комментов, генерация каких-то промежуточных данных в ф-ции отрисовки и тд и тп. Графики я ваще не видел, тк UI на моей немецкой винде весь в кракозябрах, смысл которых неочевиден. Я только понял, что САМАЯ БОЛЬШАЯ кнопка вызывает диалог. Одна вертикальная линия как-то пересекает всю форму. Тоже не разбирался. Ну как-то так. Поэтому я просто показал тебе принцип построения собственных контролов. Он очень прост. Сначала создаём своё класс, наследованный от CWnd. Заполняем его логикой. И используем на форме. Попробуй реализовать контрол в 3 шага: 1. Получение оригинальных данных. 2. Трансформация (преобразование) этих данных в необходимые для контрола, в соответствии с его размерами, особенностями и тд. 3. Отрисовка этих данных. Такую схему легче отлаживать. Например, ты можешь скармливать ф-ции отрисовки вручную подготовленные данные, чтобы удостовериться, что она работает правильно. Аналогчино ты можешь легко отладить и функцию-трансформатор. Достаточно проверить данные на её выходе и сравнить, например, с эталоном, подготовленным вручную.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
ann_nef
|
|
« Ответ #5 : 24-06-2011 09:23 » |
|
Да,метод неучного тыка - мой! Где-то что-то прочитала и пытаюсь использовать в своих целях. Читать большие и умные книги не очень получается: дома не хочется ,а на работе с прибором много возни. Но,с вашей помощью кое-что проясняется.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #6 : 27-06-2011 11:08 » |
|
А где ты что-то читаешь?
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
ann_nef
|
|
« Ответ #7 : 29-06-2011 08:57 » |
|
В больших и толстых книгах, которые от корки до корки читать не удаётся. Книг 6 около лежат на работе и пару дома. И в инете ищу. Джон,или это был риторический вопрос? Я же - человек конкретный, могу и список приложить.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #8 : 01-07-2011 13:12 » |
|
Ща оффтоп покатит. Вернее уже покатил. Ты со своей проблемой-то разобралась? Вопрос был не риторический. Но скорее качественный, а не количественный, поэтому весь список оглашать не надо. Просто хотелось бы представление иметь. И что за книги, тоже. Собственно говоря, всё зависит от твоей специфики. Занимаешься ли ты программированием серьёзно, зарабатываешь на булочки, или же это побочный продукт твоей основной деятельности? Так сказать для облегчения труда. От этого зависит насколько глубоко тебе нужно "въезжать ф тему". Сейчас, в эпоху "визуального" программирования, когда софт можно создавать используя ислючительно клики и перетаскивания, развивается поколение псевдопрограммистов. Хорошо это или плохо, время покажет, но факт, как говорится, имеет место быть. Те люди просто немного отходят от стандартных Excel-ей и Access-ов, но только немного. Стоит ли требовать от них бОльшего? Их можно сравнить с обывателями, которые кидаются искать лечение своих (хуже - чужих) болячек в инете. Ну и соответственно получают результаты: одному помогло, другому никак, третий загнулся. А причина? Может нет достойных врачей? Или врачи слишком дорогое удовольствие? Врачи махнули рукой и последняя надежда - инет? Куча других причин. Хорошо это или плохо? Как тут ответить однозначно? Так и с программированием. Один просто обращается в софтверную фирму. Другому это дорого и он пытается что-то где-то почитать и сделать сам. Третий пытается где-то что-то слямзить и попросить кого-нить "помочь", выдавая за своё. По причине последних я лично, как и многие на этом форуме, с недоверием отношусь к вопросам начинающимся с "есть код, надо ..." или "есть программа, надо ...". Чей код, чья программа? Совсем другое дело, если своя программа, свой код. Конечно, не у каждого есть под боком программер, которого можно спросить "что я делаю неправильно". Для этого есть форумы. Но сделать самому что-то с нуля довольно сложно. Поэтому лучше начинать с примеров. Буду говорить конкретно про VS и MFC. Ближе к телу. Те считается, что сам процесс программирования тебе знаком, как и С++. Те всё сводится к конкретным специальным сведениям (знаниям) о WinAPI и как VS C++ в общем, или MFC в частности, может с ним работать. Как создать окно. Как нарисовать. Как управлять контролами. И тд. Первое и необходимое - MSDN. Там, помимо справочных данных, есть куча примеров (проектов с кодом) практически на все случаи жизни. Для теории, вернее для понимания происходящих процессов (типа, то такое DC, GDI и тд), посоветую Петцольда "Программирование для Windows 95" кажется она есть у нас в библиотеке. Но, как я уже сказал, дальнейшее зависит от твоей специфики. В смысле "а оно тебе надо?"
|
|
« Последнее редактирование: 01-07-2011 13:14 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
ann_nef
|
|
« Ответ #9 : 04-07-2011 11:18 » |
|
ОФфтоп, так оффтоп. Что мне надо? Надо, чтобы прибор правильно работал, чтобы с помощью его можно было проверять и отбраковывать платы. Для этого надо: 1. чтобы в нём самом не было ошибок (их полно и половина обнаруживается с помощью моей программы) 2. чтобы алгоритм, придуманный разработчиком, не был мечтой, а мог быть воплощен в жизнь (нужный % погрешности не обеспечивается железом) 3. уметь читать схемы, вспомнить,как работает трансформатор,найти куда тыкать щупом осциллографа и тд Раньше писала на Delphi бухгалтерские программы, а ещё раньше был С.
Книги,которые читала-листала-пробовала : 1.Кэйт Грегори "Использование Visual C++ 6. Полное справочное руководство" (мне полезна,как справочник) 2.Т.Сидорина "Visual Studio C++ и MFC" (не очень удачное изложение, то ли тетеньки плоховато излагают, то ли ещё что. Первая книга, правда, тоже тётенькой написана) 3. Лафоре - не помню точного названия, книга дома. С почтительным испугом открываю её, далеко не продвинулась... Даже в отпуск с собой брала её, но было не до С++. 4.Б.Страуструп "Язык программирования СИ++" - эта совсем не читается. 5.И только что дали почитать - Ю.Щупак "Win32 API. Эффективная разработка приложений" - пока кажется полезной. 6.и тд - в инете кое-какие скачала.
Начинаю читать любую книгу последовательно с первой страницы, где описано часто то, что знаю. А мне нужен ответ на конкретный вопрос, поэтому начинаю забегать вперед, если ответа не нахожу, то бросаю читать.
|
|
|
Записан
|
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #11 : 04-07-2011 13:04 » |
|
ann_nef, ну примерно так я себе это и представлял. Тогда убирай их подальше. Оставь только Страуструпа. НО! Это не роман, не книжка для чтения. С одинаковым успехом можно "читать" справочник по радиоэлементам, чтобы узнать как работает p-n-p транзистор. Это даже не книга по программированию. Это просто хороший справочник по С++. Именно для вопросов по чистому С++. Никаких кнопок, окошек и пр. контролов там не ищи. К нему можешь обращаться, если у тебя возникают вопросы как сделать классы-объекты, наладить "родственные связи" между родителями и потомками и тп. Ничего ОС-специфичного там нет. В этой же связи: Студийный С++ не совсем чистый С++.
На чистом Win32 API программить конечно можно, но для тебя будет сложней. Для этого надо хорошо знать всю кухню. Организацию и взаимодействие окон, отправку сообщений и тп. К томуже не ООП.
Теперь, на первое место ставишь закладку на MSDN. На второе и третье: codeguru.com и codeproject.com. Это на тот случай, если помимо стандартных решений тебе понадобится нечто большее. Ну, и если будет (останется) время для виндозной теории, то Петцольд.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|