因为以前做了好几个程序已经开发完成,但时间有点久了,所以现在不能再编译了,现在公司要求做一个做一个按纽程序,点一下BUTTON,打开一个程序,要求: 打开EXE程序之后要停靠在按纽程序边上,拖动按纽程序也会随之移动,      不知道各位有没有做过,帮帮小弟,先谢谢大家了

解决方案 »

  1.   

    同时,还要实现打开和关闭exe程序功能
      

  2.   


    CPoint m_ptOrgin(0, 0); // 成员变量
    BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(WM_LBUTTONDOWN == pMsg->message)
    {
    m_ptOrgin.x = LOWORD(pMsg->lParam);
    m_ptOrgin.y = HIWORD(pMsg->lParam);
    } if(WM_MOUSEMOVE == pMsg->message)
    {
    CWnd* pWnd = GetDlgItem(IDC_BUTTON1);
    ASSERT(pWnd);

    if(pWnd->GetSafeHwnd() == pMsg->hwnd && MK_LBUTTON == pMsg->wParam)
    {
    CRect rc;
    pWnd->GetWindowRect(rc);
    ScreenToClient(rc);
    int nWidth = rc.Width();
    int nHeight = rc.Height();
    CPoint pt(LOWORD(pMsg->lParam), HIWORD(pMsg->lParam));
    CRect rect;
    rect.left = rc.left + (pt.x - m_ptOrgin.x);
    rect.top = rc.top + (pt.y - m_ptOrgin.y);
    rect.right = rect.left + nWidth;
    rect.bottom = rect.top + nHeight; pWnd->MoveWindow(rect);
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  3.   

    CreateProcess,关闭窗口FindWindow,发送WM_CLOSE消息
      

  4.   

    HWND FindWindow( 
      LPCTSTR lpClassName, 
      LPCTSTR lpWindowName 
    ); 
    BOOL MoveWindow( 
      HWND hWnd, 
      int X, 
      int Y, 
      int nWidth, 
      int nHeight, 
      BOOL bRepaint 
    ); 
      

  5.   

    你这个是实现了窗口停靠,但你针对的是你程序的内部的dialgo,我要实现对外部EXE程序的这种功能才行, 还有,关闭和打开EXE程序功能
      

  6.   

    [Quote=引用 6 楼 visualeleven 的回复:]////////////////////////////////////////////////////////////////////////////我想问一下,我怎么使外部的EXE跟着一起移动呀,
      

  7.   

    FindWindow的到你打开的外部窗口句柄后那不是简单了。
    每次移动都发送消息来调整外部窗口的位置。
      

  8.   

    你的时候是你移动A.exe的窗口的时候也想让B.exe也跟着一起移动???
      

  9.   

    如果是这样的话,你可以在A程序中添加处理WM_WINDOWPOSCHANGING消息,利用FindWindow或者其他函数得到B程序的HWND窗口句柄,然后再WM_WINDOWPOSCHANGING消息响应函数中利用MoveWindow/SetWindowPos来改变B程序窗口的区域