Click here to Skip to main content
Click here to Skip to main content

Window Styles

, 17 Aug 2002
Rate this:
Please Sign up or sign in to vote.
Window Styles
<!-- Download Links --> <!-- Article image -->

Sample Image - WindowStyles.gif

<!-- Add the rest of your HTML here -->

What's New:



Introduction:

This Article demonstrates the technique of creating different style Windows at run-time, by selecting various options on the displayed form view

Features:

    You can create the following type of Windows

  • Overlapped
  • Child
  • Popup
  • Standard Dialog

You have the option of creating a Menu also

    Windows can be created either

  • Minimized
  • Maxmiized
  • To Size

    Windows can have the following buttons

  • Maximize
  • Minimize
  • System Menu

You can create the Window with default sizes and at the default position or specify the Left, Top Values and also the specify Width and Height

Note:

If you continue clicking on the "Create Window" button , Windows will be created one over the other as many times as you go on clicking , and will have to close each Window by clicking on the Close button as many times

About The Code:

//
//  Depending on the Type of Window to be created
//  we enable of disble various options as below
//
//  If you select the Overlapped Window option
//  the following checkboxes are Enabled / Disabled
void CMainForm::SetOverlappedProperties()
{
	GetDlgItem(IDC_DIALOGFRAME)->EnableWindow(FALSE);
	GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(TRUE);
	GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(TRUE);
	GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);
	GetDlgItem(IDC_DEFAULT_TOPLEFT)->EnableWindow(TRUE);
	GetDlgItem(IDC_DEFAULT_WIDTHHEIGHT)->EnableWindow(TRUE);
	GetDlgItem(IDC_TOP)->EnableWindow(FALSE);
	GetDlgItem(IDC_LEFT)->EnableWindow(FALSE);
	GetDlgItem(IDC_WIDTH)->EnableWindow(FALSE);
	GetDlgItem(IDC_HEIGHT)->EnableWindow(FALSE);
	m_DefaultTopLeft = m_DefaultWidthHeight = TRUE;
	m_MinimizeBox = m_MaximizeBox = m_SystemMenu = 
					m_Overlapped = TRUE;
	m_ToSize = TRUE;
	m_Popup = m_Child = FALSE;

	UpdateData(FALSE);	
}

//
//  If you select the Child Window option
//  the following checkboxes are Enabled / Disabled
//

void CMainForm::SetChildProperties()
{
	m_MinimizeBox = m_MaximizeBox = m_SystemMenu = m_Overlapped = 
					m_Popup = FALSE;
	m_ToSize = TRUE;
	m_Child = TRUE;
	GetDlgItem(IDC_DIALOGFRAME)->EnableWindow(TRUE);

	GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(FALSE);
	GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(FALSE);
	GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(FALSE);

	GetDlgItem(IDC_CAPTION)->EnableWindow(TRUE);
	m_Caption = FALSE;

	UpdateData(FALSE);
		
}

//
//  If you select the Popup Window option
//  the following checkboxes are Enabled / Disabled
//

void CMainForm::SetPopupProperties()
{
	m_MinimizeBox = m_MaximizeBox = m_SystemMenu = 
		m_Overlapped = m_Child = FALSE;
	m_Popup = TRUE;

	m_ToSize = TRUE;
	m_SystemMenu = TRUE;
	GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(TRUE);
	GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(TRUE);
	GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);

	GetDlgItem(IDC_CAPTION)->EnableWindow(TRUE);
	m_Caption = FALSE;
	UpdateData(FALSE);		
}

//
//  If you select the Standard Window option
//  the following checkboxes are Enabled / Disabled
//
void CMainForm::SetStandardDialogProperties()
{
	CheckDlgButton(IDC_CAPTION, 1);
	GetDlgItem(IDC_CAPTION)->EnableWindow(TRUE);
	CheckDlgButton(IDC_SYSTEM_MENU,1);
	GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);

	GetDlgItem(IDC_MINIMIZE_BOX)->EnableWindow(TRUE);
	GetDlgItem(IDC_MAXIMIZE_BOX)->EnableWindow(TRUE);
	GetDlgItem(IDC_SYSTEM_MENU)->EnableWindow(TRUE);
	
	CheckDlgButton(IDC_MAXIMIZE_BOX, 0);
	CheckDlgButton(IDC_MINIMIZE_BOX, 0);
	CheckDlgButton(IDC_MODAL_DIALOG_FRAME, 1);
	GetDlgItem(IDC_DEFAULT_WIDTHHEIGHT)->EnableWindow(FALSE);
	GetDlgItem(IDC_DEFAULT_TOPLEFT)->EnableWindow(FALSE);
	GetDlgItem(IDC_WIDTH)->EnableWindow(TRUE);
	GetDlgItem(IDC_HEIGHT)->EnableWindow(TRUE);
	GetDlgItem(IDC_TOP)->EnableWindow(TRUE);
	GetDlgItem(IDC_LEFT)->EnableWindow(TRUE);

	UpdateData(TRUE);
}

