Помогите ньюбу

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Помогите ньюбу

Re: Помогите ньюбу

СВой » 15 окт 2007, 22:18

BBB. как вариант бы сработало!Я воспользовался Invalidate... :) Очень помогло :) Все нормально перерисовывается.

Re: Помогите ньюбу

Adamant » 15 окт 2007, 21:09

Если можно попроще объяснить, что такое "обертка".

Re: Помогите ньюбу

Sketch » 15 окт 2007, 05:01

Совсем уж к чайниким по Си себя не отношу ,но подобная задача завела меня в тупик, надеюсь, кто-нибудь растолкует что к чему :)
Существует ли функция( или алгоритм), в Си( Си++), позволяющая воспринимать строку, введимую с клавиатуры как часть кода программы.
Например, ввод двух любых (по желанию пользователя) математических функций, по которым в дальнейшем ведётся рассчет.

Re: Помогите ньюбу

BBB » 11 окт 2007, 11:01

Про это, что ли?
СВой писал(а):Так и не удалось затереть старый рисунок :( Понятия не имею как сделать
Так закрась предварительно всю область, например FillRect - ом. А потом рисуй прямоугольник.

Re: Помогите ньюбу

СВой » 10 окт 2007, 16:31

:( Пропал...Никто больше помочь не сможет?

Re: Помогите ньюбу

СВой » 03 окт 2007, 10:28

:) Да я так и сделал(я про UpdateData) все нормально построилось и вывелось.Сейчас попробую с занесением данных через GetWindow текст...теперь встала другая проблема,нужно как то добиться,что если я ввожу новые данные в поля,у меня по нажатию кнопки стирался старый прямоугольник и рисовался новый.!А то сейчас у меня при вводе нового значения и нажатия кнопки прямоугольник поверх рисуется :)

Так и не удалось затереть старый рисунок :( Понятия не имею как сделать

Re: Помогите ньюбу

BBB » 03 окт 2007, 10:17

СВой писал(а):А я думал наобарот,первые координаты-это координаты левого нижнего и правого верхнего угла...хм...надо бы уточнить...
См. описание функции, там все сказано.
СВой писал(а):Т.е GetWindowText.IDC_EDIT1?
Если вызов в методе класса Cназвание_прогиDlg, то

GetDlgItem (IDC_EDIT1)->GetWindowText (...)

Ну или "для надежности" (что контрол IDC_EDIT1 существует) можно проверить на "не NULL" результат GetDlgItem:

CWnd *pEdit = GetDlgItem (IDC_EDIT1);
if (pEdit) {
pEdit->GetWindowText (...)
};
СВой писал(а):странно что с UpdateData(false) не пашет :( По идее должен был данные из поля в переменную заносить
Насколько я помню, если параметр ф-ии UpdateData равер FALSE, то данные переносятся из переменной (привязанной к этому полю) в поле.

-----------------------

Хоть это на первый взгляд и может показаться странным, но иногда порой удобнее обходиться без связанной с контролом переменной. Так как в случае наличия связанной переменной получается этакое дублирование информации. И надо аккуратно следить, чтобы одно значение соответсвовало другому. Т.е. постоянно, при возможных изменениях там либо сям, "гонять туда-сюда" UpdateData (false/true).

В случае отсутсвия связанной переменной такого дублирования нет. А в нужный момент просто делается чтение или запись значения из/в контрол через API-функции (если контрол из простых, ненавороченных, типа того же EDIT, то это и в самлм деле несложно).

Re: Помогите ньюбу

СВой » 02 окт 2007, 22:22

А я думал наобарот,первые координаты-это координаты левого нижнего и правого верхнего угла...хм...надо бы уточнить...темнеменее я думаю что кривой,но прямоугольник бы нарисовался.Завтра попробую по-другому.
Т.е GetWindowText.IDC_EDIT1?Сейчас посмотрю как правильно задается...
Идея с переводом в целое интересная,странно что с UpdateData(false) не пашет :( По идее должен был данные из поля в переменную заносить
Кстати,попробывал вместо координаты 500-m_y1 ввести просто число...скажем 300!Все вырисовывается нормально,так что тут дело не в координате

Re: Помогите ньюбу

BBB » 02 окт 2007, 17:30

cdc->Rectangle(390, 500, 410, 500-m_y1);

Если m_y1 - число положительное, то получается, что у прямоугольника у-координата левого верхнего угла (500) больше у-координаты правого нижнего угла (500 - m_y1). Может, в этом дело?

Содеждимое контрола Edit можно получить при помощи GetWindowText. Только результат будет - строка (char [] или CString). Затем надо будет перевести в целое (напр., atoi)

Re: Помогите ньюбу

СВой » 02 окт 2007, 14:55

:) Спасибо за ответы,по поводу классов я так и думал,на всякий случай уточнил.
Сейчас попоробую дальше что-нибудь изваять...Чтото времени все меньше :(
По поводу ошики...где можно посмотреть расшифровку ошибки?Мне при компиляции только пишется ,мол,0-warning,1-error....при этом что именно за ошибка не пишется

EDIT.Вот я олух ;) Скором вверх не прокрутил :) Пока мучаю программу...большинство на угад,спасибо за подсказки-очень выручили! :) Завтра еще вопросы появяться.

Столкнулся с проблемой.Не пойму в чем дело.
Сделал текстовые поля,связал их с переменной,ну скажем m_y1,m_y2,m_y3.(3 значения для пробы,пытаюсь заставить программу рисовать прямоугольники пропорционально введенным значениям.будет у меня такая гистограмма)
ну вот присвоил текстовым полям переменные, попробывал в обратотчике нажатия кнопки(по нажатию я рисую прямоугольники) вставить текств вроде

CBrush bre;

bre.CreateSolidBrush(RGB(215, 250, 0));
cdc->SelectObject(&bre);
cdc->Rectangle(390, 500, 410, 500-m_y1);

Ну т.е. по идее у меня меняется только координата y у прямоугольника.Компиляция проходит нормально,но прямоугольник не вырисовывается.В чем может быть проблема?

А значение из текстового поля в переменную можно записать только с помощью member variebels?
Как посоветуешь подписи к осям сделать?Их значения я буду скорее всего в отдельном окне задавать,после этого мне их нужно вывести рядом с осью

Вернуться к началу