CreateClient时我把MDI的子窗体用CSplitterWnd分割,并且分别放入一个Dialog,对应的类是CDecisionView和CDecodingView:
m_wndSplitter.CreateStatic(this,2,1);
m_wndSplitter.CreateView( 0, 0,RUNTIME_CLASS(CDecisionView), CSize(850,350), pContext);
m_wndSplitter.CreateView( 1, 0, RUNTIME_CLASS(CDecodingView), CSize(850,300), pContext);
此时运行一切正常
如果我想在MainFrame改变大小时,相应的ChildFrame中的分割线仍在正中间位置,并且,其中的两个dialog大小自动resize为ChildFrame中为它分割的这么大,应该如何做呢?
我用MoveWindow不行,甚至放在一个按钮里触发改变DIALOG大小的代码都不行,编译通过,一执行就应用程序出错退出,相应代码如下:
CRect rect;
GetDlgItem(IDD_DECISIONVIEW)->GetWindowRect( &rect );
ScreenToClient( &rect );
rect.right -= 1;
rect.bottom -= 1;
GetDlgItem(IDD_DECISIONVIEW)->MoveWindow(rect);期待您的回答,谢谢!
m_wndSplitter.CreateStatic(this,2,1);
m_wndSplitter.CreateView( 0, 0,RUNTIME_CLASS(CDecisionView), CSize(850,350), pContext);
m_wndSplitter.CreateView( 1, 0, RUNTIME_CLASS(CDecodingView), CSize(850,300), pContext);
此时运行一切正常
如果我想在MainFrame改变大小时,相应的ChildFrame中的分割线仍在正中间位置,并且,其中的两个dialog大小自动resize为ChildFrame中为它分割的这么大,应该如何做呢?
我用MoveWindow不行,甚至放在一个按钮里触发改变DIALOG大小的代码都不行,编译通过,一执行就应用程序出错退出,相应代码如下:
CRect rect;
GetDlgItem(IDD_DECISIONVIEW)->GetWindowRect( &rect );
ScreenToClient( &rect );
rect.right -= 1;
rect.bottom -= 1;
GetDlgItem(IDD_DECISIONVIEW)->MoveWindow(rect);期待您的回答,谢谢!
解决方案 »
- CFileDialog dlg读取图像文件
- 郁闷的error LNK2001: unresolved external symbol,请大家帮忙..
- 再问一个API问题
- CString如何需要进行不考虑大小写的查找FindNoCase和替换FindReplaceNoCase
- 高分征询语音压缩算法
- 当我调用自己编写的一个DLL文件时一切正常,但当我用PSAPI.DLL时,却始终得不到它的句柄,不知什么原因?
- 怎样调用一个图象列表里的图给CSATIC控件?
- CListCtrl怎么设某行为选中,即蓝色?
- 有必要学vc.net或c#吗?
- 以VC为开发语言的MCSD到底值多少钱?
- 如何使我的程序在启动时不创建一个新文档?
- 请教:接口的问题
以上代码加在哪里的
IDD_DECISIONVIEW是其中一个DIALOG的ID,我暂时把这段代码加在一个按钮里,目的是测试这个内嵌的DIALOG能否RESIZESoLike(思危):
那如何设置内嵌的DIALOG的大小呢,我只要一用MOVEWINDOW或SETWINDOWSPOS这类函数,如上代码,就应用程序出错退出raymonzhao():
关键还是要把DIALOG能改变大小,对于这种内嵌的,不知道如何搞定谢谢各位的关注,希望能继续得到你们的帮助
void CChildFrame::OnSize(UINT nType, int cx, int cy)
{
CMDIChildWnd::OnSize(nType, cx, cy); CRect rect;
GetWindowRect( &rect );
if( m_bSplitterCreated ) // m_bSplitterCreated set in OnCreateClient
{
m_wndSplitter.SetColumnInfo(0, rect.Width()/2, 10);
m_wndSplitter.SetColumnInfo(1, rect.Width()/2, 10);
m_wndSplitter.RecalcLayout();
}
}