显示子对话框和父对话框的焦点问题。

askman1 2008-01-09 04:03:44
我点一个按钮或者一个文本,反正一个事件,弹出一个自对话框。
但是这个子对话框不能让父对话框失去焦点。

我的自对话框继承于CWND。
采用BOOL ret = CWnd::CreateEx(0, AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW),
"", dwStyle | WS_POPUP, rc, pParent->GetParent(), nId);

或者// BOOL ret = CWnd::Create(AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW), NULL,
// WS_CHILD | WS_VISIBLE | WS_BORDER, rc, pParent, NULL);

都不行,后者是无法显示,前者是有WS_POPUP的样式,导致弹出式会使父对话框失去焦点。
包括在showwindow时用SW_SHOWNOACTIVATE也不行。

请大家指教,是如何实现的。谢谢。
...全文
197 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiangv 2008-01-09
  • 打赏
  • 举报
回复
to superarhow.
我是从CWnd继承的,没有OnInitDialog这个虚函数呀。
superarhow 2008-01-09
  • 打赏
  • 举报
回复
ShowWindow(SW_SHOWNOACTIVATE)是可以的,前提是要在OnInitDialog()中返回FALSE,否则缺省窗口过程会把焦点放在对话框中的第一个控件上。
askman1 2008-01-09
  • 打赏
  • 举报
回复
UPUPUP
askman1 2008-01-09
  • 打赏
  • 举报
回复
我测试了下,勉强可以
但是这样会闪了一下,不是很明显
就是父窗口会失去焦点,然后获取焦点,会有闪动一下。

期待更好的方法。二楼的肯定有分,谢谢你哦。
askman1 2008-01-09
  • 打赏
  • 举报
回复
父窗口setfocus后会导致子窗口销毁 - -!
子窗口的消失是靠失去焦点来弄的。
askman1 2008-01-09
  • 打赏
  • 举报
回复
WS_EX_NOACTIVATE VC不认识,有没有别的方法 - -

可能我的SDK老的。不过还是看看别的方法
shakaqrj 2008-01-09
  • 打赏
  • 举报
回复
this-> SetFocus();
就这句阿
前面的没关系
zhoujianhei 2008-01-09
  • 打赏
  • 举报
回复
WS_EX_NOACTIVATE
askman1 2008-01-09
  • 打赏
  • 举报
回复
不要资源,都是自己画的。
可以这么理解吧。
一个combbox,不过这个combbox是我自己模拟的。
点击到我假的“combbox”时要弹出列表,这个列表就是我自己画的cwnd。
我要先创建,再弹出来,但是会使父对话框失去焦点。
该如何实现这样的效果。
shakaqrj 2008-01-09
  • 打赏
  • 举报
回复
CNewDlg* p=new CNewDlg();
p->Create(IDD_DIALOG1,this);
p->ShowWindow(SW_SHOW);
this->SetFocus();

15,978

社区成员

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

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