zoukankan      html  css  js  c++  java
  • 窗口的伸缩功能

    一、先来看看结构

    二、设计

       1、设计一个成员函数,实现伸缩功能。

        其目的:

        •  初始化时可以被初始化函数调用
        •    点击按钮响应时可以被按钮函数调用

      2、相应的是,这时也必须设计一个成员变量,保存伸缩状态。其目的与设计成员函数相似。

    三、实现

      1、声明:

    public:
        afx_msg void OnBnClickedBtnNetSetting();
        void ExtendDialog(bool &bExtend);
    private:
        bool m_bExtend; 

       2、初始化成员变量:

    m_bExtend = false;

      3、伸缩函数的定义:

    void CMyChatRoomDlg::ExtendDialog(bool &bExtend)
    {
        static CRect largeRect;
        static CRect smallRect;
        static CRect largeFrameRect;
        static CRect smallFrameRect;
        CRect tempRect;
    
        if (largeRect.IsRectEmpty())
        {
            GetWindowRect(&largeRect);
            GetDlgItem(IDC_STATIC_SEPERATOR)->GetWindowRect(&tempRect);
            smallRect = largeRect;
            smallRect.right = tempRect.right;
    
            GetDlgItem(IDC_STATIC_CHATROOM)->GetWindowRect(&largeFrameRect);
            smallFrameRect = largeFrameRect;
            smallFrameRect.right = tempRect.right -20;
        }
    
    
        if (!bExtend)
        {
            SetWindowPos(NULL,0,0,smallRect.Width(),smallRect.Height(),SWP_NOMOVE|SWP_NOZORDER);
            GetDlgItem(IDC_STATIC_CHATROOM)->SetWindowPos(NULL,0,0,smallFrameRect.Width(),smallFrameRect.Height(),SWP_NOMOVE|SWP_NOZORDER);
            bExtend = true;
        }
        else
        {
            SetWindowPos(NULL,0,0,largeRect.Width(),largeRect.Height(),SWP_NOMOVE|SWP_NOZORDER);
            GetDlgItem(IDC_STATIC_CHATROOM)->SetWindowPos(NULL,0,0,largeFrameRect.Width(),largeFrameRect.Height(),SWP_NOMOVE|SWP_NOZORDER);
            bExtend = false;
        }
    }

      4、调用:

      1.  初始化函数调用伸缩函数:
        ExtendDialog(m_bExtend);
      2.    点击按钮函数调用伸缩函数:

        void CMyChatRoomDlg::OnBnClickedBtnNetSetting()
        {
            // TODO: 在此添加控件通知处理程序代码
            
            ExtendDialog(m_bExtend);
            
        }


         

    总结:

      1、当一个功能在多个地方需要被使用时,首先设计时就得将其单独封装起来,以后实践中,我得注意。

      2、当一个变量被多个函数所使用,最好将其全局化。

  • 相关阅读:
    开发日记1
    探索需求2
    探索需求1
    周总结8
    周总结7
    周总结6
    周总结5
    周总结4
    周总结3
    周总结2
  • 原文地址:https://www.cnblogs.com/aoguren/p/3188707.html
Copyright © 2011-2022 走看看