Конечная сетка невидима

Я пытаюсь использовать окончательную сетку из Code Project в диалоговом окне, но сетка невидима.

m_Plist.AttachGrid(this, IDC_CREDENTIALS) возвращает true, но заполнитель статического текста, в котором должна отображаться сетка, не виден, и сетка никогда не отображается.

Я использую образец кода отсюда http://www.codeproject.com/KB/MFC/UltimateGrid_Start.aspx?display=PrintAll&fid=452565&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2629959&fr=51#Using_the_Gridia< /а>

Я установил последнее обновление UltimateGrid72_Src_Update03.zip и использую VS2008 SP1.

Спасибо...

BOOL CCredentials::OnInitDialog()
{
    CDialog::OnInitDialog();

    MyCug m_PList;

m_Plist.AttachGrid(this, IDC_CREDENTIALS);

}

person Canacourse    schedule 22.06.2009    source источник


Ответы (3)


Я сам не использовал Ultimate Grid. Однако, глядя на код, который вы разместили, я вижу, что, вероятно, есть проблема: вы объявляете экземпляр «MyCug» в стеке, затем прикрепляете его, но этот экземпляр на основе стека будет уничтожен, как только Метод OnInitDialog() существует. Что вы должны сделать, это поместить объявление "MyCug m_PList;" как член класса диалога, чтобы время жизни объекта сетки было таким же, как время жизни диалога.

person DavidK    schedule 22.06.2009

Я не знаю, почему ваша сетка не отображается, нужно обратить внимание на то, правильно ли она загружается из шаблона диалогового окна и видна ли она? Вы можете использовать spy++ (инструмент, распространяемый вместе с Visual Studio), чтобы увидеть, какие окна на самом деле создаются в вашем диалоговом окне, где они находятся, а также установлены для них флаги и стили.

person 1800 INFORMATION    schedule 22.06.2009

После создания и прикрепления сетки вы добавляете строки и столбцы, как указано в примерах?

Иначе смотреть будет нечего.

Вам понадобится следующий код в MyCug::OnSetup():

void MyCug::OnSetup(){ 

    //*******Set the Rows and Columns
    SetNumberCols(10);
    SetNumberRows(10); 

} 

Это из учебника в версии 7.2. Я широко использовал UG и не имел проблем с VS2008. Но всю свою сетку я создаю сам, я не использую шаблоны диалогов.

person Eric H.    schedule 22.06.2009
comment
Хорошо, когда вы вызываете Create для своей сетки, вы помечаете ее ВИДИМОЙ? Вот еще код моего конструктора сетки MyCug::MyCug (int id, CWnd *parent) { CreateGrid(WS_CHILD|WS_VISIBLE, wp.rcNormalPosition, parent, id); } - person Eric H.; 22.06.2009