为啥我的非模窗与tree就不能和平相处呢!求助

cnvvv 2005-10-07 09:45:42
我在TreeCtrl的OnNMDblclk里如下这样.


void CASDFGDlg::OnNMDblclkTree(NMHDR *pNMHDR, LRESULT *pResult)
{
CPoint point;
GetCursorPos(&point);
m_Tree.ScreenToClient( &point);

HTREEITEM Item; UINT flag;
Item=m_Tree.HitTest(point,&flag );
if ( (Item!=NULL) && (TVHT_ONITEMLABEL & flag) )
{
CDDD* t=new CDDD(this);
t->Create(CDDD::IDD,this->GetDesktopWindow());
t->ShowWindow(SW_SHOW);
t->SetFocus();
}
*pResult = 0;
}



可新建的窗就是不能距焦.焦点总在主窗上.这可怎么办啊.....求助.
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnvvv 2005-10-08
  • 打赏
  • 举报
回复
希望有其它方法.
cnvvv 2005-10-08
  • 打赏
  • 举报
回复
现在发现主窗在子窗建出时.的确失焦了.子窗有了焦点.但一下子主窗又有焦点了.也就是子窗闪了一下又没焦点了.
goodboyws 2005-10-08
  • 打赏
  • 举报
回复
在OnNMDblclkTree里Post一个自定义消息,在消息响应函数里创建对话框
#define WM_SHOWDLG WM_USER+1000
BEGIN_MESSAGE_MAP(CASDFGDlg, CDialog)
//{{AFX_MSG_MAP(CASDFGDlg)
//}}AFX_MSG_MAP
ON_MESSAGE(WM_SHOWDLG, OnShowDlg)

END_MESSAGE_MAP()

void CASDFGDlg::OnNMDblclkTree(NMHDR *pNMHDR, LRESULT *pResult)
{
PostMessage(WM_SHOWDLG, 0, 0);
}
LRESULT CASDFGDlg::OnShowDlg(WPARAM wParam, LPARAM lParam)
{

CPoint point;
GetCursorPos(&point);
m_Tree.ScreenToClient( &point);

HTREEITEM Item; UINT flag;
Item=m_Tree.HitTest(point,&flag );
if ( (Item!=NULL) && (TVHT_ONITEMLABEL & flag) )
{
CDDD* t=new CDDD(this);
t->Create(CDDD::IDD,this->GetDesktopWindow());
t->ShowWindow(SW_SHOW);
t->SetFocus();
}


return 0;
}
vcmute 2005-10-08
  • 打赏
  • 举报
回复
SetForegroundWindow看看
zxyjyzxyjy 2005-10-08
  • 打赏
  • 举报
回复
这样试:
t->Create(CDDD::IDD,this);
....
t->BringWindowToTop();
cnvvv 2005-10-08
  • 打赏
  • 举报
回复
没有其它方法了吗?只有PostMessage了?如果没有就只好如此了.感觉怪怪的这个tree.呵呵
lianglp 2005-10-08
  • 打赏
  • 举报
回复
goodboyws(深夜不眠者)
这个方法可行的。
只能对楼主说:处理这个消息之后 ,还要处理其他的东西,系统自动把你的焦点放回到树控件中。
所以调用SetFocus()后是没有效果的。

15,979

社区成员

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

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