Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамическое создание элементов управления 
V
    Опции темы
kiler4747
  Дата 13.9.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Подскажите как создавать динамически элементы управления. Точнее у меня есть класс наследуемый от CWnd, в классе есть указатель на CButton. Как создавать этот элемент управления на форме я разобрался, но сообщения при нажатии на кнопку не доходят до моего класса.
frame.h
Код

#pragma once
#define IDC_BUTTON5 5000
// frame
class frame : public CWnd
{
    DECLARE_DYNAMIC(frame)
public:
    frame(CWnd * cwnd);
    virtual ~frame();
protected:
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnBnClickedButton1();
private:
    CButton Button1;
};


frame.cpp
Код

// frame.cpp : implementation file
//
#include "stdafx.h"
#include "Sync_File.h"
#include "frame.h"
// frame
BEGIN_MESSAGE_MAP(frame, CWnd)
    ON_BN_CLICKED(IDC_BUTTON5, &frame::OnBnClickedButton1)
END_MESSAGE_MAP()
IMPLEMENT_DYNAMIC(frame, CWnd)
frame::frame( CWnd * cwnd)
{
    CRect rect(0,0, 300,300);
    Button1.Create(L"dhfasd", WS_BORDER | WS_VISIBLE,  rect, cwnd, IDC_BUTTON5);
}
frame::~frame()
{
}
void frame::OnBnClickedButton1()
{
}


Может нужно зарегестрировать этот класс в представлении при помощи DDX_Control ? 
PM MAIL Skype   Вверх
spyswamp
Дата 13.9.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: нет
Всего: 7



Код

Button1.Create(L"dhfasd", WS_BORDER | WS_VISIBLE,  rect, cwnd, IDC_BUTTON5);


Вместо cwnd передавай this. Иначе все сообщения будут уходить именно в этот cwnd. Кто папа, тот и рулит. Got it? smile


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
kiler4747
Дата 13.9.2011, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



А как показать этот класс на форме?
PM MAIL Skype   Вверх
kiler4747
Дата 13.9.2011, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



С этим разобрался.
Как генерировать ID для элементов управления?
PM MAIL Skype   Вверх
spyswamp
Дата 14.9.2011, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: нет
Всего: 7



kiler4747, самому задавать. В твоем примере IDC_BUTTON5 - это же ID кнопки. smile С остальными так же.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
kiler4747
Дата 14.9.2011, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



Хорошая идея, но я собираюсь создавать этот класс неизвестное количество раз, поэтому сразу задать id неполучится
PM MAIL Skype   Вверх
Earnest
Дата 14.9.2011, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Тогда задай начальный ID + определи максимальный пул (чтобы туда никакой элемент из этого окна больше не влез). И генерируй по принципу ID+i.
Кроме того, при таких потребностях (большое число кнопок на одном окне), неплохо бы подумать о других элементах управления - тулбаре или таблице. А то страсть какая-то - 100500 кнопок в окне... брр...


--------------------
...
PM   Вверх
kiler4747
Дата 14.9.2011, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.2.2011

Репутация: нет
Всего: нет



 smile 
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.