首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么获得对话框中某个CButton的 hwnd

2012-01-21 
如何获得对话框中某个CButton的 hwnd我需要做一个,当鼠标经过这个CButton时使用SendMessage发送一个单击消

如何获得对话框中某个CButton的 hwnd
我需要做一个   ,当鼠标经过这个CButton时   使用SendMessage发送一个单击消息
void   CMyhookDlg::OnMouseMove(UINT   nFlags,   CPoint   point)  
{
CString   str;
str.Format( "%d ",point.x);
GetDlgItem(IDC_EDIT1)-> SetWindowText(str)
if(point.x> 340)
::SendMessage(m_hWnd,WM_CLOSE,0,0);
CDialog::OnMouseMove(nFlags,   point);
}

我先用WM_CLOSE试了一下,当鼠标point.x> 340的确可以关闭对话框,但是经过这个Button时不能(Button位置大于340)

[解决办法]
如何获得对话框中某个CButton的 hwnd ??
GetDlgItem(IDC_)

在经过Button时, 消息让给Button处理了, 所以自己就没这个消息了

用 PreTranslateMessage可以接到这个消息
[解决办法]
CEdit* pBoxOne;
pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1);
if(point.x> 340)
::SendMessage(pBoxOne-> m_hWnd, WM_CLOSE, 0, 0);

[解决办法]
当鼠标MOVE到BUTTON时,mouse move事件会被BUTTON截获掉,因此只能靠PreTranslateMessage来做,通过判断鼠标事件,同时判断鼠标的位置来决定当前鼠标的位置。

需要注意的是,如果你有子Dialog时,即便是domodal,如果其中有COMBOX的话,鼠标事件还是会漏下来,这时就需要另外加处理
[解决办法]
那楼主派生按钮,重写这个按钮的OnMouseMove类可不可以?
[解决办法]
SetCapture, ReleaseCapture

热点排行