Доступ к CListCtrl в MMC Snap In
От: Max Komarov  
Дата: 12.04.05 19:22
Оценка:
Коллеги, просвятите чайника плз...
Пишу расширение snap-in на ATL+MFC.
Визардом сгенерен PropertyPage и диалог как ресурс. Добавляю в ресурс диалога ListControl, пытаюсь до него достучаться и обламываюсь


class CReplacementFilterSnapInPage : public CSnapInPropertyPageImpl<CReplacementFilterSnapInPage>
{
..

LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
..
CListView* pListView = (CListView*) GetDlgItem(IDC_REPLACEMENT_LIST);
CListCtrl& list = pListView->GetListCtrl();
list.InsertColumn(1, "Destination", LVCFMT_LEFT, 80);
//Здесь срабатывает ассерт...
..
}
..
}
Re: Доступ к CListCtrl в MMC Snap In
От: L2-Max Украина  
Дата: 13.04.05 07:12
Оценка:
Здравствуйте, Max Komarov, Вы писали:

MK>Коллеги, просвятите чайника плз...

MK>Пишу расширение snap-in на ATL+MFC.
MK>Визардом сгенерен PropertyPage и диалог как ресурс. Добавляю в ресурс диалога ListControl, пытаюсь до него достучаться и обламываюсь


MK>class CReplacementFilterSnapInPage : public CSnapInPropertyPageImpl<CReplacementFilterSnapInPage>

MK>{
MK>..

MK>LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)

MK>{
MK>..
MK>CListView* pListView = (CListView*) GetDlgItem(IDC_REPLACEMENT_LIST);
MK>CListCtrl& list = pListView->GetListCtrl();
MK>list.InsertColumn(1, "Destination", LVCFMT_LEFT, 80);
MK>//Здесь срабатывает ассерт...
MK>..
MK>}
MK>..
MK>}

Наверно срабатывает потому что у тебя еще нет ниодного столбца, а ты в 1ю позицию его вставляешь, такаяже трабла с комбобоксом.
L2-Max
Re[2]: Доступ к CListCtrl в MMC Snap In
От: Max Komarov  
Дата: 13.04.05 08:23
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Здравствуйте, Max Komarov, Вы писали:


MK>>Коллеги, просвятите чайника плз...

MK>>Пишу расширение snap-in на ATL+MFC.
MK>>Визардом сгенерен PropertyPage и диалог как ресурс. Добавляю в ресурс диалога ListControl, пытаюсь до него достучаться и обламываюсь


MK>>class CReplacementFilterSnapInPage : public CSnapInPropertyPageImpl<CReplacementFilterSnapInPage>

MK>>{
MK>>..

MK>>LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)

MK>>{
MK>>..
MK>>CListView* pListView = (CListView*) GetDlgItem(IDC_REPLACEMENT_LIST);
MK>>CListCtrl& list = pListView->GetListCtrl();
MK>>list.InsertColumn(1, "Destination", LVCFMT_LEFT, 80);
MK>>//Здесь срабатывает ассерт...
MK>>..
MK>>}
MK>>..
MK>>}

LM>Наверно срабатывает потому что у тебя еще нет ниодного столбца, а ты в 1ю позицию его вставляешь, такаяже трабла с комбобоксом.


Увы. Это без разницы. С нулем таже история.
Я подозреваю, что это как-то связано с оконным контекстом контрола. Я плохо понимаю суть сишных сущностей, но когда в дебаггере этот бардак на InsertColumn прерывается и в this я вижу {CListCtrl hWnd=???} что-то мне говорит что здесь что-то не так, но что...
Re: Доступ к CListCtrl в MMC Snap In
От: Max Komarov  
Дата: 13.04.05 09:54
Оценка:
Здравствуйте, Max Komarov, Вы писали:

MK>Коллеги, просвятите чайника плз...

MK>Пишу расширение snap-in на ATL+MFC.
MK>Визардом сгенерен PropertyPage и диалог как ресурс. Добавляю в ресурс диалога ListControl, пытаюсь до него достучаться и обламываюсь


MK>class CReplacementFilterSnapInPage : public CSnapInPropertyPageImpl<CReplacementFilterSnapInPage>

MK>{
MK>..

MK>LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)

MK>{
MK>..
MK>CListView* pListView = (CListView*) GetDlgItem(IDC_REPLACEMENT_LIST);
MK>CListCtrl& list = pListView->GetListCtrl();
MK>list.InsertColumn(1, "Destination", LVCFMT_LEFT, 80);
MK>//Здесь срабатывает ассерт...
MK>..
MK>}
MK>..
MK>}

