怎么有条件的忽略鼠标按下?详见内
求助:如何有条件的忽略鼠标按下?详见内
我的程序在屏幕下半部。当按在屏幕上半部时,若在上半部有其他窗口,将会发生窗口切换(本窗口被别的窗口盖住)。我需要当鼠标按在上半部时不会发生窗口切换,当我鼠标按在下半部时,程序正常响应,如何实现?
------解决方案--------------------
设置你的窗口扩展风格为WS_EX_TOPMOST
------解决方案--------------------
只能通过钩钩子来解决了.
------解决方案--------------------
1楼兄弟说得对
------解决方案--------------------
自己获取矩形大小,处在上部分,响应一个消息,处在下部分,响应另一个消息.
------解决方案--------------------
最简单的建一个和桌面同样的大小的窗口作为最外层的父窗口,且不响应任何消息!!
楼主的程序则是其子窗口
------解决方案--------------------
HOOK吧
------解决方案--------------------
SetCapture
------解决方案--------------------
不怕麻烦的话设置个timer,监控焦点不在你的程序上,就模拟鼠标点击,这样的话你的程序会一直获得焦点。
在初始化函数中设置TOP_MOST和TIMER
CRect rect;
this-> GetWindowRect(&rect);
::SetWindowPos(this-> GetSafeHwnd(),HWND_TOPMOST,0,0,rect.Width(),rect.Height(),NULL);
SetTimer(1,100,NULL);
TIMER函数的实现
void CFocusDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CWnd *pWnd = this-> GetFocus();
CRect rect;
this-> GetWindowRect(&rect);
if(pWnd == NULL)
{
::ShowWindow(this-> GetSafeHwnd(),SW_SHOW);
SetCursorPos(rect.left+rect.Width()/2, rect.top+rect.Height()/2);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}
CDialog::OnTimer(nIDEvent);
}
我的程序在屏幕下半部。当按在屏幕上半部时,若在上半部有其他窗口,将会发生窗口切换(本窗口被别的窗口盖住)。我需要当鼠标按在上半部时不会发生窗口切换,当我鼠标按在下半部时,程序正常响应,如何实现?
------解决方案--------------------
设置你的窗口扩展风格为WS_EX_TOPMOST
------解决方案--------------------
只能通过钩钩子来解决了.
------解决方案--------------------
1楼兄弟说得对
------解决方案--------------------
自己获取矩形大小,处在上部分,响应一个消息,处在下部分,响应另一个消息.
------解决方案--------------------
最简单的建一个和桌面同样的大小的窗口作为最外层的父窗口,且不响应任何消息!!
楼主的程序则是其子窗口
------解决方案--------------------
HOOK吧
------解决方案--------------------
SetCapture
------解决方案--------------------
不怕麻烦的话设置个timer,监控焦点不在你的程序上,就模拟鼠标点击,这样的话你的程序会一直获得焦点。
在初始化函数中设置TOP_MOST和TIMER
CRect rect;
this-> GetWindowRect(&rect);
::SetWindowPos(this-> GetSafeHwnd(),HWND_TOPMOST,0,0,rect.Width(),rect.Height(),NULL);
SetTimer(1,100,NULL);
TIMER函数的实现
void CFocusDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CWnd *pWnd = this-> GetFocus();
CRect rect;
this-> GetWindowRect(&rect);
if(pWnd == NULL)
{
::ShowWindow(this-> GetSafeHwnd(),SW_SHOW);
SetCursorPos(rect.left+rect.Width()/2, rect.top+rect.Height()/2);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}
CDialog::OnTimer(nIDEvent);
}