15,978
社区成员
发帖
与我相关
我的任务
分享
BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或样式
if( !CMDIChildWndEx::PreCreateWindow(cs) )
return FALSE;
return TRUE;
}
还是:
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL);
return TRUE;
}
加入:
cs.style |=WS_CLIPCHILDREN;
都无效,拖动视图窗口时,还是闪烁的厉害!
看来我得好好研究哈 MFC的MDI结构了!
int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWndEx::OnCreate(lpCreateStruct) == -1)
return -1;
// 创建一个视图以占用框架的工作区
if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
{
TRACE0("未能创建视图窗口\n");
return -1;
}
return 0;
}
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
m_splitterWnd.CreateStatic( this, 1, 2 );
m_splitterWnd.CreateView( 0, 0, RUNTIME_CLASS(CViewLeft), CSize(0,0), pContext );
m_splitterWnd.CreateView( 0, 1, RUNTIME_CLASS(CViewRight), CSize(0,0), pContext);
m_splitterWnd.SetColumnInfo( 0, 250, 10 );
return TRUE;
return CMDIChildWndEx::OnCreateClient(lpcs, pContext);
}
在OnCreate中创建的View: m_wndView
和OnCreateClient中创建的分割窗口m_splitterWnd;
和 CChildFrame 三者是什么关系?