VC 怎么让右键弹出菜单前端显示,而不因为后台的焦点转移,比如后台要弹出一个子窗口,而使菜单自动隐藏消失呢
VC 如何让右键弹出菜单前端显示,而不因为后台的焦点转移,比如后台要弹出一个子窗口,而使菜单自动隐藏消失呢
情况是这样, 两台电脑A、B,同一界面,各自保持同步通讯。 很简单,比如说,其中电脑A的界面上加载一个控件,那么电脑B也会收到消息,加载同一类型的控件。
现在的问题是,此时用户正在电脑B上面,右键弹出一个菜单,正在其中选择菜单项。。。。
但B的后台此时收到了A的消息,于是电脑B的界面焦点转移到用于显示A同步的控件信息。。。。导致此时电脑B的界面上的菜单,自动隐藏消失了。。。。
这样对用户的操作性就不友好了。。右键弹出菜单总是会被后台新的消息所干扰,而自动消失。
请问:如何既能让同一个程序一边创建一个新的子对话框,并显示。。。一边使右键弹出菜单不会因此而自动消失,而是在用户的主动操作下才消失呢???
------解决方案--------------------
你创建的对话框是不是模式对话框?
在该对话框的OnInitDialog()函数中加入以下代码:
SetWindowPos(&wndTop,0,0,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE);
这样不让对话框激活,你看行不?
------解决方案--------------------
应该是同步没有处理好,B收到A发送来的消息的时候,不应该立即就进行处理,要先判断一下是正在进行其他的操作,如果是,就应该等待操作完成然后再响应。。。
------解决方案--------------------
路过看看,顺便帮顶~
情况是这样, 两台电脑A、B,同一界面,各自保持同步通讯。 很简单,比如说,其中电脑A的界面上加载一个控件,那么电脑B也会收到消息,加载同一类型的控件。
现在的问题是,此时用户正在电脑B上面,右键弹出一个菜单,正在其中选择菜单项。。。。
但B的后台此时收到了A的消息,于是电脑B的界面焦点转移到用于显示A同步的控件信息。。。。导致此时电脑B的界面上的菜单,自动隐藏消失了。。。。
这样对用户的操作性就不友好了。。右键弹出菜单总是会被后台新的消息所干扰,而自动消失。
请问:如何既能让同一个程序一边创建一个新的子对话框,并显示。。。一边使右键弹出菜单不会因此而自动消失,而是在用户的主动操作下才消失呢???
------解决方案--------------------
你创建的对话框是不是模式对话框?
在该对话框的OnInitDialog()函数中加入以下代码:
SetWindowPos(&wndTop,0,0,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE);
这样不让对话框激活,你看行不?
------解决方案--------------------
应该是同步没有处理好,B收到A发送来的消息的时候,不应该立即就进行处理,要先判断一下是正在进行其他的操作,如果是,就应该等待操作完成然后再响应。。。
------解决方案--------------------
路过看看,顺便帮顶~