单文档客户区问题 用分割窗口,从CFormView派生一个类,把其中的一个视图设为该类。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你说的是分割窗口,实现它要用CSplitterWnd,在MainFrame的OnCreateClient中创建分割视图;还有类似对话框的界面那是FormView,你可以在资源视图下新建一个FormView,在上面创建编辑框等控件。 多看看书,,这样才能系统的学到东西。MFC Windows程序设计,孙鑫的VC6 深入详解都是不错的书籍。 CSplitterWnd 网上有例子,到VCkbase看看 |view2|view1 |_____| |view3|______|_____|BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){ // TODO: 在此添加专用代码和/或调用基类 BOOL bCreateSuccess; bCreateSuccess = m_wndHorSplitter.CreateStatic(this, 1, 2); //水平方向切成一行两列 if (!bCreateSuccess) { TRACE0("Failed to Split HorizontalSplitter Window\n"); return FALSE; } bCreateSuccess = m_wndVerSplitter.CreateStatic(&m_wndHorSplitter, 2, 1, WS_CHILD|WS_VISIBLE, m_wndHorSplitter.IdFromRowCol(0,1)); //将第二列再切成两行 if (!bCreateSuccess) { TRACE0("Failed to Split VerticalSplitter Window\n"); return FALSE; } CRect rcClient; GetClientRect(&rcClient); int cxRect = rcClient.Width(); int cyRect = rcClient.Height(); bCreateSuccess = m_wndHorSplitter.CreateView(0, 0, RUNTIME_CLASS(CView1), CSize (cxRect/5,cyRect), pContext); if (!bCreateSuccess) { TRACE0("Failed to Create View1\n"); return FALSE; } bCreateSuccess = m_wndVerSplitter.CreateView(0, 0, RUNTIME_CLASS(CView2), CSize(cxRect*4/5,cyRect*2/3), pContext); if (!bCreateSuccess) { TRACE0("Failed to Create View2\n"); return FALSE; } bCreateSuccess = m_wndVerSplitter.CreateView(1, 0, RUNTIME_CLASS(CView3), CSize(cxRect*4/5,cyRect*1/3), pContext); // if (!bCreateSuccess) { TRACE0("Failed to Create View3\n"); return FALSE; } m_bCreateSplitter = TRUE; return TRUE;} 请问C++中有没有将字符串转换为公式的函数或者类? 关于在不同picture控件里边显示不同图片的提问 Dialog的classname和windowname 不知道我什么地方错了,大家来看看 菜问题:如何定义一个整个工程都有效的宏? 关于与浏览器的通信问题 关于L的使用 一个让我挠头的问题 超级怪的问题,请大家踊跃讨论 请教斑竹TAPI3的小问题,急! 如何实现程序运行时不在任务管理器的应用程序列表中显示? 用 GetDc(0) 抓屏,不能抓到半透明的窗體呢?
还有类似对话框的界面那是FormView,你可以在资源视图下新建一个FormView,在上面创建编辑框等控件。
MFC Windows程序设计,孙鑫的VC6 深入详解都是不错的书籍。
view1 |_____|
|view3|
______|_____|BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
BOOL bCreateSuccess; bCreateSuccess = m_wndHorSplitter.CreateStatic(this, 1, 2); //水平方向切成一行两列
if (!bCreateSuccess)
{
TRACE0("Failed to Split HorizontalSplitter Window\n");
return FALSE;
} bCreateSuccess = m_wndVerSplitter.CreateStatic(&m_wndHorSplitter, 2, 1,
WS_CHILD|WS_VISIBLE, m_wndHorSplitter.IdFromRowCol(0,1)); //将第二列再切成两行
if (!bCreateSuccess)
{
TRACE0("Failed to Split VerticalSplitter Window\n");
return FALSE;
} CRect rcClient;
GetClientRect(&rcClient);
int cxRect = rcClient.Width();
int cyRect = rcClient.Height(); bCreateSuccess = m_wndHorSplitter.CreateView(0, 0, RUNTIME_CLASS(CView1), CSize (cxRect/5,cyRect), pContext);
if (!bCreateSuccess)
{
TRACE0("Failed to Create View1\n");
return FALSE;
} bCreateSuccess = m_wndVerSplitter.CreateView(0, 0, RUNTIME_CLASS(CView2), CSize(cxRect*4/5,cyRect*2/3), pContext);
if (!bCreateSuccess)
{
TRACE0("Failed to Create View2\n");
return FALSE;
} bCreateSuccess = m_wndVerSplitter.CreateView(1, 0, RUNTIME_CLASS(CView3), CSize(cxRect*4/5,cyRect*1/3), pContext); //
if (!bCreateSuccess)
{
TRACE0("Failed to Create View3\n");
return FALSE;
}
m_bCreateSplitter = TRUE;
return TRUE;
}