MFC中软键盘窗口前台显示解决方案

MFC中软键盘窗口前台显示
自己写了一个全屏窗口类,窗口界面添加了小键盘按钮,单击后弹出软键盘窗口。全屏状态下单击键盘按钮,显示软件盘窗口,但是按下实际键盘的开始按钮后,再点击全屏界面,软键盘窗口被全屏窗口覆盖。全屏窗口显示代码如下:
void CFullScreenWnd::ShowFullScreen(BOOL bFullScreen)
{
if (bFullScreen == m_bFullScreen)
{
return;
}

m_bFullScreen = bFullScreen;

if (m_bFullScreen) 
{
ModifyStyle(WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, 0, 0);

int cxScreen = ::GetSystemMetrics(SM_CXSCREEN)/2;
int cyScreen = ::GetSystemMetrics(SM_CYSCREEN)/2;

SetWindowPos(NULL, 0, 0, cxScreen, cyScreen, SWP_NOZORDER );
SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);

if (NULL != m_pInnerWnd)
{
m_pInnerWnd->CenterWindow(this);
}
}
else
{
ModifyStyle(0, WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX, 0);

SetWindowPos(&CWnd::wndNoTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
}
}

软键盘窗口用如下方式打开:
ShellExecute(NULL, _T("open"), strPath, _T(""), _T(""), SW_SHOW);

------解决思路----------------------
SetWindowPos  HWND_TOPMOST
------解决思路----------------------
你的软键盘窗口能否指定为你的主窗口的子窗口/被所有者?
------解决思路----------------------
你的问题是不是就是说,一个窗口要永远保持置顶,不要被其他的置顶窗口给覆盖了?