在HPvision.h里写了
CButton m_up;
在HPvision.cpp里写了
DDX_Control(pDX, IDC_up, m_up);
在VideoWin.cpp里写了
extern CButton m_up;
现在我要在
void CVideoWin::OnMouseMove(UINT nFlags, CPoint point) 事件里获得按钮m_up的高宽并改变按钮m_up的位置,怎么写?CRect r;
m_up.GetWindowRect(&r);
GetDlgItem(m_up)->MoveWindow(300,300.top,20,20,TRUE);
好像不行,求救!!!!

解决方案 »

  1.   

    能不能再说明一下m_up这个变量是一个全局变量还是CVideoWin的一个成员变量或是其它类的一个成员变量?总之,依你现在这样的写法,先不说能不能实现改变按钮大小,就是编译都成问题吧?
      

  2.   

    DDX_Control(pDX, IDC_up, m_up);放在VideoWin.cpp对应区域.
      

  3.   

    能不能将HPvision.h代码贴出来.
      

  4.   

    这么用:
    GetDlgItem(你控件的ID)->MoveWindow(....);
      

  5.   

    换一种问法就是在VideoWin.cpp(类CVideoWin)中怎么去移动在对话框HPVideoDlg.cpp(类CHPVideoDlg)定义创建的IDC_up(按钮)的位置
      

  6.   

    哦,原来是这个问题,早说明大家就用不着在这儿猜了。

    VideoWin.cpp(类CVideoWin)中怎么去移动在对话框HPVideoDlg.cpp(类CHPVideoDlg)定义创建的IDC_up(按钮)的位置

    我的解决办法是 CVideoWin 向 HPVideoDlg 发送消息,
    HPVideoDlg接到这个消息后就 GetDlgItem(你控件的ID)->MoveWindow(....);
      

  7.   

    能直接在CVideoWin 里控制的吗?
      

  8.   

    OnMouseMove 后要 如果 OnMouseLButtonDown 则 SetCapture
    这样即使鼠标移出按钮也可以得到消息
    使用 GetCursorPos 取得按钮的位置,然后转换为父窗口客户区坐标
    使用 SetWindowPos 改变位置
    鼠标 OnMouseLButtonUp 后 ReleaseCapture
      

  9.   

    ::MoveWindow(GetDlgItem(控件ID)->m_hWnd,10,10,30,30,TRUE);