CTreeCtrl 控件,在创建的时候已经设置了TVS_EDITLABELS属性,也映射了TVN_BEGINLABELEDIT TVN_ENDLABELEDIT消息。
可以重命名,但是必须是失去焦点后才能重命名有效,按回车不响应无效。如何才能使按回车就能重命名。就像资源管理器你的文件夹一样。
可以重命名,但是必须是失去焦点后才能重命名有效,按回车不响应无效。如何才能使按回车就能重命名。就像资源管理器你的文件夹一样。
解决方案 »
- 用WinInet提交HTTPS表单 — 如何构造表单字符串?
- VC在2000的日文系统上能运行,在中文的XP下,编译通过,但不能运行,
- 初级问题,马上结贴
- CString::SpanExcluding()的问题,十分不解
- 大家帮我看看这哪里出错了~为什么DialogBox调用之后显示不出对话框来
- mschrt20.ocx动态创建问题
- 如何让自己的程序相应最快?
- 请高手关注CListBox
- vc6中使用stl居然会出现连接错误!
- web和MFC之间之间有什么关系,具体一点,求大神指教
- 用VC制作颜色组合框时,在DrawItem()中的itemID总是返回一个很大的值(4294967295),不知道怎么回事,望高人指教。
- 打包高手进来看看!
switch(pMsg->message)
{
case WM_KEYDOWN:
if (pMsg->wParam == VK_RETURN)
{
CEdit *pEdit = this->GetEditControl();
if (NULL != pEdit)
{
pEdit->GetWindowTextA(str);
NMTVDISPINFO msg;
msg.hdr.hwndFrom = this->m_hWnd;
msg.hdr.idFrom = this->GetDlgCtrlID();
msg.hdr.code = TVN_ENDLABELEDIT;
msg.item.mask = TVIF_TEXT;
msg.item.pszText = str.GetBuffer(0);
msg.item.cchTextMax = str.GetLength(); if (this->GetParent())
{
this->GetParent()->SendMessage(WM_NOTIFY, (WPARAM)msg.hdr.idFrom, (LPARAM)&msg);
}
}
}
break;
}
先想方设法得到Enter的消息,我这里也用CMyTreeCtrl::PreTranslateMessage。switch(pMsg->message)
{
case WM_KEYDOWN:
if (pMsg->wParam == VK_RETURN)
{
this->SetFocus();
//SetFocus()可以触发TVN_ENDLABELEDIT消息
}
break;
}