A dialog box has the following characteristics:
A dialog box is created from a class named CDialog. The CDialog class implements a class named CWnd. The CWnd class is derived from CCmdTarget:
To visually create a dialog box in Microsoft Visual C++, from the Add Resources dialog box, click Dialog and click New. Then you can manipulate its characteristics using the Properties window. In reality, unlike most or all other controls, a dialog box requires some preparation before actually programmatically creating it. While most other controls can be easily added to a host, a dialog box must already “exist†before it is asked to display. Based on this, a dialog box can first be manually created as a text file (in a resource file). In the file, you create a section for the dialog box. This section itself is divided in lines each serving a specific purpose. /p> Like most other controls, a dialog box must be identified. The identifier of a dialog box usually starts with IDD_ (the second D stands for dialog). An example of a dialog identifier would be IDD_SCHOOL_SURVEY. Therefore, the section of the dialog box in the file can start with: IDD_SCHOOL_SURVEY At design time, the identifier of the dialog box is specified using the ID combo box:
The Win32 library provides a series of ready-made names for classes to create controls. In the same way, a dialog box has two types of classes used to create a dialog box. The DIALOG statement was primarily used to create a dialog box. It has been updated and replaced by the DIALOGEX name. Therefore, to indicate in the file that the section you are creating is for a dialog box, type DIALOGEX. Here is an example: IDD_SCHOOL_SURVEY DIALOGEX
A dialog box must be “physically†located on an application. Because a dialog box is usually created as a parent to other controls, its location depends on its relationship to its parent window or to the desktop. The location of a dialog box is defined by x for the distance from the left border of the monitor to the left border of the dialog box and by y for the distance from the top border of the monitor to the top border of the dialog box: IDD_SCHOOL_SURVEY DIALOGEX x, y, At design time, the x value is set using the X Pos field of the Properties window:
The y value is set using the Y Pos value in the Properties window. If you specify these two dimensions as 0, the left and top borders of the dialog box would be set so the object appears in the center-middle of the screen: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, If you set the value of x or X Pos property to a number less than or equal to 0, the left border of the dialog box would be aligned with the left border of the monitor. If you set the value of x or of the X Pos property higher than 0, the value would be used as the distance, in Dialog Box Unit (DLU), from the left border of the screen to the left border of the dialog box. This scenario also applies for the y value or the Y Pos property.
The dimensions of a dialog box are its width and its height. At design time, to set the desired width, position the mouse to its right border until the mouse pointer appears as a horizontal double arrow Then click and drag left or right. To set the desired height, position the mouse to the bottom border until the mouse cursor appears as a vertical double arrow . Then click and drag up or down. To set both the width and the height in one operation, position the mouse in the bottom-right corner until the mouse pointer becomes a North-West <=> South-East diagonal double arrow. Then click and drag up, down, left, or right as necessary. While dragging in any of these operations, you can refer to the right section of the status bar to get the current width and height. In the resource file, the width and the height of the dialog box follow the location values. Here is an example: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268 There are other items that can be entered on this first line but the identifier, the DIALOGEX statement, the location, and the dimensions are required.
As the most regular used parent of Windows controls, a dialog box must have some characteristics that would allow it to be as efficient as possible. The characteristics of a dialog box, as done with the controls, are referred to as its styles. In the resource file, to specify these aspects, start a line with the STYLE keyword: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE
To programmatically change the style of a dialog box, you can call the SetWindowLongPtr() function. Its syntax is: LONG_PTR SetWindowLongPtr(HWND hWnd, int nIndex, LONG_PTR dwNewLong); The first argument is a handle to the dialog box. For a normal application, you can use m_hWnd that we will study in Lesson 7. The nIndex argument represents the type of change you want to make. In Lesson 8, we will come back to the possible values of this argument; but for now, if you want to change the style of a dialog box, this argument should have the GWL_STYLE value. The dwNewLong argument represents the new value you want to apply for the second argument. In this case, it would be the style you want to apply. To get the styles that a dialog box has, you can call the GetWindowLongPtr() function. Its syntax is: LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex); Both arguments follow the same rules as the first two parameters of the SetWindowLongPtr() function.
Because a dialog box serves only to hold other objects, it should indicate what it is used for. The top side of a dialog box is made of a horizontal section that we call the title bar. To have a title bar on a dialog box, it must be created with the WS_CAPTION style: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION
The main area of this bar contains a word or a group of words forming a sentence called a caption. There are various ways you can change it. At design time, in the Properties window, change the value of the Caption field. If you are creating a resource file, start a new line with the CAPTION keyword and provide the word or group of words as a null-terminated string. Here is an example: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION
CAPTION "Exercise"
To programmatically specify the caption of a dialog box, call the SetWindowText() function (the following code, given as a reference, contains the OnCreate() and the SetWindowText() and the OnCreate() functions that we haven't studied yet; we will find out about them in the next lessons): int CExerciseDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
SetWindowText(_T("Yugo National Bank - Employees Records"));
return 0;
}
When creating a dialog box, you can equip it with either or both a vertical scroll bar and/or a horizontal scroll bar. To do this, in the Properties window, set the Horizontal Scrollbar and/or the Vertical Scrollbar fields to the desired value.
Depending on how it is designed, a dialog box may display a system icon on the left side of the title bar:
To make a dialog box display a system icon, at design time, access its Properties window and set its System Menu option to True. Otherwise, in its resource file, add the WS_SYSMENU style. Here is an example: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU
CAPTION "Exercise"
By default, Microsoft Visual Studio or the operating system provides a default icon for the dialog box. If you want, you can change it. Probably the easier way is to access the IDR_MAINFRAME item from the Resource View and change its design. You can also use create another icon or use any icon you want. At run-time, you can change the icon by calling the LoadIcon() function. This function comes in two versions whose syntaxes are: HICON LoadIcon(LPCTSTR lpszResourceName) const; HICON LoadIcon(UINT nIDResource) const; If you had designed a new icon and added its resource, you can call the second version. Here is an example (the following code, given as a reference, contains the OnInitDialog(), the LoadIcon(), and the SendMessage() functions that we haven't studied yet; we will find out about them in other lessons): BOOL CDialogExample1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 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
HICON hCustomIcon = LoadIcon(AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDI_SOME_ICON));
if(hCustomIcon)
SendMessage(WM_SETICON, ICON_SMALL, (LPARAM)hCustomIcon);
return TRUE; // return TRUE unless you set the focus to a control
}
If a dialog box is equipped with a system icon, the user can click the icon and this would display a system menu:
The presence of the system menu comes with a system Close button on the right side of the title bar. As mentioned already, this is made possible by adding the WS_SYSMENU style as seen earlier. As mentioned already, if you want to programmatically change the style of a dialog box, call the SetWindowLongPtr() function. To hide the system icon and its menu from the title bar, first call the function to remove the system menu, then call it again to add the WS_CAPTION style. here is an example (the following code, given as a reference, contains the OnInitDialog() function that we haven't studied yet): BOOL CDialogExample1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 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
SetWindowLongPtr(m_hWnd, GWL_STYLE, ~WS_SYSMENU);
SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_CAPTION);
return TRUE; // return TRUE unless you set the focus to a control
}
This would produce:
Normally, the standard characteristics of a dialog box state that it does not need to be minimize. Still, if you want, you can add a minimize and a maximize buttons to it. If you want to add the minimize button, at design time, set the Minimize Box property to True. This is equivalent to adding the WS_MINIMIZEBOX style to the class. To programmatically do this, call the SetWindowLongPtr() function and add the WS_MINIMIZEBOX style to the third argument. Here is an example: SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU); If you create a dialog box and equip it with the minimize button so the user can shrink it to the task bar, if you want the dialog box to be minimized when it comes up, if you are making the changes from the resource file, add the WS_MINIMIZE style. This would be done as follows: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MINIMIZE
CAPTION "Exercise"
Remember that a dialog box can be minimized only if its system menu indicates so.
WS_MAXIMIZEBOX: If you want the Maximize button , set the Maximize Box property to True or checked. This is equivalent to adding the WS_MAXIMIZEBOX style. WS_MAXIMIZE: If you create a dialog box equipped with the Maximize button, if you want the dialog box to be automatically maximized when it displays, you can add the WS_MAXIMIZE style to the resource file. This would be done as follows: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MINIMIZE |
WS_MAXIMIZEBOX | WS_MAXIMIZE
CAPTION "Exercise"
Remember that a window box can be maximized only if it includes the WS_MAXIMIZEBOX style. Setting one of these two system button properties to True or checked or adding either WS_MAXIMIZEBOX or WS_MINIMIZEBOX and not the other would disable the other system button. Therefore, here are the combinations you can get:
System Menu = False This is equivalent to: BOOL CDialogExample1Dlg::OnInitDialog() { CDialog::OnInitDialog(); // 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 SetWindowLongPtr(m_hWnd, GWL_STYLE, ~WS_CAPTION); SetWindowLongPtr(m_hWnd, GWL_STYLE, WS_SYSMENU); return TRUE; // return TRUE unless you set the focus to a control }
There is no system button
The borders of an object allow the user to "physically" locate it on the screen. Obviously a dialog box should have borders. Win32 allows you to customize the borders of a dialog box. At design time, the type of border used on a dialog box is controlled by the Border combo box in the Properties window. If you are working from the resource file, the dialog box provides a set of properties you can use. The options used to control the borders of a dialog box are:
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Based on the Microsoft Windows standards and suggestions, a dialog box usually uses constant dimensions. This means that the user should not change its width and/or height. If you want to give the user the ability to resize a dialog box, change its Border value to Resizing. With this type of object, the user can position the mouse on of its borders or corners, click, hold down the mouse and drag in the desired direction to change its dimensions. In the resource file, this can also be done by creating the dialog box with the WS_THICKFRAME style: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | WS_THICKFRAME
CAPTION "Exercise"
A Thin value gives a thin border to the dialog box.
A window is referred to as popup if it can be displayed on the screen. That is, if it can be "physically" located. To create a popup dialog box, at design time, select Popup from the Style combo box. In the resource file, this can be done by adding the WS_POPUP style: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP
CAPTION "Exercise"
If you do not want borders at all on the dialog box, set its Border value to None. This also removes the title bar and thus the system buttons:
This is equivalent to using only the WS_POPUP style: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_POPUP
CAPTION "Exercise"
A window is referred to as child if its appearance is dependent of the appearance of another window. All of the objects we will place on our dialog boxes are child window. As we will see when studying property sheets and wizards, a dialog box that is designed to be "embedded" in a property sheet or a wizard must be created as a child. To specify that a dialog box is a child of another window, at design time, select the Child value on the Style combo box. This characteristic can be applied by adding the WS_CHILD style.
A window is called overlapped if it has the following characteristics:
To get an overlapped dialog box, at design time, access the Properties window for the dialog box. Set the Style combo box to the Overlapped value. This is equivalent to the WS_OVERLAPPED style. To create a dialog box equipped with a title bar, a system menu, the ability to pop up, and a border, instead of combining the WS_CAPTION, the WS_SYSMENU, the WS_POPUP, and the WS_BORDER styles, use the WS_OVERLAPPEDWINDOW value, which combines them all.
We saw already how to manage the title bar and its system buttons. If you are creating a strict dialog box, one that is equipped with only the system close button, if you intend to provide help on the dialog box, you can add a context-sensitive help button to the left of the close button. To do this at design time, in the Properties window, set its Context Help property to True or create it with the DS_CONTEXTHELP style.
By design, a dialog box has thick borders and cannot be resized from its borders or corners, even if the system buttons are available. This characteristic of dialog boxes is controlled by the Border property. The default border of a dialog box is Dialog Frame. This is the same as applying the DS_MODALFRAME dialog style: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME
CAPTION "Exercise"
In previous versions of MS Windows, namely Windows NT
3.51, to get a 3-dimensional appearance, you needed to apply the
DS_3DLOOK style. At this time, this style is added by default.
Earlier, when reviewing the techniques of setting the
location of a dialog box, we mentioned that, if the x and the y values, or
the X Pos and the Y Pos properties, are set to 0, the dialog box is
positioned in the middle of the screen. This is because, like all other
objects that can act as children of a parent window, the location of a
dialog box is set according to its parent. That is, the location of a dialog
box is based on its ability to be a client (also called child) of another
window (called a parent). This system is referred to as client coordinate.
If you are creating an application based on a dialog box, that is, an
application whose main or even only container is the dialog box, such a
dialog box does not have a parent. In this case, it does not have a
referential window to base its location on. Consequently, it gets positioned
to the middle of the screen. If you want the location of the dialog box to
be based on the monitor screen, at design time, set its Absolute Align
property to True in the Properties window. In a resource file, this would be
done by adding the DS_ABSALIGN style. This system is referred as the
screen coordinate.
Based on the coordinate system you decide to use, screen
or client, when the dialog box of a dialog-based application comes up, if
you want the dialog to be centered on the monitor screen, even if you are
using the screen coordinate system with the DS_ABSALIGN style, set
its Center property to True in the Properties window. This is also done by
adding the DS_CENTER style. If the dialog box is participating in an
application that is view-based, if you set its Center property to True, it
would be centered with regards to the window that called it.
To display its controls, the dialog box uses a predefined font known as MS Shell Dlg. To change it at design time, in the Properties window, click Font (Size) to reveal its combo box. Then click its ellipsis button. This would open the Font dialog box where you can select the font and its options. The font characteristics are managed through the DS_SHELLFONT, the DS_SETFONT, and the DS_FIXEDSYS styles. The section of the resource file that specifies the general font starts with the FONT keyword: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME CAPTION "Exercise" FONT The FONT keyword is followed by the characteristics of the font using the following syntax: FONT size, name, weight, italic, charset Here is an example: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME
CAPTION "Exercise"
FONT 8, “MS Shell Dlgâ€, 400, 0, 0x1
If you want to manage the fonts, weights, and colors of the controls on the dialog box of an MFC application, you must do this programmatically.
The primary technique used to create a dialog is to derive a class from CDialog. To enhance it, Microsoft created a new class named CDialogEx. This class is derived from CDialog and it added only two characteristics: a color background and a picture background. To give you the ability to paint a dialog box with a color of your choice, the CDialogEx class is equipped with the SetBackgroundColor() member function. Its syntax is: void SetBackgroundColor(COLORREF color, BOOL bRepaint = TRUE); The fist argument, which is required, specifies the color to apply to the body of the dialog box. The second argument is optional and it indicates whether the dialog box should be repainted with this member function is called. Here is an example: BOOL CExampleDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 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
SetBackgroundColor(278394);
return TRUE; // return TRUE unless you set the focus to a control
}
Instead of a color, you may want to paint a dialog box with a picture. To support this, the CDialogEx class provides the SetBackgroundImage() member function. It comes in two versions whose syntaxes are: void SetBackgroundImage( HBITMAP hBitmap, BackgroundLocation location=BACKGR_TILE, BOOL bAutoDestroy=TRUE, BOOL bRepaint=TRUE ); BOOL SetBackgroundImage( UINT uiBmpResId, BackgroundLocation location=BACKGR_TILE, BOOL bRepaint=TRUE ); In both cases, the first argument is required and it holds the bitmap to use. The other arguments are optional. The first version expects a handle to a BITMAP object. To use it, you must programmatically create a BITMAP or a CBitmap object and pass it to the function. The second version of this member function is probably the easier. Before using it, you can first import a bitmap (a picture with the .bmp extension), and give it an ID. Once the bitmap is ready, pass its ID to the member function. Here is an example: BOOL CExample1Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 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
SetBackgroundImage(IDB_CITY);
return TRUE; // return TRUE unless you set the focus to a control
}
Besides the regular Windows styles and the styles specific to a dialog box, Microsoft Windows provides some extended styles used to improve the appearance or the role of a dialog box on an application. To use these styles in the resource file, start a new line with the EXSTYLE keyword: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME
EXSTYLE
CAPTION "Exercise"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
A tool window is a parent object mostly used to float, like a toolbar, on a frame of another window. It has a short title bar that displays its caption. It can neither be minimized nor maximized but it can be equipped with a circumstantial system menu: To create a tool window, when designing the dialog box, set the Tool Window field to True in the Properties window. This can also be applied by adding the WS_EX_TOOLWINDOW extended style: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Exercise"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
If you want the user to be able to resize the tool window by dragging its borders or corners, at design time, set its Border value to Resizing or create it with the WS_THICKFRAME style. If you do not want the user to be able to resize the tool window, at design time, set its Border to either Thin or Dialog Frame. In the resource file, you can also do this by creating it with the WS_CAPTION and WS_SYSMENU style.
As mentioned already, a window without the system Minimize button cannot be minimized. This, of course, is the same for a tool window. Also, by default, a tool window does not display a button on the task bar. If you are creating a window that will depend on a main window such as a frame, you should keep that default. If for any reason you want to display a button on the task bar for the tool window, add the WS_EX_APPWINDOW extended style.
If you want your window to stay on top of another or other windows, at design time, set the Topmost field to True in the Properties window. If you are working from a resource file, add the WS_EX_TOPMOST extended style to it (if the window you are creating, such as a dialog box, is being added to a frame-based or a form-based application and you want that window to always be on top of its parent window, add the WS_VISIBLE style to it and display it using ShowWindow(SW_SHOW)).
A window appears sunken when its body is sunk with regards to its borders. To create a dialog box with a sunken body, at design time, set its Client Edge field to True in the Properties window. If you are working from a resource file, add the WS_EX_CLIENTEDGE extended style.
A window can have an inside body that appears to be raised with regards to its borders. To get such an edge, at design time, set the Window Edge field to True in the Properties window. If you are working from a resource file, add the WS_EX_WINDOWEDGE extended style.
To create a window with a 3-dimensional thin border, at design time, set its Static Edge to True in the Properties window. This is the same as adding the WS_EX_STATICEDGE extended style.
To create a dialog box that has a raised border and stays on top of others, which is equivalent to combining the WS_EX_WINDOWEDGE and the WS_EX_TOPMOST styles, in the resource file, add the WS_EX_PALETTEWINDOW value in the EXSTYLE line
A window is referred to as overlapped when it presents a combination of a sunk and a raised edge. Such a window can be created by either combining the WS_EX_CLIENTEDGE and the WS_EX_WINDOWEDGE styles or by using the WS_EX_OVERLAPPEDWINDOW.
If you are creating a dialog box that will be accepting files dragged from other windows, at design time, set the Accept Files field to True in the Properties window. You can also do this in the resource file by adding the WS_EX_ACCEPTFILES extended style.
As mentioned already, a dialog box means nothing except for the objects it hosts. The objects are listed in a section that starts with the BEGIN and ends with the END keywords. Here is an example: IDD_SCHOOL_SURVEY DIALOGEX 0, 0, 340, 268
STYLE WS_CAPTION | WS_SYSMENU | WS_POPUP | DS_MODALFRAME
EXSTYLE WS_EX_TOOLWINDOW
CAPTION "Exercise"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
END
If you design a dialog box and it is the first object of your application, you must save it before using it. Even if you had decided to manually create the dialog box as a text file, you must save it before using it. In both cases, whether saving the dialog box designed or the text file, saving it results in creating a resource file. This file should have the .rc extension. If your resource file is using some identifiers, which is the case for most or all objects you will use in your application, you must list them in a header file. This file is traditionally called Resource.h or resource.h. Each identifier must be listed using the following syntax: #define Identifier Constant When you save the resource file, Microsoft Visual C++ automatically creates the resource header file and names it resource.h
After creating the resource for the dialog box, you must create a class that will be used to handle its assignment(s). To do this, you must derive a class from CDialog. You have various options. You can create a header file and a source file for the dialog box. In the header file of the dialog's class, define an enumeration whose only member is called IDD and initialize it with the identifier of the dialog box. Because the identifier is listed in the resource header file, you must include this resource header in the file in which you are using the dialog's identifier. Instead of explicitly creating the header and source files, you can create a class for the dialog box. There are two ways you can do this:
This would open the MFC Add Class Wizard. In the Class Name text box, enter the intended name of the class. In the Base Class combo box, select either CDialog (the default) or another:
When you are ready, click Finish. A header file and a source file would be created for you. All the necessary ingredients of a dialog box class will be added in the code for you, including issues we will study in other lessons.
A dialog box is based on the CDialog class. As seen above, when creating your dialog box, you can derive a class from CDialog. The CDialog class itself provides three constructors as follows: CDialog(); CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL); CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL); The default constructor, CDialog(), can be used to declare a variable whose behavior is not yet known or, for one reason or another, cannot yet be defined. When creating your class, you should also declare at least a default constructor. The identifier of the dialog box, such as IDD_DIALOG1, can be used as the first argument, nIDTemplate, of a CDialog() constructor to create a dialog box from an existing resource. If you are using a Win32 template to create your dialog box, pass the name of this template as a string to a CDialog() constructor, lpszTemplateName. When implementing your default constructor, initialize the parent CDialog constructor with the IDD enumerator declared in your class. If your dialog box has an owner, specify it as the pParentWnd argument. If you set it to NULL, the application will be used as the dialog's parent. If you dynamically create objects for your application using your dialog class, it is a good idea to also declare and define a destructor. This would be used to destroy such dynamic objects. Most other methods of a dialog box depend on circumstances we have not yet reviewed
There are two types of dialog boxes: modal and modeless. A Modal dialog box is one that the user must first close in order to have access to any other framed window or dialog box of the same application. One of the scenarios in which you use a dialog box is to create an application that is centered around a dialog box. In this case, if either there is no other window in your application or all the other windows depend on this central dialog box, it must be created as modal. Such an application is referred to as dialog-based There are two main techniques you can use to create a dialog-based application: from scratch or using one of Visual C++ wizards. After creating a dialog resource and deriving a class from CDialog, you can declare a variable of your dialog class. To display your dialog box as modal, you can call the CDialog::DoModal() method in your CWinApp::InitInstance() method. Its syntax is: virtual int DoModal(); This method by itself does nothing more than displaying a dialog box as modal. We will learn that you can use this method to find out how the user had closed such a dialog box.
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|