实现对话框的伸缩
(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
}