关于TreeView控件在编辑结点时,产生的消息很怪异,有高手来说下原因不?

yndfcd 2010-06-18 04:53:15
问题描述如下:
对话框有三个控件,一个Edit,一个TreeView,一个ListView.我希望在Edit里可以输入一些命令,来修改文档中的数据.在输入命令后,按回车键,开始解析命令,并进行处理代码如下:

                switch( Id )
{
case IDOK:
{
GetDlgItemText( hwndDlg, IDC_EDIT, comline, 299 );
Command* com = Processor.ProcessComLine( comline );
if( !com )
{
MessageBox( hwndDlg, Processor.GetErrorString().c_str(), "错误",
MB_OK );
}else{
Dlg.GetCurDoc()->AddCommand( com );
SetDlgItemText( hwndDlg, IDC_EDIT, "" );

Dlg.ListViewAddItem( doc->GetDoc()->GetRateBase()->GetManager()
->GetRes( Processor.GetCommandInfo()) );
}
}
break;

在Edit控件中按ENTER键时,对话框会产生一个WM_COMMAND消息,这段代码的确也可以达到预期的效果。

但是,并非只是在按回车时,才会产生这样的消息,我在编辑TreeView控件的里的结点的Text时,居然也会产生一个ID 为 IDOK的WM_COMMAND消息。 ListView在编辑时也会产生同样的消息。

请问这是为什么?
...全文
74 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2010-06-18
  • 打赏
  • 举报
回复
判断一下message.hwnd是哪个窗口,来进行区分。。。
yndfcd 2010-06-18
  • 打赏
  • 举报
回复
直接点鼠标呀.键盘都没碰.
jieleiping 2010-06-18
  • 打赏
  • 举报
回复
你编辑完成的时候,是怎么完成的?不是按回车么???
yndfcd 2010-06-18
  • 打赏
  • 举报
回复
按不按回车都会发送IDOK这样的消息
jieleiping 2010-06-18
  • 打赏
  • 举报
回复
你每次listctrl,treectrl编辑完成以后都是按回车的吧,回车就会发送IDOK
yndfcd 2010-06-18
  • 打赏
  • 举报
回复
而且,他创建的Edit居然不是ListView或TreeView的子窗口,却是对话框的子窗口,这也太怪异了.
yndfcd 2010-06-18
  • 打赏
  • 举报
回复
创建Edit什么的都没有问题,但是为啥他的ID是1呀,也就是IDOK的值.
jieleiping 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]
因为ListCtrl,TreeCtrl编辑结点的时候,那里确实动态的创建了一个Edit。
[/Quote]
对,每次编辑都会动态创建一个edit!!!
zhb1190 2010-06-18
  • 打赏
  • 举报
回复
IDOK貌似是vc对话框中确定按钮的值,你在pretranslatemessage这个函数里截获回车消息试一下呢?
healer_kx 2010-06-18
  • 打赏
  • 举报
回复
因为ListCtrl,TreeCtrl编辑结点的时候,那里确实动态的创建了一个Edit。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