模式对话框的显示控制方法及装置制造方法及图纸

技术编号:7311504 阅读:220 留言:0更新日期:2012-05-03 07:25
本发明专利技术公开了一种模式对话框的显示控制方法及装置,其中,该方法包括:在显示模式对话框时,监听鼠标的全局移动和点击事件;在监听到鼠标在所述模式对话框的父窗口上的点击不放开并拖动的事件时,根据预设的位置与消息的对应关系,获取与所述鼠标点击时的位置对应的消息,并将该消息发送给所述父窗口,其中,所述消息包括指示移动窗口位置的消息或指示改变窗口大小的消息;所述父窗口接收所述消息,执行与所述消息相应的操作。通过本发明专利技术,当模式对话框的主窗口的内容被遮挡住时,用户可以对主窗口进行移动,从而提高了用户体验。

【技术实现步骤摘要】

本专利技术涉及计算机应用领域,具体而言,涉及一种模式对话框的显示控制方法及装置
技术介绍
目前,电脑的桌面程序中经常需要显示各种各样的对话框,以实现主程序界面无法实现的特定功能。对话框一般分为模式对话框和非模式对话框两种,其中,模式对话框创建后,其他程序的对话框便不能被操作,必须将该模式对话框关闭后,其他对话框才能被操作。而非模式对话框则无此限制,它不强制要求用户立即反应,而是与其他对话框可以同时接受用户操作。一般情况下,非模式对话框能够给用户带来更好的操作体验。但在某些场景下, 模式对话框却是必须的,如“选择打开文件”、“指定保存文件路径”等等。这些情况下,用户必须完成指定工作才能进行其他工作,在未完成指定工作前,用户不能对后台的主窗口进行任何操作,包括最大化、最小化以及移动等操作。由此,上述原因给用户带来了一个问题, 即如果模式对话框的内容遮挡了主窗口的内容,用户只能通过移动模式对话框来看到后面的内容,却不能同时移动主窗口,也无法用并排查看等常用的窗口排列方式来查看主窗口的内容。这样,给用户的操作带来了极大的不便。
技术实现思路
本专利技术的主要目的在于提供一种模式对话框的显示控制方法及装置,以至少解决上述问题。根据本专利技术的一个方面,提供了一种模式对话框的显示控制方法,包括在显示模式对话框时,监听鼠标的全局移动和点击事件;在监听到鼠标在模式对话框的父窗口上的点击不放开并拖动的事件时,根据预设的位置与消息的对应关系,获取与该标点击时的位置对应的消息,并将该消息发送给父窗口,其中,该消息包括指示移动窗口位置的消息或指示改变窗口大小的消息;父窗口接收该消息,执行与该消息相应的操作。根据本专利技术的另一方面,提供了一种模式对话框的显示控制装置,包括监听模块,用于在显示模式对话框时,监听鼠标的全局移动和点击事件;获取模块,用于在监听到鼠标在模式对话框的父窗口上的点击不放开并拖动的事件时,根据预设的位置与消息的对应关系,获取与鼠标点击时的位置对应的消息,其中,该消息包括指示移动窗口位置的消息或指示改变窗口大小的消息;发送模块,用于在获取模块获取到与鼠标点击时的位置对应的消息后,将该消息发送给父窗口 ;执行模块,位于父窗口,用于接收上述消息,执行与该消息相应的操作。通过本专利技术,采用在不改变模式对话框逻辑的前提下通过技术手段向父窗口发送指示移动窗口位置信息和指示改变窗口大小信息,解决了用户在模式对话框的情境下不能对父窗口进行移动的问题,进而达到了提高用户体验的效果。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中图1是根据本专利技术实施例的模式对话框的显示控制方法的流程图;图2是根据本专利技术优选实施例的效果显示图片;图3是根据本专利技术实施例的模式对话框的显示控制装置的结构示意图;图4是根据本专利技术实施例的模式对话框的显示控制装置中的模获取模块的一个优选实施方式的结构示意图;图5是根据本专利技术实施例的模式对话框的显示控制装置中的模获取模块的另一个优选实施方式的结构示意图。具体实施例方式下文中将参考附图并结合实施例来详细说明本专利技术。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。图1是根据本专利技术实施例的模式对话框的显示控制方法的流程图,该方法主要包括以下步骤(步骤S102-步骤S106)步骤S102,在显示模式对话框时,监听鼠标的全局移动和点击事件;在实际应用中,可以先按照标准方式显示模式对话框,同时调用预先设置好的钩子程序(比如Η00Κ)作为监听程序监听基于全局的鼠标的任何移动位置和任何点击事件。步骤S104,在监听到鼠标在模式对话框的父窗口上的点击不放开并拖动的事件时,根据预设的位置与消息的对应关系,获取与该标点击时的位置对应的消息,并将该消息发送给父窗口,其中,该消息包括指示移动窗口位置的消息或指示改变窗口大小的消息;在本专利技术实施例中,当鼠标点击不放并开始拖动时,监听程序(比如钩子程序)首先判断鼠标按下的起始位置,再判断当前鼠标所处的位置是父窗口的标题栏区域还是边框区域,根据鼠标所处的区域位置及预先设定的位置与消息的对应关系获取该位置对应的消肩、ο例如,当确定鼠标点击时的位置位于父窗口的标题栏区域时,从对应关系中获取与鼠标在父窗口的标题栏区域位置对应的指示移动窗口位置的消息,向父窗口发送模拟的窗口移动WM_M0VE消息;或者,当确定鼠标点击时的位置位于父窗口的边框区域时,从对应关系中获取与鼠标在父窗口的边框区域位置对应的指示改变窗口大小的消息,向父窗口发送模拟的窗口大小改变WM_SUE消息。步骤S106,父窗口接收该消息,执行与该消息相应的操作。在本专利技术实施例中,在父窗口接收到鼠标所处的区域位置及预先设定的位置与消息的对应关系获取该位置对应的消息;例如,在Windows系统中,可以向父窗口发送模拟的窗口移动(WM_M0VE)消息,或者,向父窗口发送模拟的窗口大小改变(WM_SIZE)消息)时,父窗口根据WM_M0VE消息或 WM_SUE消息的指示执行相应的操作,即在鼠标的拖动下移动位置,或者改变父窗口的大小。如图2所示,采用本专利技术实施例提供提供的上述方法,在打开了一个模式对话框时,父窗口虽然处于非激活状态,但仍可以拖动父窗口。通过本专利技术实施例提供的上述方法,可以在打开模式对话框时,移动或改变父窗口的大小,从而提高了用户体验。为了更好的理解本专利技术实施例提供的技术方案,下面以Windows操作系统为例进行说明。在Windows操作系统中在模式对话框的显示控制主要包括以下步骤步骤1,软件模块按标准方式显示模式对话框,并在对话框中Hook鼠标的全局移动和点击事件;例如,可以采用以下的伪代码实现//开始建立全局鼠标的Hook,其中M0USE_LL参数表示需要Hook鼠标的Windows 消息;//拦截到消息后将由MouseHookProcedure函数进行处理;hMouseHook = SetffindowsHookEx(WH_MOUSE_LL, MouseHookProcedure, hlnstance,0);步骤2,当用户操作鼠标按住不放并开始拖动时,软件模块判断按下鼠标时的起始位置;例如,可以采用以下的伪代码实现//在此函数中拦截Windows消息并进行后续处理private int MouseHookProc(int nCode, int wParam, IntPtr IParam){switch (wParam) {case WM LBUTTONDOWN://判断鼠标按下并得到当前的鼠标位置;GetCursorPos(out Pos);break;}//继续消息循环return CallNextHookEx(hMouseHook, nCode, wParam, IParam); }步骤3,若该位置处在父窗口的标题栏区域,软件模块发送模拟的WM_M0VE消息给父窗口 ;例如,可以采用以下的伪代码实现//拦截WM_NCCALCSIZE消息计算父窗口标题栏区域的位置和大小;if (lParam. message == WM NCCALCSIZE){RECT rt = lParam -> 本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:倪永全桓永兴
申请(专利权)人:北京数码大方科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术