亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

模式對話框的顯示控制方法及裝置的制作方法

文檔序號:6430995閱讀:116來源:國知局
專利名稱:模式對話框的顯示控制方法及裝置的制作方法
技術(shù)領域
本發(fā)明涉及計算機應用領域,具體而言,涉及一種模式對話框的顯示控制方法及裝置。
背景技術(shù)
目前,電腦的桌面程序中經(jīng)常需要顯示各種各樣的對話框,以實現(xiàn)主程序界面無法實現(xiàn)的特定功能。對話框一般分為模式對話框和非模式對話框兩種,其中,模式對話框創(chuàng)建后,其他程序的對話框便不能被操作,必須將該模式對話框關(guān)閉后,其他對話框才能被操作。而非模式對話框則無此限制,它不強制要求用戶立即反應,而是與其他對話框可以同時接受用戶操作。一般情況下,非模式對話框能夠給用戶帶來更好的操作體驗。但在某些場景下, 模式對話框卻是必須的,如“選擇打開文件”、“指定保存文件路徑”等等。這些情況下,用戶必須完成指定工作才能進行其他工作,在未完成指定工作前,用戶不能對后臺的主窗口進行任何操作,包括最大化、最小化以及移動等操作。由此,上述原因給用戶帶來了一個問題, 即如果模式對話框的內(nèi)容遮擋了主窗口的內(nèi)容,用戶只能通過移動模式對話框來看到后面的內(nèi)容,卻不能同時移動主窗口,也無法用并排查看等常用的窗口排列方式來查看主窗口的內(nèi)容。這樣,給用戶的操作帶來了極大的不便。

發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種模式對話框的顯示控制方法及裝置,以至少解決上述問題。根據(jù)本發(fā)明的一個方面,提供了一種模式對話框的顯示控制方法,包括在顯示模式對話框時,監(jiān)聽鼠標的全局移動和點擊事件;在監(jiān)聽到鼠標在模式對話框的父窗口上的點擊不放開并拖動的事件時,根據(jù)預設的位置與消息的對應關(guān)系,獲取與該標點擊時的位置對應的消息,并將該消息發(fā)送給父窗口,其中,該消息包括指示移動窗口位置的消息或指示改變窗口大小的消息;父窗口接收該消息,執(zhí)行與該消息相應的操作。根據(jù)本發(fā)明的另一方面,提供了一種模式對話框的顯示控制裝置,包括監(jiān)聽模塊,用于在顯示模式對話框時,監(jiān)聽鼠標的全局移動和點擊事件;獲取模塊,用于在監(jiān)聽到鼠標在模式對話框的父窗口上的點擊不放開并拖動的事件時,根據(jù)預設的位置與消息的對應關(guān)系,獲取與鼠標點擊時的位置對應的消息,其中,該消息包括指示移動窗口位置的消息或指示改變窗口大小的消息;發(fā)送模塊,用于在獲取模塊獲取到與鼠標點擊時的位置對應的消息后,將該消息發(fā)送給父窗口 ;執(zhí)行模塊,位于父窗口,用于接收上述消息,執(zhí)行與該消息相應的操作。通過本發(fā)明,采用在不改變模式對話框邏輯的前提下通過技術(shù)手段向父窗口發(fā)送指示移動窗口位置信息和指示改變窗口大小信息,解決了用戶在模式對話框的情境下不能對父窗口進行移動的問題,進而達到了提高用戶體驗的效果。


