关于非模态对话框的焦点有关问题
关于非模态对话框的焦点问题
我在主对话框的初始化函数中创建并显示了一个非模态对话框,但问题是非模态对话框并没有获取焦点,而是主对话框处于激活状态。现在我想知道有什么办法可以让非模态对话框马上获取焦点。。(我试过改成在主对话框中按下某个按钮后弹出一个非模态对话框,此时该对话框是获取到焦点,但我的初衷是要在主对话框创建后同时创建一个非模态对话框,所以就想到在初始化函数中创建,但是却出现了上面不如意的问题)
另:我是第一次在这里发贴,对这里的给分规则不太熟悉,现在我也不知道我有没有分,只怕写着给多少分到头来却没有分能给,让大家以为我在欺骗,所以我先不给分了,希望大侠们也能热心回答,如果我发现我有分我一定会附加的
------解决方案--------------------
在OnInitDialog中设置焦点,注意return FALSE;
------解决方案--------------------
在OnInitDialog函数里面,设置非模态对话框的焦点,例如
CDialog* dlg = new CDialog();
dlg-> Create(IDD_DIALOG1);
dlg-> ShowWindow(SW_SHOW);
dlg-> SetFocus();
return FALSE;
------解决方案--------------------
看了你的代码,估计你是在做登录的对话框,把它放到工程对应的那个CPP去做吧,InitInstance()这个函数里面,你会看到有一个DoModal的调用,在调用它之前,你先显示你的登录对话框,用模态的,等这个登录对话框返回后再显示你的主对话框就可以了.
类似这个:
CServerDlg dlg;
CSplashDlg splash;
if(splash.DoModal()!=0) exit(0);
m_pMainWnd=NULL;
m_pMainWnd=&dlg;
int nResponse = dlg.DoModal();
------解决方案--------------------
将你的非模式对话框的初始化程序
OnInitDialog()中,
return FALSE;
而不是在主窗口程序中的初始函数..
------解决方案--------------------
在 CXXApp::InitInstance这样写函数。
CDialog dlg;
dlg.DoModule();
不要用动态创建的。
我在主对话框的初始化函数中创建并显示了一个非模态对话框,但问题是非模态对话框并没有获取焦点,而是主对话框处于激活状态。现在我想知道有什么办法可以让非模态对话框马上获取焦点。。(我试过改成在主对话框中按下某个按钮后弹出一个非模态对话框,此时该对话框是获取到焦点,但我的初衷是要在主对话框创建后同时创建一个非模态对话框,所以就想到在初始化函数中创建,但是却出现了上面不如意的问题)
另:我是第一次在这里发贴,对这里的给分规则不太熟悉,现在我也不知道我有没有分,只怕写着给多少分到头来却没有分能给,让大家以为我在欺骗,所以我先不给分了,希望大侠们也能热心回答,如果我发现我有分我一定会附加的
------解决方案--------------------
在OnInitDialog中设置焦点,注意return FALSE;
------解决方案--------------------
在OnInitDialog函数里面,设置非模态对话框的焦点,例如
CDialog* dlg = new CDialog();
dlg-> Create(IDD_DIALOG1);
dlg-> ShowWindow(SW_SHOW);
dlg-> SetFocus();
return FALSE;
------解决方案--------------------
看了你的代码,估计你是在做登录的对话框,把它放到工程对应的那个CPP去做吧,InitInstance()这个函数里面,你会看到有一个DoModal的调用,在调用它之前,你先显示你的登录对话框,用模态的,等这个登录对话框返回后再显示你的主对话框就可以了.
类似这个:
CServerDlg dlg;
CSplashDlg splash;
if(splash.DoModal()!=0) exit(0);
m_pMainWnd=NULL;
m_pMainWnd=&dlg;
int nResponse = dlg.DoModal();
------解决方案--------------------
将你的非模式对话框的初始化程序
OnInitDialog()中,
return FALSE;
而不是在主窗口程序中的初始函数..
------解决方案--------------------
在 CXXApp::InitInstance这样写函数。
CDialog dlg;
dlg.DoModule();
不要用动态创建的。