急!!! 怎么在运行时用鼠标移动控件的位置--欢迎讨论, 一直在线. 现在突然遇到了这个问题, 程序运行时,需要在Dialog中要用鼠标移动控件的位置, 如文本框, 图片, 按钮等. 现在不知该怎样实现, 希望各位大侠帮忙, 在线等待, 也欢迎大家来讨论. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在移动的位置调用Movewindow()就 可以;额 BOOL MoveWindow( HWND hWnd, // handle to window int X, // horizontal position int Y, // vertical position int nWidth, // width int nHeight, // height BOOL bRepaint // repaint option); 不行吧, 首先应该得到控件的hwnd, 但是有多个控件, 应该先确定Cursor下面的是控件还是Dlg, 如果是控件才可以移动, 这里是怎么判断的? 我一步就搞不定了, 请 arvid_gs(west) 大侠详细指点. MoveWindow 或 SetWindowPos也许都行, 但具体怎么实现我是不会的. ChildWindowFromPoint来判断是否选中了控件 void MoveWindow( int x, int y, int nWidth, int nHeight, BOOL bRepaint = TRUE ); 我想应该是这样的:在鼠标移动的时候判断鼠标左键是否按下,当前具备焦点的控件是否是你所需要的控件,把该控件MoveWindow到当前点 BOOL CTitleHeightDlg::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_LBUTTONDOWN: if (pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd || pMsg->hwnd == m_edit1.m_hWnd) ::SendMessage(pMsg->hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0); break; } return CDialog::PreTranslateMessage(pMsg);} 多谢以上诸位的帮助, 你们的方法可以在MFC的程序中正常运行, 但是我在COM中生成Dlg后却不能使用ChildWindowFromPoint得到控件HWND, 不知什么原因, 现在给先结贴, 如果大家有兴趣可以继续讨论. 请高手赐教 谁能给我个串口监视线程的源代码?谢谢了! 中秋大放分!祝大家节日快乐! 高手请看:如何访问SQL SERVER 存储过程返回的结果集 如何获取一个编辑框指针 谁有现成《项目需求说明书》,给我发一份。急!!! 怎样调试动态链接库? 如何从工作区中删除一个工程? 如何利用线程打开外部程序? asf文件转wav的代码有吗? 我的关于atl开发Activex的见解,望高手指正! 如何画一个半透明的区域
Movewindow()就 可以;额
HWND hWnd, // handle to window
int X, // horizontal position
int Y, // vertical position
int nWidth, // width
int nHeight, // height
BOOL bRepaint // repaint option
);
请 arvid_gs(west) 大侠详细指点. MoveWindow 或 SetWindowPos也许都行, 但具体怎么实现我是不会的.
{
switch (pMsg->message)
{
case WM_LBUTTONDOWN:
if (pMsg->hwnd == GetDlgItem(IDC_BUTTON1)->m_hWnd
|| pMsg->hwnd == m_edit1.m_hWnd)
::SendMessage(pMsg->hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
break;
}
return CDialog::PreTranslateMessage(pMsg);
}