Идем дальше. Провел экперимент...

так работает:
SetDlgItemText(IDC_BTN_ADD, _T("Test"));

а так не работает:
CButton* pButton = (CButton*) GetDlgItem (IDC_BTN_ADD);
pButton->SetWindowText("Test");

неужели никто не может подсказать, а, люди?
Re: У ListView поставлен стиль LVS_REPORT ?
От: BK  
Дата: 13.04.05 09:55
Оценка:
Здравствуйте, Max Komarov, Вы писали:

MK>Коллеги, просвятите чайника плз...

MK>Пишу расширение snap-in на ATL+MFC.
MK>Визардом сгенерен PropertyPage и диалог как ресурс. Добавляю в ресурс диалога ListControl, пытаюсь до него достучаться и обламываюсь :(


MK>class CReplacementFilterSnapInPage : public CSnapInPropertyPageImpl<CReplacementFilterSnapInPage>

MK>{
MK>..

MK>LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)

MK>{
MK>..
MK>CListView* pListView = (CListView*) GetDlgItem(IDC_REPLACEMENT_LIST);
MK>CListCtrl& list = pListView->GetListCtrl();
MK>list.InsertColumn(1, "Destination", LVCFMT_LEFT, 80);
MK>//Здесь срабатывает ассерт...
MK>..
MK>}
MK>..
MK>}
Re[2]: Да. Это имеет значение?
От: Max Komarov  
Дата: 13.04.05 09:56
Оценка:
Здравствуйте, BK, Вы писали:

BK>Здравствуйте, Max Komarov, Вы писали:


MK>>Коллеги, просвятите чайника плз...

MK>>Пишу расширение snap-in на ATL+MFC.
MK>>Визардом сгенерен PropertyPage и диалог как ресурс. Добавляю в ресурс диалога ListControl, пытаюсь до него достучаться и обламываюсь


MK>>class CReplacementFilterSnapInPage : public CSnapInPropertyPageImpl<CReplacementFilterSnapInPage>

MK>>{
MK>>..

MK>>LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)

MK>>{
MK>>..
MK>>CListView* pListView = (CListView*) GetDlgItem(IDC_REPLACEMENT_LIST);
MK>>CListCtrl& list = pListView->GetListCtrl();
MK>>list.InsertColumn(1, "Destination", LVCFMT_LEFT, 80);
MK>>//Здесь срабатывает ассерт...
MK>>..
MK>>}
MK>>..
MK>>}
Re: Ларчик открылся просто.
От: Max Komarov  
Дата: 13.04.05 10:17
Оценка:
Здравствуйте, Max Komarov, Вы писали:

MK>Коллеги, просвятите чайника плз...

MK>Пишу расширение snap-in на ATL+MFC.
MK>Визардом сгенерен PropertyPage и диалог как ресурс. Добавляю в ресурс диалога ListControl, пытаюсь до него достучаться и обламываюсь


MK>class CReplacementFilterSnapInPage : public CSnapInPropertyPageImpl<CReplacementFilterSnapInPage>

MK>{
MK>..

MK>LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)

MK>{
MK>..
MK>CListView* pListView = (CListView*) GetDlgItem(IDC_REPLACEMENT_LIST);
MK>CListCtrl& list = pListView->GetListCtrl();
MK>list.InsertColumn(1, "Destination", LVCFMT_LEFT, 80);
MK>//Здесь срабатывает ассерт...
MK>..

То есть вот так. Не знаю, насколько это правльно, но работает...

HWND hwnd=GetDlgItem(IDC_REPLACEMENT_LIST);
CListView* pListView = (CListView*)CWnd::FromHandle(hwnd);
CListCtrl& list = pListView->GetListCtrl();
list.InsertColumn(0, "Destination Set", LVCFMT_LEFT, 80);
Re[2]: Ларчик открылся просто.
От: L2-Max Украина  
Дата: 13.04.05 21:36
Оценка:
Здравствуйте, Max Komarov, Вы писали:

эээ а можно поинтересоваться, а list точно report стиля ???
L2-Max
Re[3]: Совершенно точно.
От: Max Komarov  
Дата: 14.04.05 11:10
Оценка:
Здравствуйте, L2-Max, Вы писали:

LM>Здравствуйте, Max Komarov, Вы писали:


LM>эээ а можно поинтересоваться, а list точно report стиля ???
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.