• 窗口样式


    新: 作品简介: 本文演示了通过在显示的表单视图中选择各种选项,在运行时创建不同样式窗口的技术 特点: 您可以创建以下类型的窗口 重叠 孩子 弹出 标准对话框 您还可以选择创建菜单 窗口也可以创建 最小化 Maxmiized 规模 窗口可以有以下按钮 最大化 最小化 系统菜单 你可以用默认的大小和默认的位置创建窗口,或者指定左边,顶部的值,以及指定的宽度和高度 注意: 如果您继续单击“创建窗口”按钮,窗口将创建一个在另一个多次,您继续单击,并将不得不关闭每个窗口,通过单击关闭按钮多次 关于代码: 隐藏,收缩,复制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);
    }

    让我们看看在您选择了必要的选项并单击“创建窗口”按钮之后,在运行时创建窗口的代码 隐藏,收缩,复制Code

    //
    //  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
    ");
            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);
    </code>

    窗口快乐! ! 本文转载于:http://www.diyabc.com/frontweb/news8341.html

  • 相关阅读:
    MySQL架构优化:定时计划任务与表分区
    关于mysql 删除数据后物理空间未释放(转载)
    Mysql删除数据后磁盘空间未释放的解决办法【转】
    Mysql 自动备份脚本
    迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】
    Redis学习笔记(二)-key相关命令【转载】
    干货分享:MySQL之化险为夷的【钻石】抢购风暴【转载】
    Apache 实现ProxyPass转发URL到Tomcat并实现http自动转https【转载】
    业务零影响!如何在Online环境中巧用MySQL传统复制技术【转】
    VNC轻松连接远程Linux桌面
  • 原文地址:https://www.cnblogs.com/Dincat/p/13467765.html
Copyright © 2020-2023  润新知