MFC 关于浮动窗口停靠的有关问题 急
MFC 关于浮动窗口停靠的问题 急急急!!!
在对话框上创建派生于CFrameWndEx的CMainFrame,再以CMainFrame为父窗口创建派生于CDockablePane的浮动属性页,创建成功后,当属性页拖动到停靠点(停靠点就是当拖动浮动窗口时界面中出现的用于提示上下左右方向停靠的小正方形区域)时程序就出错,跟踪代码显示在停靠时获取的父窗口指针为空。但是将浮动窗口拖动的其他地方就没问题,或者直接点击右键菜单上的停靠,浮动页也没问题可以正常停靠。 神马问题那,高手帮忙!!!
------解决方案--------------------
我觉得你可以创建一个SDI工程,View用CFormView,去掉工具栏和菜单栏,就和Dialog差不多了,这个时候用CDockablePane就不会有什么问题了。
------解决方案--------------------
我在CMainFrame中创建该窗口;
相关定义:
我这个随意拖动!
------解决方案--------------------
你这个问题应该是没有连接到停靠窗口
创建可停靠的窗口必须
xxxView.Create(...)
xxxView.EnableDocking(CBRS_ALIGN_ANY);
pMain->DockPane(&xxxView);//pMain为最顶层窗口
------解决方案--------------------
lz你是否哪里没有弄对,我测试一下,下面代码创建的可停靠视图怎么拖动都没有问题
void CMainFrame::OnTestTestdockview()
{
// TODO: 在此添加命令处理程序代码
CClassView*pClass=new CClassView;
pClass->Create(_T("Hello_P"),this,CRect(0, 0, 200, 200), TRUE, ID_VIEW_CLASSVIEW, WS_CHILD
------解决方案--------------------
WS_VISIBLE
------解决方案--------------------
WS_CLIPSIBLINGS
------解决方案--------------------
WS_CLIPCHILDREN
------解决方案--------------------
CBRS_LEFT
------解决方案--------------------
CBRS_FLOAT_MULTI);
pClass->EnableDocking(CBRS_ALIGN_ANY);
DockPane(pClass);
}
------解决方案--------------------
我的随意停靠! 项目里面做的
在对话框上创建派生于CFrameWndEx的CMainFrame,再以CMainFrame为父窗口创建派生于CDockablePane的浮动属性页,创建成功后,当属性页拖动到停靠点(停靠点就是当拖动浮动窗口时界面中出现的用于提示上下左右方向停靠的小正方形区域)时程序就出错,跟踪代码显示在停靠时获取的父窗口指针为空。但是将浮动窗口拖动的其他地方就没问题,或者直接点击右键菜单上的停靠,浮动页也没问题可以正常停靠。 神马问题那,高手帮忙!!!
------解决方案--------------------
我觉得你可以创建一个SDI工程,View用CFormView,去掉工具栏和菜单栏,就和Dialog差不多了,这个时候用CDockablePane就不会有什么问题了。
------解决方案--------------------
CString strObjectView;
VERIFY(strObjectView.LoadString(IDS_OBJECT_VIEW));
if (!m_wndObjectView.Create(strObjectView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_OBJECTVIEW, WS_CHILD
------解决方案--------------------
WS_VISIBLE
------解决方案--------------------
WS_CLIPSIBLINGS
------解决方案--------------------
WS_CLIPCHILDREN
------解决方案--------------------
CBRS_LEFT
------解决方案--------------------
CBRS_FLOAT_MULTI))
{
bResult = bResult && FALSE; // 未能创建
}
// 图标
HICON hObjectViewIcon = (HICON) ::LoadImage(::AfxGetResourceHandle(), MAKEINTRESOURCE(IDI_OBJECT_VIEW), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0);
m_wndObjectView.SetIcon(hObjectViewIcon, FALSE);
// 停靠
m_wndObjectView.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndObjectView);
我在CMainFrame中创建该窗口;
相关定义:
CObjectView m_wndObjectView;
class CObjectView : public CDockablePane
我这个随意拖动!
------解决方案--------------------
你这个问题应该是没有连接到停靠窗口
创建可停靠的窗口必须
xxxView.Create(...)
xxxView.EnableDocking(CBRS_ALIGN_ANY);
pMain->DockPane(&xxxView);//pMain为最顶层窗口
------解决方案--------------------
lz你是否哪里没有弄对,我测试一下,下面代码创建的可停靠视图怎么拖动都没有问题
void CMainFrame::OnTestTestdockview()
{
// TODO: 在此添加命令处理程序代码
CClassView*pClass=new CClassView;
pClass->Create(_T("Hello_P"),this,CRect(0, 0, 200, 200), TRUE, ID_VIEW_CLASSVIEW, WS_CHILD
------解决方案--------------------
WS_VISIBLE
------解决方案--------------------
WS_CLIPSIBLINGS
------解决方案--------------------
WS_CLIPCHILDREN
------解决方案--------------------
CBRS_LEFT
------解决方案--------------------
CBRS_FLOAT_MULTI);
pClass->EnableDocking(CBRS_ALIGN_ANY);
DockPane(pClass);
}
------解决方案--------------------
我的随意停靠! 项目里面做的