Professional Documents
Culture Documents
: 1 NAME:
DATE: REG NO:
ALGORITHM:
1. Start the program and open the Microsoft VB in standard exe
2. Drag and drop data control in the form
3. Create a database in MS Access
4. Write the coding to declare database and recordset
5. compile and run the program
PROGRAM:
Dim db As Database
Dim rs As Recordset
RESULT:
Thus an application that connects with the database has been executed successful
Ex. No.: 1 NAME:
DATE: REG NO:
PROGRAM:
#include <windows.h>
const char g_szClassName[] = "myWindowClass";
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
lParam)
{HDC hdc;
PAINTSTRUCT ps;
POINT parray[10]={10,70,50,70,50,10,90,10,90,50,30,50,30,90,70,90,70,30,10,30};
switch(msg)
{
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
SelectObject(hdc,GetStockObject(GRAY_BRUSH));
SetPolyFillMode(hdc,ALTERNATE);
Polygon(hdc,parray,10);//first parameter handle to device context,second CONST POINT
//*lpPoints pointer to polygon's vertices, third count of polygon's vertices
EndPaint(hwnd,&ps);
return 0;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"Filled Area",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{TranslateMessage(&Msg);
DispatchMessage(&Msg);
} return Msg.wParam; }
OUTPUT
RESULT:
Thus the program for SDI has been tested and executed successfully .
Ex. No.: 2 NAME:
DATE: REG NO:
Implementation of Building Calculator using PWCT
Aim
To build simple calculator using PWCT Programming without coding techniques.
Implementation Steps:
Form Designer
Goal Desginer - Steps Tree
Output:
Result:
ALGORITHM:
e Our application still needs to provide communication between the edit and the slider
controls. Access the ClassWizard and
associate WM_HSCROLLto CExoSliderDlg (Did I tell you that you could have made
your slider control vertical by changing its position in the Properties dialog so in that
case you could be choosing WM_VSCROLL in ClassWizard?).
Implement the OnHScroll() function as follows:
if(nSBCode == SB_THUMBPOSITION) {
m_SliderValue.Format("%ld", nPos);
UpdateData(false);
}
else {
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
OUTPUT
RESULT:
AIM :
To design a document view structure to print a text with popup menu.
ALGORITHM:
PROGRAM:
Class view :
/*docviewDoc.h*/
#if !
defined(AFX_DOCVIEWDOC_H__E195BA16_9682_4B30_80B6_551437792826__INCLUD
ED_)
#define
AFX_DOCVIEWDOC_H__E195BA16_9682_4B30_80B6_551437792826__INCLUDED_
// Attributes
public:
CString m_str;
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDocviewDoc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CDocviewDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !
defined(AFX_DOCVIEWDOC_H__E195BA16_9682_4B30_80B6_551437792826__INCLUD
ED_)
/* docviewView.h */
#if !
defined(AFX_DOCVIEWVIEW_H__ED57B075_5437_4545_9A70_C58D68EC4804__INCLU
DED_)
#define
AFX_DOCVIEWVIEW_H__ED57B075_5437_4545_9A70_C58D68EC4804__INCLUDED_
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CDocviewView)
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CDocviewView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !
defined(AFX_DOCVIEWVIEW_H__ED57B075_5437_4545_9A70_C58D68EC4804__INCLU
DED_)
File view
#include "stdafx.h"
#include "docview.h"
#include "docviewDoc.h"
#include "docviewView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// CDocviewView
IMPLEMENT_DYNCREATE(CDocviewView, CView)
BEGIN_MESSAGE_MAP(CDocviewView, CView)
//{{AFX_MSG_MAP(CDocviewView)
ON_COMMAND(ID_COLOR_GREEN, OnColorGreen)
ON_COMMAND(ID_COLOR_RED, OnColorRed)
ON_COMMAND(ID_TRANSFER_GET, OnTransferGet)
ON_COMMAND(ID_TRANSFER_STORE, OnTransferStore)
ON_WM_CONTEXTMENU()
ON_WM_CREATE()
ON_WM_SIZE()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
// CDocviewView construction/destruction
CDocviewView::CDocviewView()
{
// TODO: add construction code here
}
CDocviewView::~CDocviewView()
{
}
BOOL CDocviewView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
// CDocviewView drawing
// CDocviewView diagnostics
#ifdef _DEBUG
void CDocviewView::AssertValid() const
{
CView::AssertValid();
}
void CDocviewView::OnColorRed()
{
// TODO: Add your command handler code here
CDC *p=GetDC();
p->SetTextColor (RGB(255,0,0));
p->TextOut (100,100,"II MCA B");
ReleaseDC(p);
}
void CDocviewView::OnTransferGet()
{
// TODO: Add your command handler code here
CDocviewDoc *e=GetDocument();
m_rich.SetWindowText(e->m_str);
m_rich.SetModify(FALSE);
}
void CDocviewView::OnTransferStore()
{
// TODO: Add your command handler code here
CDocviewDoc *e=GetDocument();
m_rich.GetWindowText(e->m_str);
m_rich.SetModify(FALSE);
RESULT:
Thus the program using Document View Architecture in VC++ was executed successfully.
Ex. No.: 5 NAME:
DATE: REG NO:
//dyn.cpp
extern "C"__declspec(dllexport)double sqrroot(double d)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(d>0.0)
{
return sqrt(d);
}
AfxMessageBox("NO");
return 0.0;
}
//IMPORT DLL
//dyn1.h
#include "math.h"
extern "C"__declspec(dllimport)double sqrroot(double d)
//dialog
void CDyn1Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(true);
m_output=sqrroot(m_input);
UpdateData(false);
}
OUTPUT:
RESULT:
Thus the program to create a dynamic link library using MFC is tested and
executed successfully.
Ex. No.: 6 NAME:
DATE: REG NO:
AIM :
To design a student information system using database
ALGORITHM:
1. Start the program.
2. Design an interface form with menu options
3. Write appropriate coding for menu options add , modify , delete , update .
4. Execute the application to display the details of all students.
5. Calculate the average and total of each student
6. Stop the process
7. End.
PROGRAM:
// studentView.cpp : implementation of the CStudentView class
//
#include "stdafx.h"
#include "student.h"
#include "studentSet.h"
#include "studentDoc.h"
#include "studentView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// CStudentView
IMPLEMENT_DYNCREATE(CStudentView, CRecordView)
BEGIN_MESSAGE_MAP(CStudentView, CRecordView)
//{{AFX_MSG_MAP(CStudentView)
ON_BN_CLICKED(IDC_BUTTON1, OnTotal)
ON_BN_CLICKED(IDC_BUTTON2, OnAverage)
ON_BN_CLICKED(IDC_BUTTON3, OnAdd)
ON_BN_CLICKED(IDC_BUTTON4, OnDelete)
ON_BN_CLICKED(IDC_BUTTON5, OnEdit)
ON_BN_CLICKED(IDC_BUTTON6, OnExit)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CRecordView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CRecordView::OnFilePrintPreview)
END_MESSAGE_MAP()
// CStudentView construction/destruction
CStudentView::CStudentView()
: CRecordView(CStudentView::IDD)
{
//{{AFX_DATA_INIT(CStudentView)
m_pSet = NULL;
//}}AFX_DATA_INIT
// TODO: add construction code here
CStudentView::~CStudentView()
{
}
return CRecordView::PreCreateWindow(cs);
}
void CStudentView::OnInitialUpdate()
{
m_pSet = &GetDocument()->m_studentSet;
CRecordView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
}
// CStudentView printing
BOOL CStudentView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
#ifdef _DEBUG
void CStudentView::AssertValid() const
{
CRecordView::AssertValid();
}
void CStudentView::OnAdd()
{
// TODO: Add your control notification handler code here
m_pSet->AddNew();
UpdateData(true);
m_pSet->Update();
void CStudentView::OnDelete()
{
// TODO: Add your control notification handler code here
m_pSet->Delete();
UpdateData(true);
void CStudentView::OnEdit()
{
// TODO: Add your control notification handler code here
m_pSet->Edit();
void CStudentView::OnExit()
{
// TODO: Add your control notification handler code here
exit(0);
}
OUTPUT:
RESULT:
Thus the given program to interface with database using VC++ 6.0 was executed and
verified successfully.
Ex. No.: 7(A) NAME:
DATE: REG NO:
7. A) STATUSBAR APPLICATION
AIM:
To write a program, to create a status bar and to display the coordinates of the mouse
pointer and display the time.
ALGORITHUM:
Create a dialog based application using VC++.
1. Create a number variable for status bar.
2. Also create a member function for
i) mouse move
ii) time
3. Divide the status bar into 2 parts, one for displaying mouse movement
and other for displaying the time at bottom corner.
4. Use the in built functions to display the required things
5. Compile and run the program.
RESOURCE VIEW:
ID_INDICATOR_START
ID_INDICATOR_TIME
PROGRAM:
#include "stdafx.h"
#include "ex 11.h"
#include "ex 11Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
static UINT BASED_CODE
indicator[]={IDS_INDICATOR_START,IDS_INDICATOR_TIME};
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEx11Dlg dialog
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEx11Dlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEx11Dlg, CDialog)
//{{AFX_MSG_MAP(CEx11Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_SIZE()
ON_WM_MOUSEMOVE()
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEx11Dlg message handlers
BOOL CEx11Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
// 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
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,I
DS_INDICATOR_TIME);
return TRUE; // return TRUE unless you set the focus to a control
}
void CEx11Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CEx11Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
OUTPUT:
RESULT:
Thus the program has been created and executed successfully
Ex. No.: 7(B) NAME:
DATE: REG NO:
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// CSplitView
IMPLEMENT_DYNCREATE(CSplitView, CView)
BEGIN_MESSAGE_MAP(CSplitView, CView)
//{{AFX_MSG_MAP(CSplitView)
ON_COMMAND(ID_COLORS_GREEN, OnColorsGreen)
ON_COMMAND(ID_COLORS_RED, OnColorsRed)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
// CSplitView construction/destruction
CSplitView::CSplitView()
{
// TODO: add construction code here
}
CSplitView::~CSplitView()
{
}
// CSplitView printing
BOOL CSplitView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CSplitView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CSplitView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
// CSplitView diagnostics
#ifdef _DEBUG
void CSplitView::AssertValid() const
{
CView::AssertValid();
}
RESULT:
Thus the given program to implement the split window Using VC++ 6.0 was executed
and verified successfully.
Ex. No.: 8 NAME:
DATE: REG NO:
AIM:
To create a bitmap and display the image into an untitled document.
ALGORITHM:
1. Create a single document .
Select insert ->resource->bitmap Create a new bitmap
2. Select the file view ,in that open the bitview.cpp and in ondraw function type the
code.
3. Run the code
4. The bitmap image will be displayed on the output window.
SOURCE CODE:
void CBm3aView::OnDraw(CDC* pDC)
{
CBm3aDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP2);
BITMAP bm;
bmp.GetObject(sizeof(BITMAP),&bm);
CDC dcmem;
dcmem.CreateCompatibleDC(pDC);
CBitmap *pbmpOld=dcmem.SelectObject(&bmp);
pDC->BitBlt(10,10,bm.bmWidth,bm.bmHeight,&dcmem,0,0,SRCCOPY);
dcmem.SelectObject(pbmpOld);
}
OUTPUT:
RESULT:
Thus the program to load the bit map dynamically with and with out wizard using
vc++ is successfully executed .
Ex. No.: 9 NAME:
DATE: REG NO:
ALGORITHM:
STEP 1: Open Microsoft Visual C++ and select,
File->New->Project->ATLCOM AppWizard.
STEP 2: Type the project name as curcon and select Dynamic Linking Library(DLL)
and press Finish.
STEP 4: Right click on Icurrency under curcon class and Add method.
STEP 5: Type the method name(indtofor & fortoind)and parameters in the new window
that is opened.
STEP 6: Go to file view and write the coding for the added methods.
Curcon files->Source files->double click on currency.cpp
//VB.NET CLIENT
STEP 8: Open a new project as,
File->New->Project->Microsoft VisualBasic->Windows Application->Ok.
STEP 10: Design the form with labels,textbox,combo box and buttons.
VC++ Server
// currency.cpp : Implementation of Ccurrency
#include "stdafx.h"
#include "Curcon.h"
#include "currency.h"
VB.NET Client
Form Design
Dim obj As CURCONLib.currency
RESULT:
Thus the program to perform currency conversion using vc++ is successfully
executed .
VIVA QUESTIONS
Ex No. 1
1. What is the size of class
Size of the class will be the some of the size of all member variables. For example if in a
class we have one integer and one char. Then in 32 bit OS size will be 8 bytes ( Padding comes
here in picture ).
2. What is the difference between Synchronous
Asynchronous sockets are usually defined by the server side application and not by what the
client's doing. I'm apparently wrong per your developer, but I thought an asynchronous socket
allows multiple connections by forking or threading. A synchronous socket processes one request
at a time.
3. What is CArchive class dowes
CArchive is the class which is not derived from CObject. This is the class by which we do
serialization.
4. What is a message map, and what is the advantage of a message map over virtual functions?
Message map is the mechanism by which MFC handles the application messages. Advantage
of message map over virtual function is in case of virtual function VTABLE will grow and you
will have vptr for each and every instance of your class having virtual function.
5. What function is used to retrieve the currently selected index in a list box?
GetCurSel is the method.
6. Explain something about MFC?
MFC :- Microsoft Foundation Class. A collection of classes by which you can create GUI
based applications. You can create Active X control , COM component etc.
CObject is the base class of MFC.
7. Why not virtual functions to handle messages?
If you have virtual functions instead of message map then for each class ( having virtual
function ) there will be a vptr. vptr will take 4 bytes. Also your VTABLE will grow because you
have more virtual functions in your class.
To avoid this situtation MFC has given feature of message map.
8. How to handle command line arguments from simple MFC application ?
CCommandLineInfo class.
9. How to setup a timer?
goto class wizard and add ontimer function in that function u can declare which function
u want to do ..
in onint function settimer (0,1000,NULL)
this is used to trigger every one second
you can stop timer using killtimer function
10. How to access document object from view ?
GetDcoument() function will return pView pointer
11. What is the use of CCmdTarget ?
CmdTarget provides the message mapping functionality in MFC. It routes messages to their
respective functions.
12. How to create a Modeless Dialog?
using Create Method , we can create a Modeless dialog box.
CDialog dlg(IDD_DIALOG1);
dlg.Create();
Modal Dialog Box:
CDialog dlg(IDD_DIALOG1);
dlg.DoModal();
28. How to transfer between one exe to another exe while running in VC++ ?
system("MySecondApplication.exe");
WinExec("MySecondApplication.exe",true);
::ShellExecute(NULL,NULL,L"MySecondApplication.exe",NULL,NULL,NULL);
29. What are the differences between MFC Exception macros and C++ exception keywords?
The major difference between the macros and the keywords is that code using the macros
"automatically" deletes a caught exception when the exception goes out of scope. Code using the
keywords does not, so you must explicitly delete a caught exception.
30. What is LoadLibrary function returns?
On success, LoadLibrary() returns a handle to the module
31. What are the types of button controls?
Two types of button controls are there: 1) Command(Push) Button & 2) Radio Button
32. What is serialization ?which function is responsible for serializing data ?
Serialization is the process of converting an object into sequence of bits so that it can be
stored and retrieved from a storage medium e.g. file. serialize() is responsible for serialization of
data.
33. If we derive a new class from CObject what are the basic features the derived class will get ?
If you derive from CObject, you will get following features available
1) Synchronization(Saving and Retrieving Data)
2) Run-time class information
3) Object diagnostic output
4) Compatibility with collection classes
34. Tell about different kinds of synchronization objects ?
CMutex - allows only one thread from any process to access an object
CCriticalSection - allows only one thread from within the current process to access an object
CEvent - notifies an application when an event has occured
CSemaphore - allows between one and a max. number of simultaneous access to an object
35. What view class enables you to use an edit control as a view?
CEditView class
36. What MFC base classes provide support for ActiveX controls?
COleControl
37. What types of threads are supported by MFC framework?
MFC supports two types of threads:
1 Worker Thread - Commonly used to handle background task
2 User Interface Thread - Used to handle user inputs and respond to events and messages
generated by the user
38. What is the difference between OnInitialUpdate and OnUpdate?
OnInitialUpdate() is called once when the view is first created while OnUpdate() is called
everytime the document updates its views
39. What is the difference between Cmutex and Csemaphone?
CMutex allows only one thread from any process to access an object while CSemaphore
allows between one and a specified maximum number of simultaneous accesses to an object.
40. What is the difference between Model and Modeless Dialog?
The difference between a modal and modeless dialog box is that, modal dialogs once invoked
will not allow the users to access the parent window, where as modeless dialogs will allow the
user to work with the parent window. A user cannot enter inputs in any other dialog or invoke a
menu option except without explicitly closing the modal dialog, within the application. But the
user can leave the modeless dialog open and do anything after the modless dialog is invoked.
41. What is the base class for MFC Framework ?
CObject is the root base class for MFC framework.