切分窗口与CTreeView配合使用的非法操作问题,求教做了一个三切分视,错误现象:
(1)CTreeView为TVS_EDITLABELS风格,在Tree Item上点击,当其编辑框出现后,在编辑框中点鼠标出现非法操作
(2)自己用View封装了一个CTreeCtrl,无论怎么点鼠标,编辑框根本不出现,无法编辑!!!要求必须在视类中创建切分窗口。!!!
在CMainFrame::OnCreateClient函数中作上述工作是正常的。只要解决,分可以再加给我你的邮箱,我把代码发给你。
(1)CTreeView为TVS_EDITLABELS风格,在Tree Item上点击,当其编辑框出现后,在编辑框中点鼠标出现非法操作
(2)自己用View封装了一个CTreeCtrl,无论怎么点鼠标,编辑框根本不出现,无法编辑!!!要求必须在视类中创建切分窗口。!!!
在CMainFrame::OnCreateClient函数中作上述工作是正常的。只要解决,分可以再加给我你的邮箱,我把代码发给你。
void CXXXX::OnBeginLabelEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// Limit text length
GetEditControl()->LimitText(127);
*pResult = 0;
}
如果不处理 TVN_ENDLABELEDIT 消息,则文本的更改不会生效。
void COutline::OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult)
{
GetEditControl()->GetWindowText(s);
// Set result to TRUE to accept the changes
*pResult = TRUE;
}
要么看看代码?不是更改是否生效的问题,而是根本就没办法改
1。 VC6生成SDI的程序,如工程为Test
2。CTestView::OnCreate函数改为下面的形式:int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; // Create the splitter wnd.
m_wndSplitter.CreateStatic(this, 1, 2); CCreateContext *p = (CCreateContext*)lpCreateStruct->lpCreateParams;
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTreeView), CSize(150, 0), p));
m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CTreeView), CSize(0, 0), p)); DWORD dwTreeStyle = WS_VISIBLE | TVS_EDITLABELS;
dwTreeStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
CTreeView* pView = (CTreeView*)m_wndSplitter.GetPane(0, 0);
pView->ModifyStyle(0, dwTreeStyle);
for(int i = 0; i < 10; i++)
{
CString str;
str.Format("%d", i);
pView->GetTreeCtrl().InsertItem(str);
}
return 0;
}3、CTestView中增加OnSize函数如下:void CTestView::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
if(m_wndSplitter.GetSafeHwnd())
{
m_wndSplitter.MoveWindow(0,0,cx,cy);* 2) - 4);
}
}4. 现象:
在上面那个View的Tree Item上点击,当其编辑框出现后,在编辑框中再次点鼠标出现非法操作