![]() |
【转帖】[求助]arx无模式对话框焦点问题
[求助]arx无模式对话框焦点问题
[求助]arx无模式对话框焦点问题 请问如何编写无模式获取焦点的函数,使它能在鼠标移动到对话框上面的时候自动获得对话框焦点,离开对话框时自动获得cad窗口的焦点。类似cad的属性对话框。请高手们指点。谢谢 利用鼠标移动发信息,在话框上面时自动获得对话框焦点,离开对话框时自动获得cad窗口的焦点。 使用mouseleave事件可以获取到鼠标离开的事件,调用acedgetacaddwgview()->setfocus()可以使acad获取到焦点,具体实现方法如下: 添加onmousemove和onmouseleave两个事件和状态指示变量btrackleave: .h: static bool btrackleave; afx_msg lparam onmouseleave(wparam wp, lparam lp); afx_msg void onmousemove(uint nflags, cpoint point); .cpp: begin_message_map(celemhierdlgchilddlg, cacuidialog) .... on_wm_mousemove() on_message(wm_mouseleave,onmouseleave) .... end_message_map() bool c****::btrackleave=false; void c****::onmousemove(uint nflags, cpoint point) { if (!btrackleave) { trackmouseevent tme; tme.cbsize = sizeof(tme); tme.hwndtrack = m_hwnd; tme.dwflags = tme_leave; if(_trackmouseevent(&tme)) btrackleave = true; } cacuidialog::onmousemove(nflags, point); } lparam c****::onmouseleave(wparam wp, lparam lp) { btrackleave = false; acedgetacaddwgview()->setfocus(); return 0; } |
| 所有的时间均为北京时间。 现在的时间是 10:20 PM. |