Go4Expert

Go4Expert (http://www.go4expert.com/)
-   MFC (http://www.go4expert.com/articles/mfc-tutorials/)
-   -   Handling notifications for dynamically created control. (http://www.go4expert.com/articles/handling-notifications-dynamically-t19689/)

d_arin100 7Oct2009 11:33

Handling notifications for dynamically created control.
 

Introduction



This article is about how we can create controls dynamically without using wizard and how to handle notification for dynamically created control. Here I will try to explain it by the notification BN_CLICKED for a button.

Working



Following three things we need to do for creating the button control dynamically.

1. Need to define a button ID in the “resource.h” file and that should be given a unique integer value.
Code: Cpp

#define IDC_BUTTON1    4652

2. Defining handler with correct signature. For this we need to add the button ID as argument to the Create() method. Suppose we are creating it in OnInitDialog().
Code: Cpp

BOOL CMyDialog::OnInitDialog()
{
    CDialog::OnInitDialog();
    /// “m_wndPushButton” is a member variable of CButton class.
    m_wndPushButton.Create (_T ("Push Button"),
        WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
        CRect(100, 100, 150, 150),
        this, IDC_BUTTON1);
    return TRUE;   
}

Here the “CMyDialog” is a dialog class and its declaration looks like...
Code: Cpp

class CMyDialog: public CDialog   
{     // Construction     
public:       
    CMyDialog (CWnd* pParent = NULL);     // standard constructor       
protected:       
    virtual void DoDataExchange(CDataExchange* pDX);         
    DECLARE_MESSAGE_MAP()   
};

Now we need to add handler function declaration of the event within the class declaration.
Code: Cpp

afx_msg void OnButton1Clicked();

And need to define the handler function in the corresponding source file (.cpp file).
Code: Cpp

void CMyDialog :: OnButton1Clicked()
{
/////////////
}

3. The last thing we need to add an entry to the message map of the class by specifying the ID of the control and the handler function of the notification.
Code: Cpp

BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
//{{AFX_MSG_MAP(CMyDialog)       
ON_BN_CLICKED(IDC_BUTTON1, OnButton1Clicked)       
//}}AFX_MSG_MAPEND_MESSAGE_MAP()
 


shabbir 1Nov2009 19:50

Re: Handling notifications for dynamically created control.
 
Nominate this article for Article of the month - Oct 2009

rasd123 11Nov2009 06:18

Re: Handling notifications for dynamically created control.
 
I like this's, cool!


All times are GMT +5.5. The time now is 08:25.