IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Помогите разобраться с VC6 (https://www.imho.ws/showthread.php?t=28923)

Tyler Derden 07.05.2003 03:52

Помогите разобраться с VC6
 
У меня создано 2 немодальных диалоговых окна. На 1-ом расположен ActiveX компонент - таблица MSFlexGrid. Мне из 2-го окна надо изменить кол-во сторк в таблице(и вообще управлять ею). Но если прямо обратиться к ф-иям объекта класса CMSFlexGrid выдается ошибка:
Debug Assertion Failed!:kill:

Если же изменяешь Static Text, этой ошибки нет, но текст не изменяется :(.
Так что не так и что же делать!?!:idontnow: :

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-го окна

alexey_ma 08.05.2003 09:56

Не понятно нечего.
Если ты что-то собираешься делать в 1-ом диалоге из 2-го тебе нужно получить указатель на уже существующий обьект 1-диалога, а ты, вроде как, пытаешься создать новый экземпляр, который к первому никакого отношения не имеет.
Кроме того :
>>MDlg = new CTableDlg();
Этого мало. Нужно еще показать диалог что-то типа:
MDlg->ShowWindow(SW_SHOW);
а то ты пытаешься что-то сделать с гридом для которого еще окно не создано, отсюда повидимому и "Debug Assertion Failed!"
И еще :
>>MDlg->m_text="HELLO!";//А здесь - нет
>>//m_text связан с Static Text 1-го окна
Этого тоже мало,чтобы изменения отобразить на окне - не забывай делать UpdateData(FALSE);

Zeev 17.05.2003 00:32

Esli ty sozdaesh nemodalnyj dialog to nuzno vyzuvat' function Create.

SapeR 18.05.2003 09:32

Цитата:

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-го окна
При чём здесь NEW ?!
Для управления елементов одного окна из другово делаем

1) Вносим в код окна 2 инклуд на код окна 1
Код:

//MyWnd2.cpp
#include "MyWnd1.h"

2) Передаём поинтер окна 1 окну 2
Код:

MyWnd2.m_ptrTableDld = *MyWnd1;
3) Через поинтер на окно ловим поинтер на контроль
Код:

CMSFlexGrid *mG = (CMSFlexGrid *)&(m_ptrTableDld->m_grid);
или
CMSFlexGrid *mG = (CMSFlexGrid *)m_ptrTableDld->GetDlgItem(IDC_TABLE...)

Теперь можно делать
Код:

mG->SetTextMatrix(0,1,"Name");


Часовой пояс GMT +4, время: 02:42.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.