Lets take a look at the coding that goes into creating the Window at run-time after you have selected the necessary options and clicked on the "Create Window" button


//
//  First of all we have to register the class 
//  the name of the Class is specified as a String
//  Name of the class is passed to the my member 
//  function eg RegisterClass("MyWindowStyles")
//
//
BOOL CMainForm::RegisterClass(CString stringClass)
{
    WNDCLASS wndclass;

    wndclass.style = CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = AfxGetInstanceHandle();
    wndclass.hIcon = LoadIcon(NULL, _T(""));
    wndclass.hCursor = LoadCursor(NULL,  IDC_ARROW );
    wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = stringClass;

    if( !AfxRegisterClass( &wndclass ))
      {
        AfxMessageBox("Error Registering Class\n");
        return FALSE;
      }

	return TRUE;
}

//
//   Since the Window created at run-time cannot have its 
//   Messages in the Message Map of the Application , we
//   have the following procedure , which takes care
//   of the messages in the newly created Window
//
//   Note : WndProc is passed as the Windows procedure
//          to the above Registered Class as 
//
//          wndclass.lpfnWndProc = WndProc;
//
//   This procedure allows us to Destroy the Created
//   Window which would otherwise not be possible

LRESULT FAR PASCAL WndProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
	if(Message == WM_COMMAND)
	{
		DestroyWindow(hWnd);
	}

	return (DefWindowProc(hWnd, Message, wParam, lParam)); 
}
//
// If the Class was registered successfully
// we proceed with creating the Window
// With the CreateWindowEx function as below
//
//  The following variables passed to CreateWindowEx
//  contain information as selected on the Formview
//  dExtendedStyle  = Extended Window Styles
//  m_EditCaption   = Window Caption
//  dStyle          = Style of The Window
//  x               = Left Position of the Window
//  y               = Top Position of the WIndow
//  nWidth          = Width of the Window
//  nHeight         = Height of the Window
//  hMenu           = Menu (if Checked)
//                    (Menu is created in the Resources)
//

 
hWndMain = CreateWindowEx(
                dExtendedStyle,
                szClassName,           
                m_EditCaption,         
                dStyle,
                x,                     
                y,
                nWidth,                
                nHeight,                  
                this->m_hWnd,  
                hMenu,                    
                AfxGetInstanceHandle(), 
                NULL);                  

 if(!hWndMain)
 {
	AfxMessageBox("Error Creating Window");
	return;
 }

//
//
//  We create a button on the newly 
//  created Window , to enable us to close
//  the Window in case the created Window 
//  did not have the Menu option enabled or
//  Window cannot have a Menu as a Standard
//
//

HWND hwndBtn = CreateWindow(_T("BUTTON"),
                            _T("&Close"), 
                            WS_VISIBLE|
                            WS_CHILD|
                            BS_DEFPUSHBUTTON, 
                            30,20,90,30,
                            hWndMain,
                            (HMENU)ID_CLOSE_BUTTON, 
                            NULL,
                            NULL); 

//
//  Finally we Display the Window as shown below
//

 ::ShowWindow(hWndMain, SW_SHOW);

Happy Windowing !!!!!


License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Barretto VN

India India
Nothing to boast about

Comments and Discussions

 
GeneralAttach a class to new window Pinmemberdholshou19-Mar-07 9:34 
GeneralGood Job! Pinmemberdearlmh7619-Apr-06 18:04 
Generalwindow in a dialog PinsussAnonymous25-Aug-04 6:03 
GeneralRating PinmemberAndrew Lawrence27-Feb-04 13:06 
GeneralRe: Rating PinmemberBarretto VN29-Feb-04 21:42 
GeneralZip File missing PinmemberMarcoNedwig14-Aug-02 1:16 
GeneralGood Start Pinmemberyarp9-Aug-02 21:06 
GeneralNot a race PinmemberTodd Jeffreys9-Aug-02 14:31 
GeneralProgressing... PinmemberAndreas Saurwein9-Aug-02 7:50 
GeneralRe: Progressing... PinsussAnonymous9-Aug-02 9:03 
GeneralPoor PinsussJohn Simpsons9-Aug-02 6:15 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.141223.1 | Last Updated 18 Aug 2002
Article Copyright 2002 by Barretto VN
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid