实现对话框的伸缩

实现对话框的伸缩

 

1)右边的伸缩(打开程序就显示收缩

//在对话框上添加一个分隔符,表示要切割的部分(用图像控件来代替,拉成一条线)

//改变它的属性:ID:IDC_SEPARATOR 并取消Visible的复选项 Styles:选择Sunken使成为下陷的状态

//绿色部分代码使程序启动即可隐藏不想显示的对话框部分

Neusoft Media PlayerDlg.h

class CNeusoftMediaPlayerDlg : public CDialog

{

。。。。。。。。。。。。。。

//jichk added for dynamic dialog rect begin

CSize  m_szFullModeWndRect;//the dialog raw rect

CSize  m_szShrinkModeWndRect;//the dialog raw rect

BOOL m_bFirstPaint;     //if is the first time to paint the dialog

//jichk added for dynamic dialog rect end

。。。。。。。。。。。。。。。。。

}

BOOL CNeusoftMediaPlayerDlg::OnInitDialog()

{

………………

//在调用皮肤函数之后

//jichk added for dynamic dialog rect begin

m_bFirstPaint = TRUE;

//jichk added for dynamic dialog rect end

……………………

}

void CNeusoftMediaPlayerDlg::OnPaint()

{

……………………………..

 

//jichk added for dynamic dialog rect begin

 

//你的皮肤控件在对话框初始化(OnInitDialog)的时候还没有开始起作用,

//OnInitDialog中取得的dialog大小是不正确的,因为还没有计算皮肤所占的大小

//因此只是在paint中取得一次带皮肤的dialog的大小并保存

if (m_bFirstPaint)

{

        CRect r;

        CRect rectSeparator;

        GetWindowRect(&r);//获得窗口的矩形区域

        m_szFullModeWndRect.cx = r.Width();

        m_szFullModeWndRect.cy = r.Height();

 

        GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);

        m_szShrinkModeWndRect.cx = rectSeparator.right - r.left;

        m_szShrinkModeWndRect.cy = r.Height();

 

        SetWindowPos(NULL, 0, 0, m_szShrinkModeWndRect.cx, m_szShrinkModeWndRect.cy,

               SWP_NOMOVE | SWP_NOZORDER);

        m_bFirstPaint = FALSE;

}

//jichk added for dynamic dialog rect end

}

void CNeusoftMediaPlayerDlg::OnBtnMovie()

{

    // TODO: Add your control notification handler code here

    CString str;

    if(GetDlgItemText(IDC__BTN_MOVIE,str),str=="电影>>")

    {

       SetDlgItemText(IDC__BTN_MOVIE,"电影<<");

    }

    else

    {

       SetDlgItemText(IDC__BTN_MOVIE,"电影>>");

    }//这段代码实现控件点击时名称相互改变

 

    //jichk modified for dynamic dialog rect begin

    //static CRect rectLarge;//保存还原后的对话框的尺寸

    //static CRect rectSmall;// 保存切割后的对话框的尺寸

   

    //if(rectLarge.IsRectNull())//判断矩形区域是否为空

    //{

    //  CRect rectSeparator;

    //  GetWindowRect(&rectLarge);//获得窗口的矩形区域

       //GetDlgItem(IDC_SEPARATOR)->GetWindowRect(&rectSeparator);//获得图像控件的矩形区域

       //切割后的矩形区域

       //rectSmall.left=rectLarge.left;//左上角的横坐标

       //rectSmall.top=rectLarge.top;

       //rectSmall.right=rectSeparator.right;

       //rectSmall.bottom=rectLarge.bottom;

    }

    //if(str=="电影>>")

    //{

       //SetWindowPos(NULL,0,0,rectSmall.Width(),rectSmall.Height(),

           SWP_NOMOVE | SWP_NOZORDER);

    //}

    //else

    //{

    //  SetWindowPos(NULL,0,0,rectLarge.Width(),rectLarge.Height(),

    //      SWP_NOMOVE | SWP_NOZORDER);

    //}

    if(str=="电影<<")

    {

       SetWindowPos(NULL, 0, 0, m_szShrinkModeWndRect.cx, m_szShrinkModeWndRect.cy,

           SWP_NOMOVE | SWP_NOZORDER);

    }

    else

    {

       SetWindowPos(NULL, 0, 0, m_szFullModeWndRect.cx, m_szFullModeWndRect.cy,

           SWP_NOMOVE | SWP_NOZORDER);

    }

    //jichk modified for dynamic dialog rect end

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值