| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
У меня создано 2 немодальных диалоговых окна. На 1-ом расположен ActiveX компонент - таблица MSFlexGrid. Мне из 2-го окна надо изменить кол-во сторк в таблице(и вообще управлять ею). Но если прямо обратиться к ф-иям объекта класса CMSFlexGrid выдается ошибка:
Debug Assertion Failed! ![]() Если же изменяешь Static Text, этой ошибки нет, но текст не изменяется .Так что не так и что же делать!?! :CTableDlg* MDlg; //CTableDlg - 1-е окно MDlg = new CTableDlg(); MDlg->m_grid.SetTextMatrix(0,1,"Name"); //Здесь - глючит // m_grid экземпляр класса CMSFlexGrid MDlg->m_text="HELLO!";//А здесь - нет //m_text связан с Static Text 1-го окна |
|
|
# 2 |
|
Member
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245
![]() ![]() |
Не понятно нечего.
Если ты что-то собираешься делать в 1-ом диалоге из 2-го тебе нужно получить указатель на уже существующий обьект 1-диалога, а ты, вроде как, пытаешься создать новый экземпляр, который к первому никакого отношения не имеет. Кроме того : >>MDlg = new CTableDlg(); Этого мало. Нужно еще показать диалог что-то типа: MDlg->ShowWindow(SW_SHOW); а то ты пытаешься что-то сделать с гридом для которого еще окно не создано, отсюда повидимому и "Debug Assertion Failed!" И еще : >>MDlg->m_text="HELLO!";//А здесь - нет >>//m_text связан с Static Text 1-го окна Этого тоже мало,чтобы изменения отобразить на окне - не забывай делать UpdateData(FALSE);
__________________
Best Regards |
|
|
|
|
# 4 | |
|
::VIP::
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310
![]() ![]() ![]() ![]() ![]() |
Цитата:
Для управления елементов одного окна из другово делаем 1) Вносим в код окна 2 инклуд на код окна 1 Код:
//MyWnd2.cpp #include "MyWnd1.h" Код:
MyWnd2.m_ptrTableDld = *MyWnd1; Код:
CMSFlexGrid *mG = (CMSFlexGrid *)&(m_ptrTableDld->m_grid); или CMSFlexGrid *mG = (CMSFlexGrid *)m_ptrTableDld->GetDlgItem(IDC_TABLE...) Код:
mG->SetTextMatrix(0,1,"Name"); |
|
|
|