|
|
|
| Есть поле(Edit Control), предназначено для ввода числа. Рядом есть кнопка(Button), при нажатии которой введенное число должно вставится в Static text.
У поля Edit control я поставил:
Категория - Value
Virable name - m_num
Остально не менял.
Static text имеет теже настройки что и Edit Control, только имя его m_bnum.
Дальше пишу:
void Cmy7Dlg::OnBnClickedButton1()
{
m_bnum = m_num;
UpdateData(FALSE);
}
|
И при компеляции выдает ошибку.
Если же написать:
void Cmy7Dlg::OnBnClickedButton1()
{
m_bnum = "test";
UpdateData(FALSE);
}
|
то всё работает.
Следевательно я неправильно обращаюсь к переменной m_num. Помогите пожалуйста. | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 10:55)
| | 1) Это Builder или VC++?
2) Какую ошибку выдаёт компилятор? | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 12:47)
| | 1) Microsoft Visual Studio
2)
Compiling...
my7Dlg.cpp
Linking...
my7Dlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall Cmy7Dlg::OnEnChangeEdit1(void)" (?OnEnChangeEdit1@Cmy7Dlg@@QAEXXZ)
my7Dlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall Cmy7Dlg::OnStnClickedStatic3(void)" (?OnStnClickedStatic3@Cmy7Dlg@@QAEXXZ)
E:\Documents and Settings\JIEXA\Мои документы\Visual Studio 2005\Projects\my7\Debug\my7.exe : fatal error LNK1120: 2 unresolved externals
|
| |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 12:51)
| | Хм... а вы как со статическим полем переменную связали? С ним же вроде нельзя связать переменную (в версиях до VC++ по крайней мере)? | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 12:51)
| | Ошибки у вас связаны с тем, что вы вероятно добавили элемент управления, потом связали их с переменными - удалили элемент управления и теперь переменные и обработчики торчат не прикаянные. Нужно либо изыскать их в проекте и уничтожить, либо начать новый проект, где не будет этих лишних элементов. | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 10:55)
| | Если это Builder, но следует писать так
void Cmy7Dlg::OnBnClickedButton1()
{
m_bnum = m_num->Text;
UpdateData(FALSE);
} |
В Builder элемент управления не связывается с переменной как в VC++, объект элемента управления сам содержит переменную, получить доступ к которой можно обратившись к свойству Text элемента управления. | |
|
|
|
|
 72.9 Кб |