此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中圖1是根據(jù)本發(fā)明實施例的模式對話框的顯示控制方法的流程圖;圖2是根據(jù)本發(fā)明優(yōu)選實施例的效果顯示圖片;圖3是根據(jù)本發(fā)明實施例的模式對話框的顯示控制裝置的結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明實施例的模式對話框的顯示控制裝置中的模獲取模塊的一個優(yōu)選實施方式的結(jié)構(gòu)示意圖;圖5是根據(jù)本發(fā)明實施例的模式對話框的顯示控制裝置中的模獲取模塊的另一個優(yōu)選實施方式的結(jié)構(gòu)示意圖。
具體實施例方式下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。圖1是根據(jù)本發(fā)明實施例的模式對話框的顯示控制方法的流程圖,該方法主要包括以下步驟(步驟S102-步驟S106)步驟S102,在顯示模式對話框時,監(jiān)聽鼠標的全局移動和點擊事件;在實際應用中,可以先按照標準方式顯示模式對話框,同時調(diào)用預先設置好的鉤子程序(比如Η00Κ)作為監(jiān)聽程序監(jiān)聽基于全局的鼠標的任何移動位置和任何點擊事件。步驟S104,在監(jiān)聽到鼠標在模式對話框的父窗口上的點擊不放開并拖動的事件時,根據(jù)預設的位置與消息的對應關(guān)系,獲取與該標點擊時的位置對應的消息,并將該消息發(fā)送給父窗口,其中,該消息包括指示移動窗口位置的消息或指示改變窗口大小的消息;在本發(fā)明實施例中,當鼠標點擊不放并開始拖動時,監(jiān)聽程序(比如鉤子程序)首先判斷鼠標按下的起始位置,再判斷當前鼠標所處的位置是父窗口的標題欄區(qū)域還是邊框區(qū)域,根據(jù)鼠標所處的區(qū)域位置及預先設定的位置與消息的對應關(guān)系獲取該位置對應的消肩、ο例如,當確定鼠標點擊時的位置位于父窗口的標題欄區(qū)域時,從對應關(guān)系中獲取與鼠標在父窗口的標題欄區(qū)域位置對應的指示移動窗口位置的消息,向父窗口發(fā)送模擬的窗口移動WM_M0VE消息;或者,當確定鼠標點擊時的位置位于父窗口的邊框區(qū)域時,從對應關(guān)系中獲取與鼠標在父窗口的邊框區(qū)域位置對應的指示改變窗口大小的消息,向父窗口發(fā)送模擬的窗口大小改變WM_SUE消息。步驟S106,父窗口接收該消息,執(zhí)行與該消息相應的操作。在本發(fā)明實施例中,在父窗口接收到鼠標所處的區(qū)域位置及預先設定的位置與消息的對應關(guān)系獲取該位置對應的消息;例如,在Windows系統(tǒng)中,可以向父窗口發(fā)送模擬的窗口移動(WM_M0VE)消息,或者,向父窗口發(fā)送模擬的窗口大小改變(WM_SIZE)消息)時,父窗口根據(jù)WM_M0VE消息或 WM_SUE消息的指示執(zhí)行相應的操作,即在鼠標的拖動下移動位置,或者改變父窗口的大小。如圖2所示,采用本發(fā)明實施例提供提供的上述方法,在打開了一個模式對話框時,父窗口雖然處于非激活狀態(tài),但仍可以拖動父窗口。通過本發(fā)明實施例提供的上述方法,可以在打開模式對話框時,移動或改變父窗口的大小,從而提高了用戶體驗。為了更好的理解本發(fā)明實施例提供的技術(shù)方案,下面以Windows操作系統(tǒng)為例進行說明。在Windows操作系統(tǒng)中在模式對話框的顯示控制主要包括以下步驟步驟1,軟件模塊按標準方式顯示模式對話框,并在對話框中Hook鼠標的全局移動和點擊事件;例如,可以采用以下的偽代碼實現(xiàn)//開始建立全局鼠標的Hook,其中M0USE_LL參數(shù)表示需要Hook鼠標的Windows 消息;//攔截到消息后將由MouseHookProcedure函數(shù)進行處理;hMouseHook = SetffindowsHookEx(WH_MOUSE_LL, MouseHookProcedure, hlnstance,0);步驟2,當用戶操作鼠標按住不放并開始拖動時,軟件模塊判斷按下鼠標時的起始位置;例如,可以采用以下的偽代碼實現(xiàn)
//在此函數(shù)中攔截Windows消息并進行后續(xù)處理
private int MouseHookProc(int nCode, int wParam, IntPtr IParam)
{
switch (wParam) {
case WM LBUTTONDOWN:
//判斷鼠標按下并得到當前的鼠標位置;
GetCursorPos(out Pos);
break;
}
//繼續(xù)消息循環(huán)
return CallNextHookEx(hMouseHook, nCode, wParam, IParam); }步驟3,若該位置處在父窗口的標題欄區(qū)域,軟件模塊發(fā)送模擬的WM_M0VE消息給父窗口 ;例如,可以采用以下的偽代碼實現(xiàn)//攔截WM_NCCALCSIZE消息計算父窗口標題欄區(qū)域的位置和大小;
if (lParam. message == WM NCCALCSIZE)
{
RECT rt = lParam -> rgrc
; //得到矩形范圍 }
//判斷鼠標位置是否在此矩形區(qū)域內(nèi); 略..
//發(fā)送模擬的窗口移動消息;
SendMessage(parentHwnd,WM_MOVE, wParam, lParam)步驟4,若該位置處父窗口的邊框區(qū)域,軟件模塊發(fā)送模擬的WM_SUE消息給父窗 Π ;例如,可以采用以下的偽代碼實現(xiàn)
//調(diào)用WindowsAPI獲取父窗口邊框區(qū)域的位置和大??; RECT rt =GetWindowRect();
//判斷鼠標位置是否在此矩形區(qū)域內(nèi); 略..
//發(fā)送模擬的窗口改變大小的消息
SendMessage(parentHwnd,WM_SIZE, wParam, lParam);步驟5,父窗口接收到對話框發(fā)送的消息后,Windows根據(jù)消息內(nèi)容自動改變父窗口的位置和大小。從而達到了在顯示模式對話框時仍然允許用戶修改父窗口位置和大小的目的,提升了用戶的操作體驗。其中,上述偽代碼中相關(guān)Windows API聲明(以C++為例進行說明)及其意思解
釋如下
//用于安裝消息鉤子;
HHOOK WINAPI SetWindowsHookEx(—in int idHook, —in HOOKPROC lp&, —in HINSTANCE hMod, —in DWORDdwThreadId
);
//用于卸載消息鉤子;
BOOL WINAPI UnhookWindowsHookEx( —in HHOOK hhk
);
//用于將hook信息傳遞到鏈表中下一個hook處理過程;
LRESULT WINAPI CallNextHookEx( —inopt HHOOK hhk, —in int nCode, —in WPARAM wParam, —in LPARAM IParam
);
//得到鼠標當前位置;
BOOL WINAPI GetCursorPos( —out LPP0INT IpPoint
);
//發(fā)送Windows消息到指定窗口中
LRESULT WINAPI SendMessage( —in HWND hWnd, —in UINT Msg, —in WPARAM wParam, —in LPARAM IParam
); 相關(guān)技術(shù)中,用戶在打開模式對話框時,由于模式對話框的固有程序?qū)傩缘脑颍?導致了用戶不能對主窗口進行移動或改變大小的操作,本發(fā)明實施例通過采用在不改變模式對話框邏輯的前提下通過技術(shù)手段向父窗口發(fā)送指示移動窗口位置信息和指示改變窗口大小信息的方式,解決了用戶在模式對話框的情境下不能對父窗口進行移動的問題,進而達到了提高用戶體驗的效果。圖3是根據(jù)本發(fā)明實施例的模式對話框的顯示控制裝置的結(jié)構(gòu)示意圖,該裝置可以用于實現(xiàn)本發(fā)明實施例提供的上述方法。如圖3所示,該裝置主要包括監(jiān)聽模塊10、獲取模塊20、發(fā)送模塊30以及執(zhí)行模塊40。其中,監(jiān)聽模塊10,用于在顯示模式對話框時,監(jiān)聽鼠標的全局移動和點擊事件;獲取模塊20,與監(jiān)聽模塊10連接,用于在監(jiān)聽到鼠標在模式對話框的父窗口上的點擊不放開并拖動的事件時,根據(jù)預設的位置與消息的對應關(guān)系, 獲取與鼠標點擊時的位置對應的消息,其中,該消息包括指示移動窗口位置的消息或指示改變窗口大小的消息;發(fā)送模塊30,與獲取模塊20連接,用于在獲取模塊獲取到與鼠標點擊時的位置對應的消息后,將該消息發(fā)送給父窗口 ;執(zhí)行模塊40,位于父窗口,與發(fā)送模塊 30連接,用于接收上述消息,執(zhí)行與該消息相應的操作。其中,監(jiān)聽模塊10主要用于通過調(diào)用預先設置的勾子(Hook)程序監(jiān)聽鼠標的所有全局移動軌跡和點擊事件。當然也可以通過其他類似的程序?qū)崿F(xiàn)。在本發(fā)明實施例的模式對話框的顯示控制裝置的一個優(yōu)選實施例中,如圖4所示,該模式對話框的顯示控制裝置中的獲取模塊可以包括第一確定子模塊50和第一獲取子模塊60。其中,第一確定子模塊50,用于確定鼠標點擊時的位置位于父窗口的標題欄區(qū)域;第一獲取子模塊60,與第一確定子模塊50連接,用于從對應關(guān)系中獲取與鼠標在父窗口的標題欄區(qū)域位置對應的指示移動窗口位置的消息。在本發(fā)明實施例的模式對話框的顯示控制裝置的另一個優(yōu)選實施例中,如圖5所示,該模式對話框的顯示控制裝置中的獲取模塊可以包括第二確定子模塊70和第二獲取子模塊80。其中,第二確定子模塊70,用于確定鼠標點擊時的位置位于父窗口的邊框區(qū)域; 第二獲取子模塊80,與第二確定子模塊70連接,用于從對應關(guān)系中獲取與鼠標在父窗口的邊框區(qū)域位置對應的指示改變窗口大小的消息。 需要說明的是,在實際應用中,上述第一確定子模塊50與第二確定子模塊70可以合一設置,而第一獲取子模塊60與第二獲取子模塊80也可以合一設置,具體本發(fā)明實施例不作限定。通過本發(fā)明實施例提供的上述裝置,可以在顯示模式對話框的同時,移動父窗口的位置或改變父窗口的大小,從而提高了用戶的體驗。從以上的描述中,可以看出,本發(fā)明實現(xiàn)了如下技術(shù)效果通過采用在不改變模式對話框邏輯的前提下通過技術(shù)手段向父窗口發(fā)送指示移動窗口位置信息和指示改變窗口大小信息的方式,解決了用戶在模式對話框的情境下不能對父窗口進行移動的問題,進而達到了提高用戶體驗的效果。顯然,本領域的技術(shù)人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種模式對話框的顯示控制方法,其特征在于,包括 在顯示模式對話框時,監(jiān)聽鼠標的全局移動和點擊事件;在監(jiān)聽到鼠標在所述模式對話框的父窗口上的點擊不放開并拖動的事件時,根據(jù)預設的位置與消息的對應關(guān)系,獲取與所述鼠標點擊時的位置對應的消息,并將該消息發(fā)送給所述父窗口,其中,所述消息包括指示移動窗口位置的消息或指示改變窗口大小的消息; 所述父窗口接收所述消息,執(zhí)行與所述消息相應的操作。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述監(jiān)聽鼠標的所有全局移動軌跡和點擊事件包括調(diào)用預先設置的勾子程序監(jiān)聽所述鼠標的所有全局移動軌跡和點擊事件。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取與所述鼠標點擊時的位置對應的消息,并將該消息發(fā)送給所述父窗口,包括確定所述鼠標點擊時的位置位于所述父窗口的標題欄區(qū)域,從所述對應關(guān)系中獲取與鼠標在所述父窗口的標題欄區(qū)域位置對應的指示移動窗口位置的消息; 將所述指示移動窗口位置的消息發(fā)送位給所述父窗口。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,將所述指示移動窗口位置的消息發(fā)送位給所述父窗口,包括向所述父窗口發(fā)送模擬的窗口移動WM_M0VE消息。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取與所述鼠標點擊時的位置對應的消息,并將該消息發(fā)送給所述父窗口,包括確定所述鼠標點擊時的位置位于所述父窗口的邊框區(qū)域,從所述對應關(guān)系中獲取與鼠標在所述父窗口的邊框區(qū)域位置對應的指示改變窗口大小的消息; 將所述指示改變窗口大小的消息發(fā)送位給所述父窗口。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,將所述指示改變窗口大小的消息發(fā)送位給所述父窗口,包括向所述父窗口發(fā)送模擬的窗口大小改變WM_SUE消息。
7.一種模式對話框的顯示控制裝置,其特征在于,包括監(jiān)聽模塊,用于在顯示模式對話框時,監(jiān)聽鼠標的全局移動和點擊事件; 獲取模塊,用于在監(jiān)聽到鼠標在所述模式對話框的父窗口上的點擊不放開并拖動的事件時,根據(jù)預設的位置與消息的對應關(guān)系,獲取與所述鼠標點擊時的位置對應的消息,其中,所述消息包括指示移動窗口位置的消息或指示改變窗口大小的消息;發(fā)送模塊,用于在獲取模塊獲取到與所述鼠標點擊時的位置對應的消息后,將所述消息發(fā)送給所述父窗口;執(zhí)行模塊,位于所述父窗口,用于接收所述消息,執(zhí)行與所述消息相應的操作。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述監(jiān)聽模塊用于通過調(diào)用預先設置的勾子程序監(jiān)聽所述鼠標的所有全局移動軌跡和點擊事件。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述獲取模塊包括第一確定子模塊,用于確定所述鼠標點擊時的位置位于所述父窗口的標題欄區(qū)域; 第一獲取子模塊,用于從所述對應關(guān)系中獲取與鼠標在所述父窗口的標題欄區(qū)域位置對應的指示移動窗口位置的消息。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述獲取模塊包括第二確定子模塊,用于確定所述鼠標點擊時的位置位于所述父窗口的邊框區(qū)域; 第二獲取子模塊,用于從所述對應關(guān)系中獲取與鼠標在所述父窗口的邊框區(qū)域位置對應的指示改變窗口大小的消息。
全文摘要
本發(fā)明公開了一種模式對話框的顯示控制方法及裝置,其中,該方法包括在顯示模式對話框時,監(jiān)聽鼠標的全局移動和點擊事件;在監(jiān)聽到鼠標在所述模式對話框的父窗口上的點擊不放開并拖動的事件時,根據(jù)預設的位置與消息的對應關(guān)系,獲取與所述鼠標點擊時的位置對應的消息,并將該消息發(fā)送給所述父窗口,其中,所述消息包括指示移動窗口位置的消息或指示改變窗口大小的消息;所述父窗口接收所述消息,執(zhí)行與所述消息相應的操作。通過本發(fā)明,當模式對話框的主窗口的內(nèi)容被遮擋住時,用戶可以對主窗口進行移動,從而提高了用戶體驗。
文檔編號G06F3/048GK102436339SQ20111023667
公開日2012年5月2日 申請日期2011年8月17日 優(yōu)先權(quán)日2011年8月17日
發(fā)明者倪永全, 桓永興 申請人:北京數(shù)碼大方科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1