我想一个窗口里实现分割窗口的功能,但这个窗口不是从CFrameWnd继承过来,而是由CWnd继承而来的,
我在这个窗口里声明了成员:
CSplitterWnd m_wndSplitter1, m_wndSplitter2;
CWnd *pWnd1, *pWnd2;
在CWorkSpaceAssistDiagnoses::OnCreate(LPCREATESTRUCT lpCreateStruct)里有:
BOOL A = m_wndSplitter1.CreateStatic(this,1,2,WS_CHILD|WS_VISIBLE);
CCreateContext context;
context.m_pCurrentFrame = (CFrameWnd*)this;
context.m_pNewViewClass = RUNTIME_CLASS(CDiseaseInfoWnd);
BOOL b = m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CDiseaseInfoWnd), CSize(0, 0), &context);
BOOL C = m_wndSplitter1.CreateView(0, 1, RUNTIME_CLASS(CDiseaseInfoWnd), CSize(0, 0), &context);
pWnd1 = m_wndSplitter1.GetPane(0, 0);
pWnd2 = m_wndSplitter1.GetPane(0, 1);
因为这个窗口是从另一个窗口里创建里创建的,在调用Create的时候,指定的Size为0,0,所以这里也指定为0;
但是创建后什么也看不到
于是我在void CWorkSpaceAssistDiagnoses::OnSize(UINT nType, int cx, int cy) 里加入了如下代码:
CWnd::OnSize(nType, cx, cy); CRect rect,rect2;
GetClientRect(&rect);
m_wndSplitter1.GetWindowRect(&rect2);
if(pWnd1 != NULL)
{
m_wndSplitter1.MoveWindow(rect.Width()/2,0,(rect.Width()-rect2.Width())/2,rect.Height());
pWnd1->MoveWindow(0,0,rect.Width()/2,rect.Height());
pWnd2->MoveWindow(rect.Width()/2,0,rect.Width()/2, rect.Height());
}
但是只是显示了右边的窗口,而左边的窗口没有显示,而且我发现OnSize的最后两句没有用,去掉了还是那个效果,怎么才能把左边的窗口也显示出来呢
我在这个窗口里声明了成员:
CSplitterWnd m_wndSplitter1, m_wndSplitter2;
CWnd *pWnd1, *pWnd2;
在CWorkSpaceAssistDiagnoses::OnCreate(LPCREATESTRUCT lpCreateStruct)里有:
BOOL A = m_wndSplitter1.CreateStatic(this,1,2,WS_CHILD|WS_VISIBLE);
CCreateContext context;
context.m_pCurrentFrame = (CFrameWnd*)this;
context.m_pNewViewClass = RUNTIME_CLASS(CDiseaseInfoWnd);
BOOL b = m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CDiseaseInfoWnd), CSize(0, 0), &context);
BOOL C = m_wndSplitter1.CreateView(0, 1, RUNTIME_CLASS(CDiseaseInfoWnd), CSize(0, 0), &context);
pWnd1 = m_wndSplitter1.GetPane(0, 0);
pWnd2 = m_wndSplitter1.GetPane(0, 1);
因为这个窗口是从另一个窗口里创建里创建的,在调用Create的时候,指定的Size为0,0,所以这里也指定为0;
但是创建后什么也看不到
于是我在void CWorkSpaceAssistDiagnoses::OnSize(UINT nType, int cx, int cy) 里加入了如下代码:
CWnd::OnSize(nType, cx, cy); CRect rect,rect2;
GetClientRect(&rect);
m_wndSplitter1.GetWindowRect(&rect2);
if(pWnd1 != NULL)
{
m_wndSplitter1.MoveWindow(rect.Width()/2,0,(rect.Width()-rect2.Width())/2,rect.Height());
pWnd1->MoveWindow(0,0,rect.Width()/2,rect.Height());
pWnd2->MoveWindow(rect.Width()/2,0,rect.Width()/2, rect.Height());
}
但是只是显示了右边的窗口,而左边的窗口没有显示,而且我发现OnSize的最后两句没有用,去掉了还是那个效果,怎么才能把左边的窗口也显示出来呢
解决方案 »
- vs2008 做播放器 中Windows Media Player 控件问题 (全过程演示~)
- 请教关于GDI+背景图片覆盖按钮和窗口抖动的问题
- [急切求助]如何设置静态IP和动态IP?
- ODBC数据库插入问题
- 加密后会出现特殊字符,可何加密后成可见的ASCII字符比如字母或数字。而且还能据此解密。(不要具本加密算法)
- 求肋:哪位高手看过 潘爱民 著 的<COM原理与应用>???在线等。。。
- 【在线等!!!】请问如何动态添加带滚动条的ComboBox?
- 50分 求字符串处理函数
- 为什么关闭程序后,在任务栏上仍然存在,要再click一下才能消失?
- vc中,如何对注册表进行操作。谢谢!
- 用API编写TABCONTROL控件怎么就这么难吗??
- 我用API函数改变了磁盘分区表的参数信息,怎样让系统得到通知呢?
你参考一下这个
http://www.51one.net/info/1783865316043621.htm