Kontrolka CListCtrl

0

Programuję w VisualC++ i MFC. Chcialbym do kontrolki CListCtrl dołożyc mozliwosc blokowania jednej kolumny (w trybie Report) tak zeby przy przewijaniu listy na boki ta kolumna byla zawsze widoczna.
Zrobilem juz tak ze w metodzie OnPaint() rysuje się ta kolumna ale niestety w ten sposob zawartość listy miga bo najpierw rysuje sie zawartosc oryginalna a potem ta stała kolumna. Gdyby nie to to byłoby ok.
Czy ktoś może wie jak to obejść?

0
	// ::On***
	// listview size: 493,208
	int w = lv1->GetColunmWidth(0);
	HRGN r1 = CreateRectRgn(0,0,493,208); // cale okno
	HRGN r2 = CreateRectRgn(1,22,w,207); // 0 kolumna listview
	CombineRgn(r1,r1,r2, RGN_XOR);
	SetWindowRgn(lv1->m_hwnd, r1, false);

Dodaj do tego jakieś malutkie okienko na którym będziesz rysował to co poprzednio rysowałeś na listview. Przesuń to okno w miejsce "zablokowanej" kolumny. Parent'em tego okna powinien być parent listview żeby region na niego nie działał

0

Dobry pomysł z tym dodatkowym okienkiem. Cos mi jednak nie wychodzi.
Tworzę okienko w nadpisanej klasie listy tak:

StCol->Create("STATIC", "", WS_CHILD | WS_BORDER | WS_OVERLAPPED, CRect(0, 0, 100, 100), this, 1234)

Parentem tego okna jest sama lista. Okno się tworzy i wyświetla ale jest jakby przezroczyste, tzn. nie zasłania listy tylko widać na nim to co wyświetla lista. Przy przewijaniu zawartości jest jeszcze gorzej.
Te regiony może w tym pomagają ale nie za bardzo rozumiem o co tam chodzi.

0

Ok juz to zrobilem i dziala tak jak trzeba. Dzieki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1