• 孙鑫视频---对话框应用程序


    逃跑按钮的巧妙实现。如何制作属性页对话框和向导对话框,融合讲解组合框(如何调整组合框的大小)、列表框、单选按钮、复选按钮等常用对话框控件的多种使用方法。

    如何限制用户在不满足设定的条件时切换到其他属性页和向导页。 

    做一个逃跑按钮,需求当鼠标点击按钮,按钮会自定移动到另外一个位置

    1. 新增按钮

       

     2. 做两个一样的按钮,当鼠标移动按钮上时,首先让其中一个按钮隐藏,另一个按钮显示出来

         鼠标移动的消息由按钮来捕获

         添加新类

         

    3. 使两个按钮控件分别关联一个成员变量

       

    4. 增加控件消息处理

        MW__MOUSEMOVE

        让一个控件隐藏,另一个按钮显示

        需要知道这个控件所关联的对象的内存地址,这样就可以调用内部成员函数showWindow将它显示出来

        获取指针:

                        在CWeiXinBtn中定义成员变量,类型是CWeiXinBtn这个类的指针,在这个类中有了一个成员变量,它的类型就是CWeiXinBtn*

                        

    当我们用CWeiXinBtn这个类去实例化两个对象的时候,每个对象它们的内部都会有这个成员变量,它的类型就是CWeiXinBtn*

    将这两个对象的地址互相交换一下,这样的话对于每一个对象内部的指针就保存了对方对象的首地址

     

    用CWeiXinBtn实例化了两个对象m_btn1,m_btn2

    在其中一个对象的内部,定义了一个CWeiXinBtn这个类的指针,保存了第二个对象的首地址

    因为在CWeiXinBtn这个类中所定义了一个指针变量,它所实例化的每一个对象都会有这样一个指针变量,可以将m_btn1的首地址赋给m_btn2的指针变量

    相当于这两个对象互相交换了自己的首地址,当m_btn1隐藏的时候就可以利用指针变量去调用showWindow传递一个XX,让m_btn2显示出来

    OnInitDialog()用来显示消息要显示之前发送的

    // TODO: 在此添加额外的初始化代码
        m_btn1.m_pBtn=&m_btn2;
        m_btn2.m_pBtn=&m_btn1;
    void CWeiXinBtn::OnMouseMove(UINT nFlags, CPoint point)
    {
        // TODO: 在此添加消息处理程序代码和/或调用默认值
        ShowWindow(SW_HIDE);//让自己隐藏起来
        m_pBtn->ShowWindow(SW_SHOW);//将对方显示出来
        CButton::OnMouseMove(nFlags, point);
    
    }

    然后将其中按钮Visible的属性改成false(将其中一个按钮隐藏)

    属性表单和向导的创建

    创建属性页资源

    更改id和属性名

                 

    为每个属性对话框生成三个类,基类选择CPropetypage

    创建属性表单CpropSheet

    在属性表单的构造函数之中利用AddPage将三个属性对象增加到属性表单当中

    void CPropView::OnPropertysheet()
    {
        // TODO: 在此添加命令处理程序代码
        CPropSheet propSheet("属性表单程序");
        propSheet.DoModal();
    
    }

    VS2010里的class wizard里没有WM_INITDIALOG消息? vs2003后面就取消了,直接添加BOOL OnInitDialog();就可以了

    对获取的数据进行处理

    {
        CPropDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        if (!pDoc)
            return;
    
        // TODO: 在此处为本机数据添加绘制代码
        CFont font;
        font.CreatePointFont(300,"华文行楷");
        CFont *pOldFont;
        pOldFont=pDC->SelectObject(&font);
    
        CString strTemp;
        strTemp="职业:";
        switch(m_iOccupation)
        {
        case 0:
            strTemp+="程序员";
            break;
        case 1:
            strTemp+="系统工程师";
            break;
        case 2:
            strTemp+="项目经理";
            break;
        default:
            break;
        }
        pDC->TextOut(0,0,strTemp);
        strTemp="工作地点:";
        strTemp+=m_strWorkAddr;
    
        TEXTMETRIC tm;
        pDC->GetTextMetrics(&tm);
        pDC->TextOut(0,tm.tmHeight,strTemp);
    
        strTemp="兴趣爱好:";
        
        if(m_bLike[0])
        {
            strTemp+="足球";
        }
        if(m_bLike[1])
        {
            strTemp+="篮球";
        }
        if(m_bLike[2])
        {
            strTemp+="排球";
        }
        if(m_bLike[3])
        {
            strTemp+="游泳";
        }
        pDC->TextOut(0,tm.tmHeight*2,strTemp);
        strTemp="薪资水平:";
        strTemp+=m_strSalary;
    
        pDC->TextOutA(0,tm.tmHeight*3,strTemp);
        pDC->SelectObject(pOldFont);
    }
  • 相关阅读:
    hive笔记
    hive数据倾斜的解决办法
    Kafka笔记7
    kafka笔记6
    Kafka笔记5
    kafka笔记4(2)
    kafka笔记4
    Kafka笔记3
    kafka笔记2
    kafka笔记1
  • 原文地址:https://www.cnblogs.com/yangyuqing/p/10272717.html
Copyright © 2020-2023  润新知