DIALOG BASED APPLICATION | CREATE DIALOG BASED APPLICATION WITH VARIOUS CONTROL USING VC++

Friday, May 28, 2010

OBJECTIVE:
To create a dialog based application with various control using VC++.
PROCEDURE:
1. Run the MFC AppWizard(exe) to generate dialog
2. In step1 dialog based application select the default settings and press OK button.
3. In resource view click on the dialog and select the IDD_DIALOG1
4. Design the dialog using the dialog editor
5. Use edit controls to get the name, age combo boxes for date for birth, edit box to read the parents name, monthly income, list box, to list the education
6. Right click on the monthly income select class wizard->member variables
7. In edit4 (monthly income) select the variable namaes m_sal and select the data type as int and click OK.
8. In date of birth using combo boxes for day ,month, year
9. Right click on the list box select properties and give the ID name as IDC_EDU
10. Radio button yes, no to check the transfer certificate availability
11. Radio button yes, no to check the birth certificate availability
12. One command button for selection and another to quit the project
13. In dialogdlg.h declare 2 variables
Public:
CString SelString1;
CListBox *m_fath_edu;
14. In the Dialog Dlg.cpp add the following code OnInit Dialog function
CListBox *PLB=(CListBox *)GetDlgItem(IDC_EDU);
PLB->InsertString(-1,"Graduate");
PLB->InsertString(-1,"Post Graduate");
PLB->InsertString(-1,"High School");
PLB->InsertString(-1,"Professional");
PLB->InsertString(-1,"Illiterate");
15. Using the class wizard map the object Id as IDC_EDU with the message LBN_selchange notification handler is created with this OnSelChangeEdu()
void CDialogDlg::OnSelchangeEdu()
{
// TODO: Add your control notification handler code here
int SelIndex1;
m_fath_edu=(CListBox*)GetDlgItem(IDC_EDU);
SelIndex1=m_fath_edu->GetCurSel();
m_fath_edu->GetText(SelIndex1,SelString1);
}
16. Using the class wizard map the object Id as IDC_BUTTON1 with the message BN_CLICKED a notification handler is created with this OnButton1()
void CDialogDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(true);
if((m_sal*12>10000)&&(SelString1!="Illiterate"))
MessageBox("Student Selected");
else
MessageBox("Student not selected");
}
17. Using the class wizard map the object Id as IDC_BUTTON1 with the message BN_ CLICKED a notification handleris created with the OnButton2()
void CDialogDlg::OnButton2()
{
PostQuitMessage(0);
}
18. Run and test the application
PROGRAM:
SOURCE FILES:
Dialogdlg.cpp:

 

#include "stdafx.h"
#include "dialog.h"
#include "dialogDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{ CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialogDlg dialog
CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDialogDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialogDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CDialogDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDialogDlg, CDialog)
//{{AFX_MSG_MAP(CDialogDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_LBN_SELCHANGE(IDC_EDU, OnSelchangeEdu)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialogDlg message handlers
BOOL CDialogDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CListBox *PLB=(CListBox *)GetDlgItem(IDC_EDU);
PLB->InsertString(-1,"Graduate");
PLB->InsertString(-1,"Post Graduate");
PLB->InsertString(-1,"High School");
PLB->InsertString(-1,"Professional");
PLB->InsertString(-1,"Illiterate");
// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < psysmenu =" GetSystemMenu(FALSE);">AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}
void CDialogDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CDialogDlg::OnPaint()
{
if (IsIconic())
{ CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CDialogDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CDialogDlg::OnSelchangeEdu()
{
// TODO: Add your control notification handler code here
int SelIndex1;
m_fath_edu=(CListBox*)GetDlgItem(IDC_EDU);
SelIndex1=m_fath_edu->GetCurSel();
m_fath_edu->GetText(SelIndex1,SelString1);
}
void CDialogDlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(true);
if((m_sal*12>10000)&&(SelString1!="Illiterate"))
MessageBox("Student Selected");
else
MessageBox("Student not selected");

}
void CDialogDlg::OnButton2()
{
// TODO: Add your control notification handler code here
PostQuitMessage(0);
}
Header Files:
DialogDlg.h:
#if !defined(AFX_DIALOGDLG_H__013D32FD_7256_4F10_88B6_12F86426ED57__INCLUDED_)
#define AFX_DIALOGDLG_H__013D32FD_7256_4F10_88B6_12F86426ED57__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CDialogDlg dialog
class CDialogDlg : public CDialog
{
// Construction
public:
CDialogDlg(CWnd* pParent = NULL); // standard constructor
CString SelString1;
CListBox *m_fath_edu;
// Dialog Data
//{{AFX_DATA(CDialogDlg)
enum { IDD = IDD_DIALOG_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDialogDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
protected:
HICON m_hIcon;
// Generated message map functions //{{AFX_MSG(CDialogDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnSelchangeEdu();
afx_msg void OnButton1();
afx_msg void OnButton2();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DIALOGDLG_H__013D32FD_7256_4F10_88B6_12F86426ED57__INCLUDED_)


0 comments:

Post a Comment