[求助]arx无模式对话框焦点问题
请问如何编写无模式获取焦点的函数,使它能在鼠标移动到对话框上面的时候自动获得对话框焦点,离开对话框时自动获得cad窗口的焦点。类似cad的属性对话框。请高手们指点。谢谢 利用鼠标移动发信息,在话框上面时自动获得对话框焦点,离开对话框时自动获得cad窗口的焦点。 本帖最后由 作者 于 2007-4-18 9:25:15 编辑 <br /><br /> <p>使用Mouseleave事件可以获取到鼠标离开的事件,调用acedGetAcadDwgView()->SetFocus()可以使ACAD获取到焦点,具体实现方法如下:<br/>添加OnMouseMove和OnMouseLeave两个事件和状态指示变量bTrackLeave:<br/>.h:<br/> static BOOL bTrackLeave;<br/> afx_msg LPARAM OnMouseLeave(WPARAM wp, LPARAM lp);<br/> afx_msg void OnMouseMove(UINT nFlags, CPoint point);</p><p>.cpp:<br/>BEGIN_MESSAGE_MAP(CElemHierDlgChildDlg, CAcUiDialog)<br/>....<br/>ON_WM_MOUSEMOVE()<br/>ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)<br/>....<br/>END_MESSAGE_MAP()</p><p>BOOL C****::bTrackLeave=FALSE;</p><p><br/>void C****::OnMouseMove(UINT nFlags, CPoint point)<br/>{<br/> if (!bTrackLeave)<br/> {<br/> TRACKMOUSEEVENT tme;<br/> tme.cbSize = sizeof(tme);<br/> tme.hwndTrack = m_hWnd;<br/> tme.dwFlags = TME_LEAVE;</p><p> if(_TrackMouseEvent(&tme))<br/> bTrackLeave = TRUE;<br/> }<br/> CAcUiDialog::OnMouseMove(nFlags, point);<br/>}</p><p>LPARAM C****::OnMouseLeave(WPARAM wp, LPARAM lp)<br/>{<br/> bTrackLeave = FALSE;<br/> acedGetAcadDwgView()->SetFocus();<br/> return 0;</p><p>}</p>
页:
[1]