程序启动后,在
BOOL CTvPlayerApp::InitInstance()
{
CTvPlayerDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();//在这里创建了一个模态对话框
}
在模态对话框初始化时
BOOL CTvPlayerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_VideoWindow.ModifyStyle(0, WS_CLIPCHILDREN);
int tmp_W = GetSystemMetrics(SM_CXSCREEN);
int tmp_H = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(&CWnd::wndNoTopMost,-2,-2,tmp_W+8,tmp_H+8,SWP_HIDEWINDOW);
LoadProgramList();这是一个函数
return TRUE;
}
在函数中:有这么一个判断
void CTvPlayerDlg::LoadProgramList()
{
if()
.........
else
{
if (AfxMessageBox(L"节目列表为空,必须进行节目搜索,搜索请选择“确定”,退出请选择“取消”!",MB_OKCANCEL) == IDOK)
{
if (m_pSearchDlg != NULL)
{
delete m_pSearchDlg;
m_pSearchDlg = NULL;
}
m_pSearchDlg = new CSearchDlg; //创建了一个非模态对话框,有一个CShockwaveflash控件
m_pSearchDlg->Create(IDD_DIALOG_SEARCH, NULL);
m_pSearchDlg->inputTvDlg(this); }
else
{
OnBnClickedCancel();
}
}
}
非模态对话框CSearchDlg的初始化函数如下:
BOOL CNSearchDlg::OnInitDialog()
{
CDialog::OnInitDialog();
int tmp_W = GetSystemMetrics(SM_CXSCREEN);
int tmp_H = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(&CWnd::wndTopMost, -2, -2, tmp_W+4, tmp_H+4, SWP_SHOWWINDOW);
CWnd *pWndsearch = GetDlgItem(IDC_SHOCKWAVEFLASH_SEARCH);
if(pWndsearch)
{
CRect searchRect(0, 0, tmp_W+4, tmp_H+4);
pWndsearch->MoveWindow(searchRect);
}
CString strAppFullName;
CString strAppPath;
GetModuleFileName(AfxGetApp()->m_hInstance, strAppFullName.GetBuffer(MAX_PATH), MAX_PATH);
strAppFullName.ReleaseBuffer();
int nPos = 0;
nPos = strAppFullName.ReverseFind(_T('\\'));
strAppPath = strAppFullName.Left(nPos + 1);
CString strFilePath = strAppPath + _T("Initsearch.swf");
m_searchUI.put_Movie(strFilePath);
m_searchUI.SetFocus();//在这里我设置了控件的焦点
return FALSE; // return TRUE unless you set the focus to a control}
可是用SetFocus()这个也不能把焦点放到控件上来,而且我测试了发现焦点在那个模态对话框CTvPlayerDlg上,
求高手帮忙解决。
9 个解决方案
#1
简化一点就是:
应用程序创建模态对话框CTvPlayerDlg--------
模态对换框初始化时有函数void CTvPlayerDlg::LoadProgramList()
-----------函数之中又创建了一个非模态对话框CSearchDlg---------
非模态对话框有一个CShockwaveflash控件
我想在创建非模态对话框时把焦点设置到flash控件上,可是应用了SetFocus()函数怎么也不能把焦点设置过来,焦点一直在模态对话框CTvPlayerDlg上,
为什么??
求高手帮忙。急!!!!!!!!!!!
应用程序创建模态对话框CTvPlayerDlg--------
模态对换框初始化时有函数void CTvPlayerDlg::LoadProgramList()
-----------函数之中又创建了一个非模态对话框CSearchDlg---------
非模态对话框有一个CShockwaveflash控件
我想在创建非模态对话框时把焦点设置到flash控件上,可是应用了SetFocus()函数怎么也不能把焦点设置过来,焦点一直在模态对话框CTvPlayerDlg上,
为什么??
求高手帮忙。急!!!!!!!!!!!
#2
我在模态对话框的按键消息处理函数中这样写时:
BOOL CTvPlayerDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->wParam == 66)
{
if (m_pSearchDlg != NULL)
{
delete m_pSearchDlg;
m_pSearchDlg = NULL;
}
m_pSearchDlg = new CSearchDlg;
m_pSearchDlg->Create(IDD_DIALOG_SEARCH, NULL);
m_pSearchDlg->inputTvDlg(this);
}
return CDialog::PreTranslateMessage(pMsg);
}
焦点就是正确的,就落在非模态对话框的空间上。真搞不懂???
BOOL CTvPlayerDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->wParam == 66)
{
if (m_pSearchDlg != NULL)
{
delete m_pSearchDlg;
m_pSearchDlg = NULL;
}
m_pSearchDlg = new CSearchDlg;
m_pSearchDlg->Create(IDD_DIALOG_SEARCH, NULL);
m_pSearchDlg->inputTvDlg(this);
}
return CDialog::PreTranslateMessage(pMsg);
}
焦点就是正确的,就落在非模态对话框的空间上。真搞不懂???
#3
快来人啊,急求帮助!!!!!!!!!!!!!
!!!!!!!!!!!!!
!!!!!!!!!!!!!
#4
子对话框的属性中 将 style设置为child
#5
如何设置?
#6
你要把CShockwaveflash控件
的tab order设置为1
编辑你的CSearchDlg对话框,选择菜单layout->tab order;
鼠标单击即可
#7
我依你说的把风格设置为child之后,CSearchDlg对话框就没有显示了,这个对话框是在
if (AfxMessageBox(L"节目列表为空,必须进行节目搜索,搜索请选择“确定”,退出请选择“取消”!",MB_OKCANCEL) == IDOK)
{
m_pSearchDlg = new CSearchDlg; //创建了一个非模态对话框,有一个CShockwaveflash控件
m_pSearchDlg->Create(IDD_DIALOG_SEARCH, NULL);
m_pSearchDlg->inputTvDlg(this);
}
这里创建的,点击确定之后,没有创建CSerachDlg对话框。。。。。
继续求高手指点啊。。。。。
#8
我CTAL+D看了,CShockwaveflash控件
的TAB order是1的。。。
#9
在线等啊,来高手指点指点啊。。。。。。。。。。
#1
简化一点就是:
应用程序创建模态对话框CTvPlayerDlg--------
模态对换框初始化时有函数void CTvPlayerDlg::LoadProgramList()
-----------函数之中又创建了一个非模态对话框CSearchDlg---------
非模态对话框有一个CShockwaveflash控件
我想在创建非模态对话框时把焦点设置到flash控件上,可是应用了SetFocus()函数怎么也不能把焦点设置过来,焦点一直在模态对话框CTvPlayerDlg上,
为什么??
求高手帮忙。急!!!!!!!!!!!
应用程序创建模态对话框CTvPlayerDlg--------
模态对换框初始化时有函数void CTvPlayerDlg::LoadProgramList()
-----------函数之中又创建了一个非模态对话框CSearchDlg---------
非模态对话框有一个CShockwaveflash控件
我想在创建非模态对话框时把焦点设置到flash控件上,可是应用了SetFocus()函数怎么也不能把焦点设置过来,焦点一直在模态对话框CTvPlayerDlg上,
为什么??
求高手帮忙。急!!!!!!!!!!!
#2
我在模态对话框的按键消息处理函数中这样写时:
BOOL CTvPlayerDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->wParam == 66)
{
if (m_pSearchDlg != NULL)
{
delete m_pSearchDlg;
m_pSearchDlg = NULL;
}
m_pSearchDlg = new CSearchDlg;
m_pSearchDlg->Create(IDD_DIALOG_SEARCH, NULL);
m_pSearchDlg->inputTvDlg(this);
}
return CDialog::PreTranslateMessage(pMsg);
}
焦点就是正确的,就落在非模态对话框的空间上。真搞不懂???
BOOL CTvPlayerDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->wParam == 66)
{
if (m_pSearchDlg != NULL)
{
delete m_pSearchDlg;
m_pSearchDlg = NULL;
}
m_pSearchDlg = new CSearchDlg;
m_pSearchDlg->Create(IDD_DIALOG_SEARCH, NULL);
m_pSearchDlg->inputTvDlg(this);
}
return CDialog::PreTranslateMessage(pMsg);
}
焦点就是正确的,就落在非模态对话框的空间上。真搞不懂???
#3
快来人啊,急求帮助!!!!!!!!!!!!!
!!!!!!!!!!!!!
!!!!!!!!!!!!!
#4
子对话框的属性中 将 style设置为child
#5
如何设置?
#6
你要把CShockwaveflash控件
的tab order设置为1
编辑你的CSearchDlg对话框,选择菜单layout->tab order;
鼠标单击即可
#7
我依你说的把风格设置为child之后,CSearchDlg对话框就没有显示了,这个对话框是在
if (AfxMessageBox(L"节目列表为空,必须进行节目搜索,搜索请选择“确定”,退出请选择“取消”!",MB_OKCANCEL) == IDOK)
{
m_pSearchDlg = new CSearchDlg; //创建了一个非模态对话框,有一个CShockwaveflash控件
m_pSearchDlg->Create(IDD_DIALOG_SEARCH, NULL);
m_pSearchDlg->inputTvDlg(this);
}
这里创建的,点击确定之后,没有创建CSerachDlg对话框。。。。。
继续求高手指点啊。。。。。
#8
我CTAL+D看了,CShockwaveflash控件
的TAB order是1的。。。
#9
在线等啊,来高手指点指点啊。。。。。。。。。。