Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Создание кнопки


Автор: xTr1m 13.2.2006, 21:21
Вот я создаю проект при помощи Виззарда. Однодокументный, без архитектуры документ\вид. Попытался создать кнопку. В MianFrame'е создал переменную CButton *button, и вставил вот такой вот код
Код

button = new CButton();
button->Create("button", WS_VISIBLE, CRect(20,20,100,40), this, IDC_MYBUTTON);

в функцию OnCreate MainFrame'а. Кнопка создается, но smile с ней нчего нельзя сделать. Ни клик, ничего другого (даже если добавить обработчик события) Складывается такое ощущение, что кнопка просто "нарисована" на окне. Что делать smile

Автор: Coocky 14.2.2006, 12:37
Навскидку
Код

button->Create("button", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 
  CRect(20,20,100,40), this, IDC_MYBUTTON);


Автор: xTr1m 19.2.2006, 20:50
Прошу прщения за долгое молчание - болел.
Добавления стиля BS_PUSHBUTTON ничего не дало. У меня такой еще вопрос, а вот когда вы создаете большой проект, то основу вы создаете виззардом или все сами прописываете? (вы - т.е. опытные программисты =)) Вот я попытался основу взять с виззарда и сразу столкнулся с проблемами, а если начинать делать без виззарда, то ведь его уже нельзя будет использовать (у меня кнопка class wizzard становится серой) Как быть ?

Автор: kanSC 20.2.2006, 00:34
У CMainFrame есть свойство CChildView m_wndView. Поэтому создавать нужно именно на этом m_wndView.
Вот этот код создаёт кнопку:

Код

    CButton b;
    b.Create("button", 0, CRect(0, 0, 100, 100), (CWnd *) &m_wndView, IDC_MYBUTTON);
    b.ShowWindow(SW_SHOW);


Автор: xTr1m 20.2.2006, 08:18
Большое спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)