Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как добавить компонет в дочернее окно в MDI-программе

54K
28 июня 2010 года
TitanX
12 / / 11.06.2010
Мне нужно разместить в дочернем окне разные компоненты (Static, Edit ...). Пробовал их создавать в конструкторе дочернего окна, но ничего не выходит.
14
29 июня 2010 года
Phodopus
3.3K / / 19.06.2008
А что за дочернее окно? CView?
54K
29 июня 2010 года
TitanX
12 / / 11.06.2010
Дочернее окно класа CChildFrame каторое создается автоматически в MDI-программе. Пример конструктора (Static не создается ):

// CChildFrame

IMPLEMENT_DYNCREATE(CChildFrame, CMDIChildWnd)

BEGIN_MESSAGE_MAP(CChildFrame, CMDIChildWnd)
END_MESSAGE_MAP()


// CChildFrame construction/destruction

CChildFrame::CChildFrame()
{
// TODO: add member initialization code here

Static.Create((CString)"nnn",WS_CHILD|WS_VISIBLE,
CRect(20,20,10,40),this,IDC_STATIC_LINK1);
if (!Static)
MessageBox((CString)"ERROR",(CString)"ERROR",MB_OKCANCEL);
14
29 июня 2010 года
Phodopus
3.3K / / 19.06.2008
Создайте обработчик WM_CREATE для CChildFrame, туда и пишите создание контролов.
[COLOR="Gray"]ПыСы. Не помню иерархии для MDI но разве есть смысл создавать контролы на ChildFrame?..[/COLOR]
54K
29 июня 2010 года
TitanX
12 / / 11.06.2010
В обработчике компонент создается, но в дочернем окне не показывается.
Можно ли хоть как-то его добавить к дочернему окну?
14
29 июня 2010 года
Phodopus
3.3K / / 19.06.2008
Цитата: TitanX
В обработчике компонент создается, но в дочернем окне не показывается.


В Spy++ смотрели?
[COLOR="Gray"]Ты компонент видишь? Нет. А на самом деле он есть... (с)[/COLOR]

2.2K
29 июня 2010 года
REFOT
181 / / 08.04.2005
CRect(20,20,10,40); - а что за прямоугольник такой? Получается, что правая сторона находится левее левой :)

А так всё отлично добавляется:

Код:
//добавился
int CMy1234View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   if (CView::OnCreate(lpCreateStruct) == -1)
      return -1;
   Static.Create(_T("11111"), WS_CHILD|WS_VISIBLE, CRect(0,0,100,20), this);
   return 0;
}

.....

//и так добавился
int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   if (CMDIChildWndEx::OnCreate(lpCreateStruct) == -1)
      return -1;
   Static.Create(_T("11111"), WS_CHILD|WS_VISIBLE, CRect(0,0,100,20), this);   
   return 0;
}
54K
30 июня 2010 года
TitanX
12 / / 11.06.2010
Благодарю за помощь. Сделал опечатку, а компонент реально создается.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог