怎么实现子窗口接收鼠标移动消息,父窗口不接收鼠标移动消息。 菜单窗口。 当你右键弹出菜单窗口时,父窗口不响应鼠标移动,子窗口响应鼠标移动消息。具体实现是怎么弄的?请大侠赐教、。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/w8u/archive/2010/07/27/5769702.aspx 情况是这样的:自己用SDK写一个类似菜单窗口的“窗口”.响应右键单击:创建菜单窗口WM_RBUTTONDOWN: menu_window = new CxMenuWindow; menu_window->create_window(............); menu_window->show_window();class CxMenuWnd{ LRSULET window_proc(....) { switch(message) { case WM_ACTIVE: { if (LOWORD(wParam) == WA_INACTIVE)//当窗口变为不活动 销毁窗口 { send_message(WM_DESTORY, 0,0); } } break; } }}我在主窗口的按钮上。响应了鼠标移动消息。当鼠标移动到主窗口的button按钮上。就弹出一个提示窗口。// 但是情况糟糕的是。理想情况是: 当菜单窗口创建成功时, 鼠标移动的到主窗口上按钮上时(不创建窗口),如果主窗口不接收鼠标移动消息。按钮它就不会创建窗口了。糟糕的是: 当我菜单窗口创建成功了。 当我鼠标移动到主窗口上的时候,主窗口的button按钮响应了鼠标移动消息, 创建了提示窗口,而菜单窗口就销毁了。(因为不是活动窗口了)。怎样才能实现。。当创建菜单窗口成功时,鼠标移动到主窗口的button按钮上时,button按钮不创建窗口。 先让你的子窗口直接获得鼠标的控制权,进行操作,完事后再放了鼠标的控制权.如你的子窗口类为Cmywnd.Cmywnd mywnd;mywnd->SetCapture(); //窗口持续获得鼠标消息......//这里进行你要的操作.如MOVE()等mywnd->RelesseCapture(); //释放鼠标控件权. WM_ACTIVATE:创建窗口变为活动状态时,SetCapture;当左键按下时:在WM_LBUTTONDOWN: POINT point; point.x = LOWORD(lParam); ............... RECT window_rect; GetWindowRect(...); if(!PtInRect(&window_rect,point)) //单击不在此窗口。发送销毁消息 { send_message(WM_DESTORY,0,0); } WM_RBUTTONDOWN: //右键消息给父窗口创建菜单 { get_parent_window()->send_message(WM_RBUTTONDOWN, wParam, lParam); } break; 基本的菜单窗口模型出来了。哈哈。。谢谢各位。 GDI能不能实现透明窗纸啊? 以后抢沙发的难度加大了~今天,一回帖:SF------------->回复内容太短了! 文件相对路径的问题 CDHtmlDialog的使用问题 网络编程学习 关于api hook的问题! 如何响应动态创建的控件?? *** 想对BMP文件从bfoffBits开始的数据直接读取来显示位图(256色),怎么实现? 无奈了,求高手解决OCX在IIS网站下无法加载问题 苦恼!! !请教 MFC高手: SDI 程序的 CMainFrame 对象在哪里 new 出来? vs2005双击控件提示重载函数已存在???? 从CHeaderCtrl派生类的问题
自己用SDK写一个类似菜单窗口的“窗口”.
响应右键单击:创建菜单窗口
WM_RBUTTONDOWN:
menu_window = new CxMenuWindow;
menu_window->create_window(............);
menu_window->show_window();
class CxMenuWnd
{
LRSULET window_proc(....)
{
switch(message)
{
case WM_ACTIVE:
{
if (LOWORD(wParam) == WA_INACTIVE)//当窗口变为不活动 销毁窗口
{
send_message(WM_DESTORY, 0,0);
}
}
break;
}
}
}
我在主窗口的按钮上。响应了鼠标移动消息。
当鼠标移动到主窗口的button按钮上。就弹出一个提示窗口。// 但是情况糟糕的是。理想情况是:
当菜单窗口创建成功时, 鼠标移动的到主窗口上按钮上时(不创建窗口),
如果主窗口不接收鼠标移动消息。按钮它就不会创建窗口了。
糟糕的是:
当我菜单窗口创建成功了。
当我鼠标移动到主窗口上的时候,主窗口的button按钮响应了鼠标移动消息,
创建了提示窗口,而菜单窗口就销毁了。(因为不是活动窗口了)。
怎样才能实现。。当创建菜单窗口成功时,鼠标移动到主窗口的button按钮上时,
button按钮不创建窗口。
如你的子窗口类为Cmywnd.Cmywnd mywnd;
mywnd->SetCapture(); //窗口持续获得鼠标消息
......//这里进行你要的操作.如MOVE()等
mywnd->RelesseCapture(); //释放鼠标控件权.
创建窗口变为活动状态时,SetCapture;当左键按下时:
在WM_LBUTTONDOWN:
POINT point;
point.x = LOWORD(lParam);
...............
RECT window_rect;
GetWindowRect(...);
if(!PtInRect(&window_rect,point)) //单击不在此窗口。发送销毁消息
{
send_message(WM_DESTORY,0,0);
}
WM_RBUTTONDOWN: //右键消息给父窗口创建菜单
{
get_parent_window()->send_message(WM_RBUTTONDOWN, wParam, lParam);
}
break; 基本的菜单窗口模型出来了。哈哈。。谢谢各位。