Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[MFC, C++] Własna kontrolka na CFormView

Ostatnio zmodyfikowano 2013-07-20 22:40
Autor Wiadomość
DejaVu
Temat założony przez niniejszego użytkownika
[MFC, C++] Własna kontrolka na CFormView
» 2013-07-20 21:47:45
Generalnie rzecz biorąc szukałem sposobu, umożliwiającego umieszczenie kontrolki o rozbudowanej funkcjonalności w stosunku do domyślnej. Przykładowo: chciałbym napisać sobie implementację Virtual List Control (http://msdn.microsoft.com​/en-us/library​/ye4z8x58(v=vs.80).aspx). Chcę jednocześnie, aby na dialogu w zasobach była naniesiona kontrolka CListControl, ale żeby posiadała funkcjonalność rozszerzonej kontrolki, tj. CWlasnaListControl.

http:/​/computer-programming-forum.com​/82-mfc/7e2fd79faf243c0c.htm

W linku, który podałem powyżej jest napisane, że trzeba skorzystać z DDX_Control. Rozwiązanie zapewne jest poprawne, bo już kiedyś miałem z tym styczność i tak się to robiło, a posta z informacjami zamieszczam ku pamięci :)
P-88451
DejaVu
Temat założony przez niniejszego użytkownika
» 2013-07-20 22:40:15
Dorzucam jeszcze fragmenty informacji poskładane w całość jak to powinno wyglądać:
C/C++
class CVirtualListCtrl
    : public CListCtrl
{
    DECLARE_DYNCREATE( CVirtualListCtrl )
    DECLARE_MESSAGE_MAP()
    virtual void PreSubclassWindow()
    {
        __super::PreSubclassWindow();
        ModifyStyle( 0, LVS_OWNERDATA );
    }
    //TODO: http://msdn.microsoft.com/en-us/library/ye4z8x58(v=vs.80).aspx
};

IMPLEMENT_DYNCREATE( CVirtualListCtrl, CListCtrl )

BEGIN_MESSAGE_MAP( CVirtualListCtrl, CListCtrl )
END_MESSAGE_MAP()

class CJakisView
    : public CFormView
{
    DECLARE_DYNCREATE( CJakisView )
    DECLARE_MESSAGE_MAP()
    public
: CJakisView()
        : CFormView( IDD_JAKIS_DLG )
    {
    }
   
    virtual void DoDataExchange( CDataExchange * pDX )
    {
        __super::DoDataExchange( pDX );
        DDX_Control( pDX, IDC_LISTA_REKORDOW, m_ctrlListaRekordow );
    }
private:
    CVirtualListCtrl m_ctrlListaRekordow;
};

IMPLEMENT_DYNCREATE( CJakisView, CFormView )

BEGIN_MESSAGE_MAP( CJakisView, CFormView )
END_MESSAGE_MAP()

Kilka dodatkowych informacji: http://www.codeproject.com​/Articles/480​/Create-your-own-controls-the-art-of-subclassing
P-88456
« 1 »
  Strona 1 z 1