|
|
для: cheops
(27.01.2007 в 12:54)
| | Странно, походу я где-то ещё допустил ошибку. Посмотрите пожалуйста. | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 13:18)
| | Я к сожалению проект 8 студии не смогу открыть - только 7.0 и 7.1 (у меня CV++ .NET 2003). | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 13:35)
| | А не могли бы вы как-нить объяснить, как мне сделать чтобы к примеру я вводил в поле Edit Control какой-нить текст и при нажатии на кнопку он отображался в поле Static Text?
А то я уже замучался :(. Непонимаю как и чего :( | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 13:39)
| | В обработчик события EN_CHANGE для текстовой области поместите строки
SetDlgItemText(IDC_STATIC,m_num);
UpdateData(); |
Где IDC_STATIC - идентификатор статического элемента управления, а m_num - переменная CString, связанная с текстовым полем. | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 14:31)
| | Мммм. Мне бы другой вариант, просто я поставил перед собой такую задачу, чтобы понять как можно обращатся к элементам формы. Только не через функцию а через переменную | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 14:39)
| | Переменные m_bnum и m_num какой тип имеют? | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 14:44)
| | Вообще изначально я их нигдле не объявлял - m_num и m_bnum это название.
То есть я на поле Edit Control щёлкнул правой кнопкой, выбрал Add Viriable катугорию выбрал value, а Viriable name указал m_num.
Тоже самое я сделал с Static Text.
Возможно это неправильно?
P.S. вообще поидее m_num, m_bnum у меня будут хранить только числовые значения. | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 14:51)
| | Они в заголовочном файл класса диалога, посмотрите в Cmy7Dlg.h - что перед ними стоит? Или когда добавляете при помощи диалогового окна, что в Variable Type помещаете? | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 14:57)
| | а там стоит CString его нельзя изменить почему-то...
public:
CString m_num;
public:
CString m_bnum;
public:
afx_msg void OnBnClickedButton1();
};
|
| |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 15:00)
| | Ошибки тогда точно не с этим связаны - у CString оператор = перегружен - смотрите пост выше. | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 15:07)
| | Какой именно пост? А где тогда рыть? | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 15:15)
| | Пост cheops (27.01.2007 в 15:06) |
| |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 15:07)
| | Попробуем так:
Создаю проект. Все компилируется.
Удаляю кнопку Cancel, кнопку OK переименовываю в "Выход". Все компилируется.
Статик "TODO: Place d..." меняю значение атрибута ID на IDC_bnum. Все компилируется.
Нажимаю на Add Viriable в статике. Категорию выбераю Value, имя прописываю m_bnum. Все компилируется.
Добавляю поле Edit Control, ID меняю на IDC_num. Нажимаю на Add Viriable в статике. Категорию выбераю Value, имя прописываю m_num. Все компилируется.
Добавляю кнопку. Добавляю код:
void Cmy9Dlg::OnBnClickedButton1()
{
m_bnum = m_num->Text;
UpdateData(FALSE);
}
|
Нажимаю компилировать, не компилируется... Пишет:
Generating Code...
Compiling...
my9.cpp
Generating Code...
Build log was saved at "file://e:\Documents and Settings\JIEXA\Мои документы\Visual Studio 2005\Projects\my9\my9\Debug\BuildLog.htm"
my9 - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
|
Я понимаю что я что-то нетак делаю, а что именно - не понимаю | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 15:29)
| | Нет в VC++ и MFC использовать строку
нельзя, используйте
Если возникает ошибка и с последней строкой сообщите текст ошибки. | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 15:37)
| | Ура ошибки нету, только статик не отображается и при нажатии на кнопку ничего не проиходит | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 15:43)
| | Замените
на
| |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 15:44)
| | Не помогло | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 15:46)
| | А если в обработчик кнопки добавить
Что-нибудь выводится? Или диалоговое окно MessageBox пустое? | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 15:49)
| | Пустое | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 15:50)
| | А при этом текст в IDC_num имеется? Попробуйте вот так вот написать
void Cmy9Dlg::OnBnClickedButton1()
{
UpdateData(TRUE);
m_bnum = m_num;
UpdateData(TRUE);
} |
Или обработайте событие CHANGE текстовой области, поместив туда метод UpdateData() - дело в том, что переменные в объекте диалогового окна обновляются по вызову этого метода и судя по всему у нас просто не заполняется переменная m_num. | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 15:54)
| | Если написать так:
void Cmy9Dlg::OnBnClickedButton1()
{
UpdateData(TRUE);
MessageBox(m_num);
m_bnum = m_num;
UpdateData(TRUE);
}
|
То в MessageBox текст содержится, а вот static - нет. | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 16:02)
| | Вот в такой обработчик выводит что-нибудь в MessageBox?
void Cmy9Dlg::OnBnClickedButton1()
{
UpdateData(TRUE);
m_bnum = m_num;
MessageBox(m_bnum);
UpdateData(TRUE);
} |
| |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 16:03)
| | Да | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 16:02)
| | Вот как у меня получилось
void Cmy9Dlg::OnBnClickedButton1()
{
UpdateData(TRUE);
m_bnum = m_num;
MessageBox(m_bnum);
UpdateData(FALSE);
} |
PS Короче TRUE в UpdateData помещает значение элементов управления в связанные переменные, а FALSE - наоборот обновляет элементы управления в соответствии со значениями связанных переменных. | |
|
|
|
|
|
|
|
для: cheops
(27.01.2007 в 16:12)
| | Ура! Спс! | |
|
|
|
|
|
|
|
для: JIEXA
(27.01.2007 в 16:17)
| | - | |
|
|
|