child对话框不能获得输入焦点

时间:2021-09-11 05:47:56
VC6.0下新建的对话框工程,
为什么具有child风格的对话框都不能获得输入焦点,对话框上的Edit控件都没法用。而且setFocus也不好使。
并且对话框只能设置成child风格,因为设置成popup的话,会移到主对话框外面去的。 

10 个解决方案

#1


怎么没人啊

#2


//主对话框初始化:
...
// TODO: Add extra initialization here
pChildDlg=new CChildDlg;
pChildDlg->Create(IDD_DIALOG1 );//产生一个对话框资源IDD_DIALOG1
pChildDlg->ShowWindow(SW_SHOW);
...

#3


引用 2 楼 schlafenhamster 的回复:
//主对话框初始化:
...
// TODO: Add extra initialization here
pChildDlg=new CChildDlg;
pChildDlg->Create(IDD_DIALOG1);//产生一个对话框资源IDD_DIALOG1
pChildDlg->ShowWindow(SW_SHOW);
...


不懂,什么意思

#4


是不是对话框被禁止了?看看风格里的Disable是不是被勾选了

#5


在对话框属性里钩上Control和 Control Parent。前者是必须的,后者是让你按Tab键的时候能进入子对话框内部。

#6


引用 5 楼 xxd_qd 的回复:
在对话框属性里钩上Control和 Control Parent。前者是必须的,后者是让你按Tab键的时候能进入子对话框内部。

确实是这样的,但是我勾上Control后,对话框边框变没了,标题栏也变没了。

#7


引用 6 楼 jaded 的回复:
确实是这样的,但是我勾上Control后,对话框边框变没了,标题栏也变没了。

子窗口形式的对话框当然没有标题栏一类的东西,因为那已经是控件一般的存在了。按你的要求的话,你该用多文档界面,而不是对话框子窗口。再要么你就自己做窗口,反正对话框这种现成做好的东西是没办法满足你的要求的。

#8


//主对话框初始化:你的主对话框中BOOL CDlgindlgDlg::OnInitDialog()
//中加:
...
// TODO: Add extra initialization here
pChildDlg=new CChildDlg;
pChildDlg->Create(IDD_DIALOG1);//产生一个对话框资源IDD_DIALOG1
//这个IDD_DIALOG1是通过资源编译器加入一个对话框产生的,再通过classwizard产生一个类
//叫CChildDlg。
//这句也可以写成:pChildDlg->Create(IDD_DIALOG1 ,this);
pChildDlg->ShowWindow(SW_SHOW);

#9


兄台,这几天我碰到和你同样的问题。我已经有办法解决了,很简单的,可以在单文档中做出与多文档类似的界面风格。

你这个问题可以这么解决:

1)仍将对话框设置为popup风格,这样edit box控件就能获得焦点。
2)用对话框的setparent函数指定你希望指定的对话框父窗口,这样对话框就不会移到主对话框外面去。

#10


TO. Leodream,

很简便的方法,但会有一个新问题,当最小化到任务栏后,左键单击任务栏上程序图标,无法回复原来大小,只能右键单击再选择回复。

可以确认下看。

这个问题让人很头痛,期待更好的的方法。

#1


怎么没人啊

#2


//主对话框初始化:
...
// TODO: Add extra initialization here
pChildDlg=new CChildDlg;
pChildDlg->Create(IDD_DIALOG1 );//产生一个对话框资源IDD_DIALOG1
pChildDlg->ShowWindow(SW_SHOW);
...

#3


引用 2 楼 schlafenhamster 的回复:
//主对话框初始化:
...
// TODO: Add extra initialization here
pChildDlg=new CChildDlg;
pChildDlg->Create(IDD_DIALOG1);//产生一个对话框资源IDD_DIALOG1
pChildDlg->ShowWindow(SW_SHOW);
...


不懂,什么意思

#4


是不是对话框被禁止了?看看风格里的Disable是不是被勾选了

#5


在对话框属性里钩上Control和 Control Parent。前者是必须的,后者是让你按Tab键的时候能进入子对话框内部。

#6


引用 5 楼 xxd_qd 的回复:
在对话框属性里钩上Control和 Control Parent。前者是必须的,后者是让你按Tab键的时候能进入子对话框内部。

确实是这样的,但是我勾上Control后,对话框边框变没了,标题栏也变没了。

#7


引用 6 楼 jaded 的回复:
确实是这样的,但是我勾上Control后,对话框边框变没了,标题栏也变没了。

子窗口形式的对话框当然没有标题栏一类的东西,因为那已经是控件一般的存在了。按你的要求的话,你该用多文档界面,而不是对话框子窗口。再要么你就自己做窗口,反正对话框这种现成做好的东西是没办法满足你的要求的。

#8


//主对话框初始化:你的主对话框中BOOL CDlgindlgDlg::OnInitDialog()
//中加:
...
// TODO: Add extra initialization here
pChildDlg=new CChildDlg;
pChildDlg->Create(IDD_DIALOG1);//产生一个对话框资源IDD_DIALOG1
//这个IDD_DIALOG1是通过资源编译器加入一个对话框产生的,再通过classwizard产生一个类
//叫CChildDlg。
//这句也可以写成:pChildDlg->Create(IDD_DIALOG1 ,this);
pChildDlg->ShowWindow(SW_SHOW);

#9


兄台,这几天我碰到和你同样的问题。我已经有办法解决了,很简单的,可以在单文档中做出与多文档类似的界面风格。

你这个问题可以这么解决:

1)仍将对话框设置为popup风格,这样edit box控件就能获得焦点。
2)用对话框的setparent函数指定你希望指定的对话框父窗口,这样对话框就不会移到主对话框外面去。

#10


TO. Leodream,

很简便的方法,但会有一个新问题,当最小化到任务栏后,左键单击任务栏上程序图标,无法回复原来大小,只能右键单击再选择回复。

可以确认下看。

这个问题让人很头痛,期待更好的的方法。