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

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

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

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

Создание документа в MFC и Win32
Как создать на с++ документы из программы если нужно написать программу MFC...

Создание табуляции, MFC в диалоговом окне
Помогите разобратся плиз! вот собственно код,нужно создать чтобы считало по...

Создание форм в visual studio
Здравствуйте, установил себе visual studio 2013 пробную и не найду меню где...

Динамическое создание матрицы
Здравствуйте.Дано матрица 5х5 , найти минимальный и максимальный элемент....

Динамическое создание файлов.
Очень нужен пример такой на С/С++ (поф,ибо у меня DEV-C++).Кто поможет ?:( ...

6
Nick Alte
Эксперт С++
1647 / 1019 / 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
Эксперт С++
1647 / 1019 / 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
Каратель
Эксперт С++
6568 / 3989 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2013, 15:14

Динамическое создание функций
всем доброго времени суток. меня собственно интересует такой вопрос можно ли в...

Динамическое создание массива
Помогите пожалуйста. Пытаюсь создать массив char* выделяя под него память...

Динамическое создание структуры
У меня есть h файл в котором описаны структуры. Можно ли его подключить к...


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

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

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