【大问题】一个关于使对话框大小自动随控件大小的改变而改变

foshanzhuifeng 2010-05-03 05:05:25
我在对话框中插入AactiveMovie控件,播放后,影片画面总是被覆盖了一部分,为了使对话框大小自动随控件大小的改变而改变,参考了一些高人想法,
void CPlayerDlg::MoveMovieWindow()
{
//改变窗口大小以适应控件大小
CRect rc1,rc2,rc3;
//得到ActiveMovie控件大小
m_amovie.GetWindowRect(&rc1);

//保证对话框客户区的宽不小于300象素,高不小于225象素
if(rc1.Width()<300||rc1.Height()<255)
{
rc1.right=rc1.left+300;
rc1.bottom=rc1.top+225;
}

//获得对话框的大小
GetWindowRect(&rc2);

//获得对话框客户区大小
GetClientRect(&rc3);

//改变对话框大小以适应ActiveMovie控件大小
MoveWindow(rc2.left,rc2.top,rc2.Width()-rc3.Width()+rc1.Width(),
rc2.Height()-rc3.Height()+rc1.Height());

//获得控件ActiveMovie的大小
m_amovie.GetWindowRect(&rc1);
GetClientRect(&rc3);

//使ActiveMovie控件在对话框的客户区居中
m_amovie.MoveWindow((rc3.Width()-rc1.Width())/2,
(rc3.Height()-rc1.Height())/2,rc1.Width(),rc1.Height());
}
其中m_amovie是AactiveMovie控件的变量名,每一次运行到m_amovie.GetWindowRect(&rc1)时总是报错,查看了一下获取不到值,但GetWindowRect(&rc2);和 GetClientRect(&rc3);却能获取到值。跪问那位高手能够解决一下???不胜感激~~~~
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 foshanzhuifeng 的回复:]
创建的检查????
[/Quote]
m_amovie类对象关联的控件的窗口句柄有效吗?m_amove.GetSafeHwnd() == NULL ???
尹成 2010-05-04
  • 打赏
  • 举报
回复
    MoveWindow(rc2.left,rc2.top,rc2.Width()-rc3.Width()+rc1.Width(),        
rc2.Height()-rc3.Height()+rc1.Height());

需要放在重绘区
foshanzhuifeng 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
引用 2 楼 foshanzhuifeng 的回复:
创建的检查????

m_amovie类对象关联的控件的窗口句柄有效吗?m_amove.GetSafeHwnd() == NULL ???
[/Quote]

检查了一下,句柄为空!
CRect rc1,rc2,rc3;
//得到ActiveMovie控件大小
m_amovie.FromHandle((HWND)GetDlgItem(IDC_ACTIVEMOVIECONTROL1));
m_amovie.GetWindowRect(&rc1);

但加入获取该窗口句柄的指针,运行结果也还是一样....(劳烦高手帮忙)
foshanzhuifeng 2010-05-03
  • 打赏
  • 举报
回复
创建的检查????
smneo 2010-05-03
  • 打赏
  • 举报
回复
加入m_amovie是否已经创建的检查?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