子对话框 改变大小

jszhuweiwei 2009-09-25 11:23:26
我在住对话框中用picture控件IDC_PLACEHOLDER,装载子对话框IDD_MODECALL
CRect rc;
GetDlgItem(IDC_PLACEHOLDER)->GetWindowRect(rc);
m_modecall=new CModecalldlg;
m_modecall->Create(IDD_MODECALL,this);
ScreenToClient(&rc);
m_modecall->MoveWindow(rc);
m_modecall->ShowWindow(SW_SHOW);
现在需要主对话框改变大小时子对话框相应的改变大小,现在我在主对话框的onsize函数中,利用IDC_PLACEHOLDER的MoveWindow()函数改变picture控件的大小,但是子对话框的大小并没有改变,请问是什么原因?有什么解决办法?
...全文
151 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
stjay 2009-09-25
  • 打赏
  • 举报
回复
m_modecall->Create(IDD_MODECALL,this);
此this是主对话框的,而不是picture控件的

现在又将子对话框IDD_MODECALL重叠在picture控件上

感觉这个picture控件IDC_PLACEHOLDER有点多余...


在主对话框的OnSize函数

OnSize(UINT nType, int cx, int cy)
{
m_modecall->MoveWindow(x, y, cx, cy,FALSE);//按需修改
}
feilinhe 2009-09-25
  • 打赏
  • 举报
回复
主对话框的OnSize里的Picture控件调整大小后面加上改变子对话框大小的代码,类似于下面的
CRect rc;
ScreenToClient(&rc);
m_modecall->MoveWindow(rc);
jszhuweiwei 2009-09-25
  • 打赏
  • 举报
回复
对什么操作MoveWindow啊,能说的详细一点吗?m_modecall吗?[Quote=引用 2 楼 tr0j4n 的回复:]
先Show再MoveWindow
[/Quote]
jszhuweiwei 2009-09-25
  • 打赏
  • 举报
回复
这是在住对话框的初始化函数中,装载了一个子对话框CModecalldlg对话框
[Quote=引用 1 楼 fandh 的回复:]
楼主好像重新创建了一个CModecalldlg对话框!
这段代码是那个函数里面的?
[/Quote]
RichyMong 2009-09-25
  • 打赏
  • 举报
回复
你写相应的代码改变子对话框大小啊
if((m_modecall != NULL) && (m_modecall->GetSafeHwnd())) 改变位置;
MoXiaoRab 2009-09-25
  • 打赏
  • 举报
回复
先Show再MoveWindow
fandh 2009-09-25
  • 打赏
  • 举报
回复
楼主好像重新创建了一个CModecalldlg对话框!
这段代码是那个函数里面的?
bragi523 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jszhuweiwei 的回复:]
还是不行,一样的出错。
引用 11 楼 bragi523 的回复:
初始化的时候
m_modecall = NULL;

[/Quote]

手误
if(!m_modecall)
jszhuweiwei 2009-09-25
  • 打赏
  • 举报
回复
还是不行,一样的出错。
[Quote=引用 11 楼 bragi523 的回复:]
初始化的时候
m_modecall = NULL;
[/Quote]
bragi523 2009-09-25
  • 打赏
  • 举报
回复
初始化的时候
m_modecall = NULL;
bragi523 2009-09-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jszhuweiwei 的回复:]
我在onsize中调用
m_modecall->MoveWindow(100, 100, 400, 400,FALSE);
编译没有错误,运行时.....exe遇到问题需要关闭
怎么办?
[/Quote]
加保护
if(m_modecall)
{
m_modecall->MoveWindow(100, 100, 400, 400,FALSE);
}
因为onsize在create之前就会调用
jszhuweiwei 2009-09-25
  • 打赏
  • 举报
回复
我在onsize中调用
m_modecall->MoveWindow(100, 100, 400, 400,FALSE);
编译没有错误,运行时.....exe遇到问题需要关闭
怎么办?
jszhuweiwei 2009-09-25
  • 打赏
  • 举报
回复
你的建议m_modecall->Create(IDD_MODECALL,this); 改成什么样的才是对pcture控件呢
[Quote=引用 7 楼 stjay 的回复:]
m_modecall->Create(IDD_MODECALL,this);
此this是主对话框的,而不是picture控件的

现在又将子对话框IDD_MODECALL重叠在picture控件上

感觉这个picture控件IDC_PLACEHOLDER有点多余...


在主对话框的OnSize函数

OnSize(UINT nType, int cx, int cy)
{
m_modecall->MoveWindow(x, y, cx, cy,FALSE);//按需修改
}
[/Quote]

15,978

社区成员

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

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