Создание элемента во время выполнения.
От: Arx Украина  
Дата: 14.09.05 04:08
Оценка:
Исправлено форматирование текста. — SchweinDeBurg

только недавно начал учить MFC. Есть вопрос:
пишу так:

CSatic st;  // в OnInitDialog
st.Create(str, WS_VISIBLE | WS_CHILD | WS_BORDER , CRect(p.x, p.y, point.x, point.y),this,2000); // OnLeftMouseDown

все работает, но как соэдать много статиков? т.е. щелчек мышью — статик? Соэдавать массив обьектов статиков? Но статиков может быть очень много...
LLiriK
[от модератора]
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 14.09.05 05:06
Оценка:
Убедительная просьба — использовать коды форматирования при вставке текстов программ.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий
Re: Создание элемента во время выполнения.
От: Tolanay Россия  
Дата: 14.09.05 05:29
Оценка: 3 (1)
Здравствуйте, Arx, Вы писали:


// В модуле stdafx.h пишешь:
#include <vector>

// В классе твоего диалога заводишь переменную.
std::vector<CStatic*> labels;

// В обработчике нажатия левой кнопкой мыши:
void CMyDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
 labels.push_back(new CStatic());
 CStatic *label = labels.back();
 label->Create(str, WS_VISIBLE | WS_CHILD | WS_BORDER , CRect(point.x, point.y, point.x+sizex, point.y + sizey),this, 10000 + labels.size());
// sizex, sizey - размеры метки
 CDialog::OnLButtonDown(nFlags, point);
}

CMyDlg::~CMyDlg()
{
 for(size_t i=0;i<labels.size();i++)
 {
  delete labels[i];
 }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.