//m_hDiabloWnd是CWnd类型的指针,下面设置窗体的语句生效
CRgn rgn_wRgn;
CRect rect_wRect=new CRect(m_iXPos,m_iYPos,m_iWidth,m_iHeight);
rgn_wRgn.CreateRectRgnIndirect(&rect_wRect);
m_hDiabloWnd->SetWindowRgn((HRGN)rgn_wRgn.GetSafeHandle(),TRUE);//可是下面用来置定的语句不行了,问题在哪? if(m_bTopmost==FALSE)
{
//m_hDiabloWnd->SetWindowPos(&m_hDiabloWnd->wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_SHOWWINDOW);
m_hDiabloWnd->ModifyStyleEx(SWP_NOZORDER,0,0);
::SetWindowPos(m_hDiabloWnd->GetSafeHwnd(),HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
m_hDiabloWnd->ShowWindow(SW_RESTORE);
m_bTopmost=TRUE;
CButton* btn_settop=(CButton*)GetDlgItem(IDC_BUTTON_SETTOP);
btn_settop->SetWindowText("Set Window NoTopMost"); }
else
{
//m_hDiabloWnd->SetWindowPos(&m_hDiabloWnd->wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_SHOWWINDOW);
m_hDiabloWnd->ModifyStyleEx(SWP_NOZORDER,0,0);
::SetWindowPos(m_hDiabloWnd->GetSafeHwnd(),HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
m_hDiabloWnd->ShowWindow(SW_RESTORE);
m_bTopmost=FALSE;
CButton* btn_settop=(CButton*)GetDlgItem(IDC_BUTTON_SETTOP);
btn_settop->SetWindowText("Set Window TopMost"); }

解决方案 »

  1.   

    SetWindowPos(&wndNoTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | WS_EX_TOPMOST);
      

  2.   

    to:skyonline(山中过客) 不行哦//btw   窗口句柄是一个游戏【Diablo】的窗口句柄
      

  3.   

    少个参数吧
    加第二个参数HWND_TOPMOST
      

  4.   

    我曾经获得魔兽的游戏的窗口句柄,我用SetWindowPos把它置顶了,所以SetWindowPos是可以用压?
      

  5.   

    将程序窗口保持在顶层
    ModifyStyleEx(0,WS_EX_TOPMOST);
      

  6.   

    我用spy++看到该窗口有WS_CAPTION|WS_MINIMIZE属性
    但是我用语句:m_hDiabloWnd->ModifyStyle(WS_CAPTION|WS_MINIMIZE,0);能去掉WS_CAPTION属性,确不能去掉WS_MINIMIZE,为什么?
    还有WS_MINIMIZE是什么作用?