Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 84
1

Динамическое создание форм (Не MFC)

04.08.2013, 11:32. Просмотров 961. Ответов 6
Метки нет (Все метки)

Допустим есть созданная форма в ресурснике, а в ней есть поле для ввода(Edit Control) и даже кнопка(Button)!
Подскажите пожалуйста, как заставить Button создать еще одно поле для ввода?
ЗЫ:Для тех, кто любит делать умный вид и спрашивать "А на каком языке?", скажу сразу(хоть и так вопрос лежит в разделе С++) на C++!
ЗЫЫ:Не MFC.
ЗЗЫЫ: Заранее благодарен за ответы.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2013, 11:32
Ответы с готовыми решениями:

Динамическое создание кнопки в С++ MFC
Здравствуйте. В моей программе нужно создать кнопку, только если срабатывает одно условие. Из-за...

Динамическое создание форм
Здравствуйте, хочу создать динамически чекбокс с проверкой, но почему-то(Скорее всего неправильно...

Динамическое создание форм
Всем привет. Если я создаю форму таким образом TForm1* Form1 = new TForm1(Application); я...

Динамическое создание подчиненных форм
Доброго времени суток, Посоветуйте хорошую книгу, дабы разобраться с классами в Access. Стоит...

Map и динамическое создание форм
Всем привет. Никак не могу решить задачу на главной форме есть StringGrid в который...

6
Nick Alte
Эксперт С++
1655 / 1027 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.08.2013, 11:47 2
Есть два варианта. Можно сделать второе поле заранее, спрятать его (Visible = False), а при нажатии кнопки сделать видимым (ShowWindow). Либо можно по-настоящему создать это поле при обработке нажатия на кнопку функцией CreateWindow.
1
Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 84
04.08.2013, 12:03  [ТС] 3
Цитата Сообщение от Nick Alte Посмотреть сообщение
Есть два варианта. Можно сделать второе поле заранее, спрятать его (Visible = False), а при нажатии кнопки сделать видимым (ShowWindow). Либо можно по-настоящему создать это поле при обработке нажатия на кнопку функцией CreateWindow.
К сожалению первый вариант не подходит, ибо нужно создать много кнопок, и конструктор не разрешает создать форму меньше. Я понял, что вы ничего не поняли, для этого объясняю: есть окно 400х300, нужно при нажатии на кнопку создать еще одну, на 20px ниже, чем предыдущая, и так далее одна кнопка должна создавать "столбик" кнопок. Второй способ пробовал, но к сожалению он не работал.
Попытки:
C++
1
2
3
4
        if(wParam == IDC_BUTTON2)
        {
            DWORD SecondButton = CreateWindow("button", "SecondButton", WS_VISIBLE, 20, 300, 25, 100, m_hwnd, (HMENU)1001, NULL, (LPVOID)lParam);
        }
.
0
Nick Alte
Эксперт С++
1655 / 1027 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.08.2013, 12:07 4
Цитата Сообщение от Misterkat Посмотреть сообщение
Я понял, что вы ничего не поняли
Поди пойми при таких сумбурных "объяснениях". Какая связь между тем, что надо создать много кнопок и "конструктор не разрешает создать форму меньше" - вообще загадка. Ну и разумеется, работают оба способа, было бы желание.
1
Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 84
04.08.2013, 14:19  [ТС] 5
Цитата Сообщение от Nick Alte Посмотреть сообщение
Поди пойми при таких сумбурных "объяснениях".
Согласен, что хуже объяснить может только пьяный.
Цитата Сообщение от Nick Alte Посмотреть сообщение
Какая связь между тем, что надо создать много кнопок и "конструктор не разрешает создать форму меньше"
Если попробовать создать кнопку с координатами 25х200, а окно попытаться "перетащить" в размер *х199, то в результате окно не станет меньше, ибо там кнопка( SetWindowPos - аналогично)!
Ладно, попытаюсь еще раз объяснить суть:
Есть окно: 400х300, допустим есть кнопка, пока вроде все ясно... При нажатии на кнопку должна появится еще одна, но с координатами предыдущей(первой)+25 px по оси Y, при следующем нажатии первой кнопки должна появиться еще одна с координатами предыдущей(второй)+25 px по оси Y и т.д.
Не работоспособность "скрывания" заключается в том, что кнопок может быть бесконечное(в разумном пределе) количество, а размер окна не должен увеличиваться(не поверите, но даже скролл есть ).

Добавлено через 1 час 52 минуты
Нуу посоны, никто помочь не может что ли?
0
Jupiter
Каратель
Эксперт С++
6579 / 4000 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.08.2013, 14:40 6
Цитата Сообщение от Misterkat Посмотреть сообщение
Второй способ пробовал, но к сожалению он не работал.
"не работал" это как? где код?
1
Misterkat
7 / 7 / 0
Регистрация: 16.11.2012
Сообщений: 84
04.08.2013, 15:14  [ТС] 7
Цитата Сообщение от Jupiter Посмотреть сообщение
где код?
C++
1
2
3
4
5
6
    case WM_COMMAND:
        if(wParam == IDC_BUTTON2)
        {
            HWND SecondButton = CreateWindow("button", "SecondButton", WS_VISIBLE, 20, 300, 25, 100, m_hwnd, (HMENU)1001, NULL, (LPVOID)lParam);
        }
    break;
ЗЫ:Есть подозрения на hInstance = NULL, но не понимаю откуда его взять, если диалог создан в ресурснике...

Добавлено через 27 минут
hInstance получил, но все равно ничего не работает.
C++
1
2
3
4
5
6
7
    case WM_COMMAND:
        if(wParam == IDC_BUTTON2)
        {
            HINSTANCE hInstance = (HINSTANCE)GetWindowLong(m_hwnd, GWL_HINSTANCE);
            HWND SecondButton = CreateWindow("button", "SecondButton", WS_VISIBLE, 20, 300, 25, 100, m_hwnd, (HMENU)1001, hInstance, (LPVOID)lParam);
        }
    break;
0
04.08.2013, 15:14
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2013, 15:14

Динамическое создание n -ного количества форм
Прошу прощения, если уже есть такая тема, но ничего путного не нашел. Пишу что-то вроде аськи...

Динамическое создание неизвестного числа форм
простите за столь сырой вопрос, но все же: как программно создавать новые формы, так чтобы по...

Динамическое создание контролла на одной из нескольких форм
Есть 2 формы и отдельно созданный класс. В первой форме есть массив int, который передается в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.