我看过《深入浅出MFC》里面说MDI下这样完成: (可我不知道SDI下怎么办,CChildFrame,pcontext在那里?不胜感激,谢谢!)
BOOL CChildFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
// 產生靜態分裂視窗,橫列為 1,縱行為 2。
m_wndSplitter1.CreateStatic(this, 1, 2);
// 產生分裂視窗的第㆒個窗口(標號 0,0)的 view 視窗,採用 CTextView。
m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CTextView),
CSize(300, 0), pContext);
// 產生第㆓個分裂視窗,橫列為2 縱行為1。位在第㆒個分裂視窗的(0,1)窗口
m_wndSplitter2.CreateStatic(&m_wndSplitter1, 2, 1,
WS_CHILD | WS_VISIBLE, m_wndSplitter1.IdFromRowCol(0, 1));
// 產生第㆓個分裂視窗的第㆒個窗口(標號 0,0)的 view 視窗,採用 CBarView。
m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CBarView),
CSize(0, 150), pContext);
// 產生第㆓個分裂視窗的第㆓個窗口(標號 1,0)的 view 視窗,採用 CGraphView。
m_wndSplitter2.CreateView(1, 0, pContext->m_pNewViewClass,
CSize(0, 0), pContext);
// 設定 active pane
SetActiveView((CView*)m_wndSplitter1.GetPane(0,0));
return TRUE;
}
BOOL CChildFrame::OnCreateClient( LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
// 產生靜態分裂視窗,橫列為 1,縱行為 2。
m_wndSplitter1.CreateStatic(this, 1, 2);
// 產生分裂視窗的第㆒個窗口(標號 0,0)的 view 視窗,採用 CTextView。
m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CTextView),
CSize(300, 0), pContext);
// 產生第㆓個分裂視窗,橫列為2 縱行為1。位在第㆒個分裂視窗的(0,1)窗口
m_wndSplitter2.CreateStatic(&m_wndSplitter1, 2, 1,
WS_CHILD | WS_VISIBLE, m_wndSplitter1.IdFromRowCol(0, 1));
// 產生第㆓個分裂視窗的第㆒個窗口(標號 0,0)的 view 視窗,採用 CBarView。
m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CBarView),
CSize(0, 150), pContext);
// 產生第㆓個分裂視窗的第㆓個窗口(標號 1,0)的 view 視窗,採用 CGraphView。
m_wndSplitter2.CreateView(1, 0, pContext->m_pNewViewClass,
CSize(0, 0), pContext);
// 設定 active pane
SetActiveView((CView*)m_wndSplitter1.GetPane(0,0));
return TRUE;
}
解决方案 »
- 服务段开启后, 客户端先断线,随后立即点击按钮区连接,发现无法连接上。
- 请问 如何在对话框上创建视图 救急
- MFC中向导默认生成的MDI程序,如果让视图在打印预览的时候最大化,其它时候按创建的尺寸显示(非最大化)?
- P_conn->open 打不开为什么啊?
- 安装了Linux后,以前在WINDOWS下工作的打印机、扫描仪、显示卡不能工作了,怎么办?
- System.Data.SqlClient.SqlException: Transaction (Process ID 12) was deadlocked on lock resources with another process
- 哎呀!各位大哥!小弟在vc中作了mark,却不知如何去掉?
- 请问如何监控打印机的打印队列?
- 屏幕大小方面的问题
- 代码!!
- ActiveX如何调用引用该ActiveX的网页中的JavaScript函数
- InstallShield的两个基本问题。
{
// TODO: Add your specialized code here and/or call the base class
if(!m_wndSplitter.CreateStatic(this,2,1))
return FALSE;
if(!m_wndSplitter.CreateView(1,0,
RUNTIME_CLASS(CINFView),
CSize(150,100),
pContext)
||
!m_wndSplitter.CreateView(0,0,
RUNTIME_CLASS(CPFView),
CSize(900,550),
pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}
我是要用4个View, 希望他们的大小锁定,不知道用什么函数,还有就是View的边框在哪里修改?我现在MFC很菜的,希望各位大侠不要见笑:)明天结分。
我只需要一个2*2的View
并且它们的大小一样就可以了。
{
// TODO: Add your specialized code here and/or call the base class
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN); if(!m_wndSplitter.CreateStatic(this,2,2))
return FALSE;
if(!m_wndSplitter.CreateView(0,0,
RUNTIME_CLASS(CYOURView1),
CSize(cx/2,cy/2),
pContext)
||
!m_wndSplitter.CreateView(0,1,
RUNTIME_CLASS(CYOURView2),
CSize(cx/2,cy/2),
pContext))
||
!m_wndSplitter.CreateView(1,0,
RUNTIME_CLASS(CYOURView3),
CSize(cx/2,cy/2),
pContext))
||
!m_wndSplitter.CreateView(1,1,
RUNTIME_CLASS(CYOURView4),
CSize(cx/2,cy/2),
pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}