способ и система для реализации обмена сообщениями в прикладной программе с несколькими вкладками

Классы МПК:G06F3/048 средства взаимодействия для графических интерфейсов пользователя, например взаимодействие через окна, иконки или меню
G06F9/44 устройства для выполнения специальных программ
Автор(ы):
Патентообладатель(и):БЕЙДЖИНГ СОГОУ ТЕКНОЛОДЖИ ДЕВЕЛОПМЕНТ КО., ЛТД. (CN)
Приоритеты:
подача заявки:
2010-01-22
публикация патента:

Изобретение относится к области программирования прикладных программ с несколькими вкладками. Техническим результатом является предотвращение распространения зависания окон страниц. Способ выполнения обмена сообщениями, относящийся к прикладной программе с несколькими, вкладками включает в себя этап создания одного или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня, при этом окном верхнего уровня является окно, не имеющее родительского окна, или родительским окном окна верхнего уровня является окно рабочего стола. А также, согласно заявленному способу, выполняют обмен сообщениями, относящимися к одному или более окнам страниц. 2 н. и 19 з.п. ф-лы, 6 ил.

способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693

Формула изобретения

1. Способ выполнения обмена сообщениями, относящегося к прикладной программе с несколькими вкладками, содержащий этапы, на которых:

создают одно или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня, при этом окном верхнего уровня является окно, не имеющее родительского окна, или родительским окном окна верхнего уровня является окно рабочего стола; и

выполняют обмен сообщениями, относящимися к одному или более окнам страниц.

2. Способ по п.1, в котором создание одного или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, в качестве одного или более окон верхнего уровня дополнительно содержит этап, на котором:

создают одно или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня на том же уровне, что и главное окно прикладной программы с несколькими вкладками.

3. Способ по п.1, в котором выполнение обмена сообщениями, относящимися к окнам страницы, содержит этап, на котором:

отправляют посредством главного окна прикладной программы с несколькими вкладками одно или более сообщений упомянутым одному или более окнам страниц в неблокирующем режиме.

4. Способ по п.3, в котором неблокирующий режим включает в себя:

асинхронный режим отправки сообщений или синхронный режим отправки сообщений с механизмом тайм-аута.

5. Способ по п.1, в котором выполнение обмена сообщениями, относящимися к окнам страниц, содержит этапы, на которых:

создают и сохраняют отношение сопоставления между главным окном прикладной программы с несколькими вкладками и упомянутыми одним или более окнами страниц;

отправляют посредством главного окна одно или более сообщений упомянутым одному или более окнам страниц на основе упомянутого отношения сопоставления между главным окном и одним или более окнами страниц;

инициируют выполнение упомянутыми одним или более окнами страниц одной или более операций, соответствующих принятым сообщениям.

6. Способ по любому из пп.1-5, дополнительно содержащий этап, на котором:

корректируют расположение и размер окон страниц для соответствия расположению и размеру главного окна прикладной программы с несколькими вкладками.

7. Способ по любому из пп.1-5, дополнительно содержащий этап, на котором:

когда определено зависание окна страницы, соответствующего вкладке, выдают пользователю подсказку.

8. Способ по любому из пп.1-5, в котором создание одного или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, в качестве одного или более окон верхнего уровня дополнительно содержит этап, на котором:

при создании новой вкладки в прикладной программе с несколькими вкладками создают окно страницы, соответствующее этой новой вкладке, как окно верхнего уровня.

9. Способ по любому из пп.1-5, в котором прикладная программа с несколькими вкладками включает в себя одну или более программ из браузера веб-страниц с несколькими вкладками, редактора документов с несколькими вкладками и программы для чтения с несколькими вкладками.

10. Способ по любому из пп.1-5, в котором:

окна страниц, соответствующие вкладкам в прикладной программе с несколькими вкладками, принадлежат разным потокам; и/или

главное окно прикладной программы с несколькими вкладками и одно или более окон страниц, соответствующих вкладкам, принадлежит разным потокам.

11. Способ по любому из пп.1-5, в котором создание одного или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, в качестве окон верхнего уровня дополнительно содержит этап, на котором:

создают одно или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня с пустым владельцем.

12. Система для выполнения обмена сообщениями, относящегося к прикладной программе с несколькими вкладками, содержащая:

модуль управления окнами, выполненный с возможностью создавать одно или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня, при этом окном верхнего уровня является окно, не имеющее родительского окна, или родительским окном окна верхнего уровня является окно рабочего стола;

модуль обмена сообщениями, выполненный с возможностью выполнять обмен сообщениями, относящимися к окнам страниц.

13. Система по п.12, в которой модуль управления окнами дополнительно используется для создания одного или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, в качестве одного или более окон верхнего уровня на том же самом уровне, что и главное окно прикладной программы с несколькими вкладками.

14. Система по п.12, в которой модуль обмена сообщениями дополнительно используется в главном окне прикладной программы с несколькими вкладками для отправки одного или более сообщений упомянутым одному или более окнам страниц в неблокирующем режиме.

15. Система по п.12, в которой модуль обмена сообщениями дополнительно содержит:

подмодуль хранения отношения сопоставления, выполненный с возможностью создавать и сохранять отношение сопоставления между главным окном прикладной программы с несколькими вкладками и упомянутыми одним или более окнами страниц;

подмодуль взаимодействия, выполненный с возможностью посредством главного окна отправлять одно или более сообщений упомянутым одному или более окнам страниц на основе упомянутого отношения сопоставления между главным окном и одним или более окнами страниц, а также используется для инициирования выполнения одним или более окнами страниц одной или более операций, соответствующих принятым сообщениям.

16. Система по любому из пп.12-15, дополнительно содержащая:

модуль корректировки окон, выполненный с возможностью корректировать расположение и размер упомянутых одного или более окон страниц для соответствия расположению и размеру главного окна прикладной программы с несколькими вкладками.

17. Система по любому из пп.12-15, дополнительно содержащая:

модуль подсказки, выполненный с возможностью выдавать пользователю подсказку, когда окно страницы зависло.

18. Система по любому из пп.12-15, в которой модуль управления окнами дополнительно выполнен с возможностью при создании новой вкладки в прикладной программе с несколькими вкладками создавать окно страницы, соответствующее этой новой вкладке, как окно верхнего уровня.

19. Система по любому из пп.12-15, в которой прикладная программа с несколькими вкладками включает в себя одну или более программ из браузера веб-страниц с несколькими вкладками, редактора документов с несколькими вкладками и программы для чтения с несколькими вкладками.

20. Система по любому из пп.12-15, дополнительно содержащая:

первый модуль создания, выполненный с возможностью создавать окна страниц, соответствующие вкладкам в прикладной программе с несколькими вкладками, в разных потоках; и/или

второй модуль создания, выполненный с возможностью создавать главное окно прикладной программы с несколькими вкладками и одно или более окон страниц, соответствующих одной или более вкладкам, в разных потоках.

21. Система по любому из пп.12-15, в которой модуль управления окнами дополнительно выполнен с возможностью создавать одно или более окон страниц, соответствующих соответственным вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня с пустым владельцем.

Описание изобретения к патенту

Эта заявка притязает на приоритет заявки на патент Китая № 200910077869.5, поданной 23 января 2009 года в Патентное Ведомство Китая, озаглавленной "Способ и система для реализации обмена сообщениями в прикладной программе с несколькими вкладками", содержание которой включено в настоящий документ по ссылке во всей своей полноте.

Область техники, к которой относится изобретение

Настоящее изобретение имеет отношение к области программирования прикладных программ с несколькими вкладками и, в частности, имеет отношение к способам и системам для реализации обмена сообщениями в прикладной программе с несколькими вкладками.

Предшествующий уровень техники

Браузер часто является для пользователей наиболее используемым средством для выхода в Интернет. Во многих случаях пользователи надеются иметь возможность просматривать несколько веб-страниц одновременно. Поскольку размер экрана дисплея ограничен, разработаны браузеры с несколькими вкладками, как показано на фигуре 1. В этом браузере с несколькими вкладками каждая вкладка соответствует веб-странице, и пользователь может сосредоточиться на содержании только одной веб-страницы в конкретное время. Однако, когда пользователь хочет сосредоточиться на содержании других веб-страниц, пользователю нужно только переключить вкладки.

Хотя этот тип браузера с несколькими вкладками может предоставить пользователю удобство просмотра веб-страниц, часто происходит одно событие, называемое распространением зависания страницы (то есть, пользователь не может выполнять действия с веб-страницей, например, выполнять прокрутку страницы или щелкнуть мышью по ссылкам и т.д.). Таким образом, когда одно окно страницы зависает, другие окна страницы также находятся в зависшем состоянии вслед за зависанием одного окна страницы. Например, если пользователь открывает десять (10) веб-страниц и текущая страница является домашней страницей Sohu, в предположении, что когда пользователь просматривает текущую страницу, текущая страница внезапно зависает, пользователь не может выполнять действия с другими девятью (9) веб-страницами. В этот момент пользователь должен отменить просмотр других девяти страниц, заканчивает процесс просмотра, перезапускает браузер и вновь открывает девять веб-страниц для продолжения просмотра этих страниц.

Сущность изобретения

Настоящее изобретение нацелено на обеспечение способа и системы для реализации обмена сообщениями в прикладной программе с несколькими вкладками, которые могут решить проблему предшествующего уровня техники, заключающуюся в том, что когда одно окно страницы зависает, другие окна страниц также находятся в зависшем состоянии после зависания одного окна страницы.

Для достижения этой цели настоящее изобретение обеспечивает следующие аспекты.

Способ выполнения обмена сообщениями в прикладной программе с несколькими вкладками, содержащий этапы, на которых:

создают одно или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня; и

выполняют обмен сообщениями, относящимися к одному или более окнам страниц.

Предпочтительно создание окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одного или более окон верхнего уровня дополнительно содержит этап, на котором:

создают одно или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня на том же уровне, что и главное окно прикладной программы с несколькими вкладками.

Предпочтительно выполнение обмена сообщениями, относящимися к окнам страницы, содержит этап, на котором:

отправляют посредством главного окна прикладной программы с несколькими вкладками одно или более сообщений окнам страниц в неблокирующем режиме.

Предпочтительно неблокирующий режим включает в себя:

асинхронный режим отправки сообщений или синхронный режим отправки сообщений с механизмом тайм-аута.

Предпочтительно выполнение обмена сообщениями, относящимися к окнам страниц, содержит этапы, на которых:

создают и сохраняют отношение сопоставления между главным окном прикладной программы с несколькими вкладками и одним или более окнами страниц;

отправляют посредством главного окна одно или более сообщений окнам страниц на основе отношения сопоставления между главным окном и одним или более окнами страниц;

инициируют выполнение одним или более окнами страниц одного или более действий, соответствующих принятым сообщениям.

Предпочтительно способ дополнительно содержит этап, на котором корректируют расположение и размер окон страниц для соответствия расположению и размеру главного окна прикладной программы с несколькими вкладками.

Предпочтительно способ дополнительно содержит этап, на котором, когда определено зависание окна страницы, соответствующего вкладке, выдают пользователю подсказку.

Предпочтительно создание одного или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одного или более окон верхнего уровня дополнительно содержит этап, на котором:

при создании новой вкладки в прикладной программе с несколькими вкладками создают окно страницы, соответствующее новой вкладке, как окно верхнего уровня.

Предпочтительно прикладная программа с несколькими вкладками включает в себя одно или более из браузера веб-страниц с несколькими вкладками, редактора документов с несколькими вкладками и программы для чтения с несколькими вкладками.

Предпочтительно окна страниц, соответствующие вкладкам в прикладной программе с несколькими вкладками, принадлежат разным потокам;

и/или

главное окно прикладной программы с несколькими вкладками и одно или более окон страниц, соответствующих вкладкам, принадлежит разным потокам.

Предпочтительно создание окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как окон верхнего уровня дополнительно содержит этап, на котором:

создают окна страниц, соответствующие вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня с пустым владельцем.

Система для выполнения обмена сообщениями в прикладной программе с несколькими вкладками, содержащая:

модуль управления окнами, выполненный с возможностью создавать одно или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня;

модуль обмена сообщениями, выполненный с возможностью выполнять обмен сообщениями, относящимися к окнам страниц.

Предпочтительно модуль управления окнами дополнительно используется для создания одного или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одного или более окон верхнего уровня на том же самом уровне, что и главное окно прикладной программы с несколькими вкладками.

Предпочтительно модуль обмена сообщениями дополнительно используется в главном окне прикладной программы с несколькими вкладками для отправки одного или более сообщений окнам страницы в неблокирующем режиме.

Предпочтительно модуль обмена сообщениями дополнительно содержит:

подмодуль хранения отношения сопоставления, выполненный с возможностью создавать и сохранять отношение сопоставления между главным окном прикладной программы с несколькими вкладками и одним или более окнами страниц;

подмодуль взаимодействия, используемый главным окном для отправки одного или более сообщений одному или более окнам страниц на основе отношения сопоставления между главным окном и одним или более окнами страниц, а также используемый для инициирования выполнения окнами страниц одного или более действий, соответствующих принятым сообщениям.

Предпочтительно система дополнительно содержит модуль корректировки окон, выполненный с возможностью корректировать расположение и размер одного или более окон страниц для соответствия расположению и размеру главного окна прикладной программы с несколькими вкладками.

Предпочтительно система дополнительно содержит модуль подсказки, выполненный с возможностью выдавать пользователю подсказку, когда окно страницы зависло.

Предпочтительно модуль управления окнами дополнительно выполнен с возможностью при создании новой вкладки в прикладной программе с несколькими вкладками создавать окно страницы, соответствующее новой вкладке, как окно верхнего уровня.

Предпочтительно прикладная программа с несколькими вкладками включает в себя одно или более из браузера веб-страниц с несколькими вкладками, редактора документов с несколькими вкладками и программы для чтения с несколькими вкладками.

Предпочтительно система дополнительно содержит первый модуль создания, выполненный с возможностью создавать окна страниц, соответствующие вкладкам в прикладной программе с несколькими вкладками/ в разных потоках;

и/или

второй модуль создания, выполненный с возможностью создавать главное окно прикладной программы с несколькими вкладками и одно или более окон страниц, соответствующих одной или более вкладок, в разных потоках.

Предпочтительно модуль управления окнами дополнительно выполнен с возможностью создавать одно или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня с пустым владельцем.

Машиночитаемый носитель, содержащий инструкции компьютерной программы, причем когда инструкции компьютерной программы исполняются посредством компьютерного модуля, они дают компьютерному модулю команду:

создавать одно или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как одно или более окон верхнего уровня; и

выполнять обмен сообщениями, относящимися к окнам страниц.

Варианты воплощения настоящего изобретения раскрывают следующие технические эффекты.

В соответствии с вариантами воплощения настоящего изобретения посредством создания окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как окон верхнего уровня окна страниц больше не имеют родительского окна. Таким образом, при выполнении обмена сообщениями, относящимися к окнам страниц, не будет ситуации, в которой некоторое родительское окно отправляет системные сообщения окнам страницы в блокирующем режиме. Поэтому можно избежать проблемы распространения зависания окна страницы, вызванного посредством отправки таких системных сообщений. Даже если окно одной страницы зависнет, то окна других страниц не будут затронуты. Таким образом, действия с другими окнами страниц могут выполняться нормально, без влияния на нормальное исполнение прикладной программы.

Краткое описание чертежей

Фигура 1 - иллюстративная схема интерфейса браузера с несколькими вкладками в предшествующей области техники;

Фигура 2 - блок-схема способа, представленного вариантами воплощения изобретения, для реализации обмена сообщениями в прикладной программе с несколькими вкладками;

Фигура 3 - иллюстративная схема структуры окон браузера с несколькими вкладками в предшествующей области техники;

Фигура 4 - иллюстративная схема структуры окон браузера с несколькими вкладками в вариантах воплощения настоящего изобретения;

Фигура 5 - иллюстративная схема интерфейса во время зависания окна страницы в вариантах воплощения настоящего изобретения;

Фигура 6 - иллюстративная система для реализации обмена сообщениями в прикладной программе с несколькими вкладками в вариантах воплощения настоящего изобретения.

Описание предпочтительных вариантов воплощения

Для лучшего понимания упомянутых выше целей, отличительных признаков и преимуществ настоящего изобретения последующее описание дополнительно предоставляет подробные иллюстрации настоящего изобретения в сочетании с чертежами и подробными вариантами воплощения.

Как показано на фигуре 2, настоящие варианты воплощения обеспечивают способ, реализующий обмен сообщениями в прикладной программе с несколькими вкладками и включает в себя следующие этапы:

S201: Создание одного или более окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как окон верхнего уровня;

S202: Выполнение обмена пользовательскими сообщениями в окнах верхнего уровня. То есть, выполнение обмена сообщениями, имеющими отношение к окнам страниц, например, обмена сообщениями между главным окном прикладной программы и окнами страниц как окнами верхнего уровня и т.д.

Для облегчения понимания далее кратко разъясняются концепции прикладных программ и окон с несколькими вкладками и окон верхнего уровня в операционных системах и т.д., упоминаемых в вариантах воплощения настоящего изобретения. Что касается вкладок, на фигуре 1 проиллюстрирован интерфейс традиционного веб-браузера с несколькими вкладками. На фигуре 1 маленькие прямоугольники, помещенные как "способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 " ("Стартовая страница тура"), "способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 " ("Соху-Китайспособ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 )" и "способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 " ("Пустая страница") представляют собой вкладки отдельных веб-страниц, и каждая вкладка соответствует окну веб-страницы. Так называемая прикладная программа с несколькими вкладками интегрирует окна страниц, соответствующие отдельным вкладкам, которые должны быть отображены в одном окне, и осуществляет переключение между различными страницами, когда по вкладке щелкают мышью. Например, браузер веб-страниц, показанный на фигуре 1, может включать в себя несколько вкладок одновременно и, таким образом, называется веб-браузером с несколькими вкладками.

Прикладные программы с несколькими вкладками, описанные в вариантах воплощения данного изобретения, включают в себя, но без ограничения, веб-браузеры с несколькими вкладками, редакторы документов с несколькими вкладками (например. Excel и т.д.), программы для чтения документов с несколькими вкладками и т.д. Кроме того, следует отметить, что прикладная программа может представлять собой прикладную программу с одним процессом или прикладную программу с несколькими процессами, и окна страниц, соответствующие отдельным вкладкам, могут быть созданы в одном процессе или могут быть созданы в нескольких процессах. Однако создаются ли окна страниц в одном процессе или в нескольких процессах, все они могут иметь проблему распространения зависания. Решения такой проблемы посредством вариантов воплощения настоящего изобретения могут быть применены к прикладным программам с одним процессом, а также к прикладным программам с несколькими процессами.

Окно, описываемое в вариантах воплощения настоящего изобретения, представляет собой область системного дисплея. Прикладная программа использует окно для отображения вывода или приема ввода от пользователя. Следует отметить, что "окно", описанное в вариантах воплощения настоящего изобретения, не ограничено системой Windows и другими традиционными оконными операционными системами. Даже в отличных от Windows операционных системах, если в компьютерном интерфейсе обеспечен интерфейс взаимодействия между человеком и компьютером (HCI) (например, диалоговое окно и т.д.), он может быть расценен как окно, описанное в вариантах воплощения настоящего изобретения. С одной стороны, прикладная программа получает доступ к системному дисплею через окно; с другой стороны, прикладная программа совместно использует системный дисплей с другими прикладными программами, использующими окно. Поскольку в любой момент времени только одно окно может принимать пользовательский ввод, пользователь может взаимодействовать с окнами и прикладными программами, имеющими окна, через мышь, клавиатуру и другие устройства ввода.

Операционная система семейства Windows используется здесь в качестве примера. В операционной системе Windows (а также других оконных графических операционных системах, таких как операционная система для платформы Macintosh и т.д.) каждой основанной на графическом интерфейсе прикладной программе нужно создать по меньшей мере одно окно, которое называется главным окном. Это окно представляет собой основной интерфейс между пользователем и прикладной программой. Многие прикладные программы могут прямо или косвенно создавать некоторые другие окна для выполнения соответствующих задач. Как только окно создано, система Windows сможет предоставлять окну соответствующие сообщения взаимодействия с пользователем. Система Windows может автоматически выполнять много задач, требуемых пользователем, таких как перемещение окна, корректировка размера окна и т.д. В среде Windows может быть создано любое количество окон. Система Windows может отображать информацию множеством образов и ответственна за управление экраном дисплея и управлением позицией и отображением окон, чтобы гарантировать, что никакие две прикладные программы не конкурируют за одну и ту же часть системного дисплея одновременно.

Окно прикладной программы обычно содержит строку заголовка, строки меню, панели инструментов, границы, клиентские области, полосы прокрутки и другие компоненты. Взаимоотношение с несколькими окнами обычно основано на древоподобной структуре, то есть одно окно может иметь 0, 1 или 2 или больше дочерних окон, в то время как каждое дочернее окно может иметь только одно фиксированное родительское окно. Если конкретное окно не имеет родительского окна или является окном рабочего стола (окно с классом окна #32769 называется окном рабочего стола), это конкретное окно называется окном верхнего уровня.

Если по-прежнему использовать в качестве примера операционную систему Windows, выполнению прикладной программы системы Windows требуется полагаться на внешние события в качестве движущего механизма, и информация, описывающая внешние события, называется сообщениями. Например, когда пользователь нажимает клавишу на клавиатуре, система формирует специфическое сообщение, указывающее на возникновение события нажатия клавиши клавиатуры. Управление с помощью событий соответствует порядку выполнения прикладной программы системы Windows, зависящему от порядка возникновения событий, и конфигурация управляемых с помощью событий программ нацелена на формирование и обработку сообщений. При своей работе прикладная программа системы Windows постоянно принимает любые возможные сообщения ввода, принимает решение и затем выполняет соответствующую обработку.

Различные сообщения, полученные прикладной программой, могут быть классифицированы как сообщения ввода, сформированные аппаратными устройствами, и системные сообщения от операционной системы Windows.

Прикладная программа принимает ввод от сообщений ввода. Например, перемещение мыши или нажатие клавиши клавиатуры могут формировать сообщения ввода. Система Windows ответственна за отслеживание всех устройств ввода и помещение сообщений ввода в очередь, которая представляет собой заданный системой блок памяти для временного хранения сообщений, так называемую системную очередь сообщений. Каждый поток графического интерфейса устройств (GDI), работающий в системе Windows, имеет свою собственную очередь сообщений.

Когда пользователь перемещает мышь или нажимает клавишу клавиатуры, получающиеся в результате сообщения ввода сначала помещаются в системную очередь сообщений. Затем система Windows каждый раз удаляет одно сообщение ввода из системной очереди сообщений, определяет целевое окно для удаленного сообщения ввода и отправляет удаленное сообщение ввода в очередь сообщений прикладной программы, которая создала целевое окно. Прикладная программа принимает ввод посредством очереди прикладной программы: прикладная программа использует структуру управления, называемую циклом сообщений, для извлечения сообщений из очереди прикладной программы и отправляет извлеченное сообщение в соответствующее окно. Оконная функция соответствующего окна затем является ответственной за проверку сообщения и выполнение соответствующей обработки.

Системные сообщения отличаются от сообщений ввода. Система Windows непосредственно отправляет системное сообщение в соответствующую оконную функцию вместо того, чтобы отправлять его через системную очередь сообщений и очередь прикладной программы. Таким образом, система Windows непосредственно уведомляет конкретное окно о событии, влияющем на конкретное окно. Например, когда пользователь активирует окно прикладной программы, система Windows отправит соответствующие системные сообщения непосредственно в активированное окно.

Следует отметить, что в общем случае сообщение может быть отправлено в двух режимах: в блокирующем режиме (например, с помощью функции 'SendMessage' и т.д.) и в неблокирующем режиме (например, с помощью функций 'PostMessage', 'PostThreadMessage', 'SendMessageCallback', 'SendNotifyMessage' и 'SendMessageTimeout' и т.д.). Специалисты в области техники обычно называют 'SendMessage' синхронным способом отправки сообщения; 'PostMessage', 'PostThreadMessage', 'SendMessageCallback' и 'SendNotifyMessage' асинхронным способом отправки сообщения, и 'SendMessageTimeout' синхронным способом отправки сообщения с механизмом тайм-аута. Например, в предположении, что окно В не принадлежит потоку А (принадлежит ли окно В потоку А, определяется тем, каким потоком окно В было создано, то есть, если окно В было создано в потоке А, окно В принадлежит потоку А, иначе окно В не принадлежит потоку А), когда поток А отправляет сообщение окну В, разные режимы отправки сообщений могут иметь следующие характеристики.

Если поток A отправляет сообщение М в окно B в блокирующем режиме, поток А должен ожидать, пока окно В не завершит обработку сообщения М, прежде чем поток А сможет продолжать работать. Когда окно В обрабатывает сообщение М, любая проблема, такая как бесконечный цикл или взаимная блокировка и т.д., произошедшая во время процесса, может препятствовать возврату обработки сообщения. В этом случае окно В рассматривают как зависшее, затем поток А не может продолжать выполнение или принимать и обрабатывать другие сообщения. Таким образом, зависание окна В может непосредственно вызвать зависание потока А и последующее зависание всех окон в потоке А.

Если сообщение отправляется в неблокирующем режиме, поток А может сразу выполнить возврат после отправки сообщения окну В без необходимости ожидать, пока окно В не завершит обработку сообщения М (при использовании функции 'PostMessage' и других асинхронных способов нет необходимости ожидать; при использовании функции 'SendMessageTimeout' может быть задан порог времени ожидания, и если поток А ожидает в течение какого-либо времени дольше предварительно установленного порога, поток А может прекратить ожидание и выполнить возврат для обработки других сообщений). Таким образом, если окно В зависло, поток А может продолжать работать.

Следует отметить, что в упомянутых выше двух случаях окно В не принадлежит потоку А. Если окно В будет принадлежать потоку А, то зависание окна распространится независимо от того, отправлено ли сообщение в блокирующем режиме или в неблокирующем режиме. Таким образом, зависание окна В будет всегда влиять на поток А. Кроме того, окно В может являться дочерним окном или окном верхнего уровня, и структура окна не влияет на упомянутую выше работу.

Среди различных сообщений, принимаемых прикладной программой, режим отправки сообщений для сообщений ввода обычно определяется прикладной программой (обычно устанавливается неблокирующий режим); в то время как режим отправки для системных сообщений обычно определяется операционной системой. Если использовать в настоящий момент в качестве примера наиболее широко используемую операционную систему Windows, операционная система Windows отправляет системные сообщения в блокирующем режиме (обычно с использованием функции 'SendMessage').

Чтобы лучше понять способы, представленные в вариантах воплощения настоящего изобретения, далее в качестве примера используется браузер веб-страниц с несколькими вкладками, чтобы проанализировать причины, почему в браузере с несколькими вкладками, когда страница зависла, другие страницы не могут работать.

При создании окон текущие браузеры веб-страниц с несколькими вкладками обычно имеют окна страниц, соответствующие разным вкладкам, унаследованные от одного и того же родительского окна. Например, фигура 3 показывает структуру окон браузера Yaoyou, просматривающего ту же самую веб-страницу, как на фигуре 1.

На фигуре 3 окно "Maxthon2_View" представляет собой окно для отображения информационного содержания веб-страницы и называется просто окном страницы. Следует отметить, что окно "Maxthon2_View" представляет собой только контейнерное окно и также имеет другие дочерние окна, такие как окно "Internet Explorer_Server" (не показано) и т.д., сконфигурированные для отображения информационного содержания веб-страницы. Поскольку в настоящий момент открыты три (3) веб-страницы, в структуре окон имеется три окна страницы "Maxthon2_View", и все этих три окна страниц имеют окно "Afx:400000:2008:10011:0:0" в качестве родительского окна.

Другими словами, каждая вкладка соответствует веб-странице, и каждой веб-страницей управляет группа окон (называемая группой дочерних окон (не показана) под знаком '+' перед окном "Maxthon2_View" в диаграмме структуры окон). Группа дочерних окон имеет родительское окно (то есть, "Maxthon2_View"), и их родительское окно (то есть, окно "Maxthon2_View") также имеет родительское окно (то есть, окно "Afx:400000:2008:10011:0:0" в приведенной выше структуре окон).

В этой структуре окон, когда пользователь выполняет некоторые действия на странице, соответствующей вкладке (например, действие изменения масштаба веб-страницы), поток обработки является следующим: пользователь сначала нажимает кнопку изменения масштаба, и затем окно, содержащее эту кнопку, уведомляет главное окно с помощью сообщения о нажатии. Главное окно находит окно страницы, соответствующее отображаемой в настоящий момент вкладке, и отправляет сообщение изменения масштаба окну страницы. Окно страницы затем принимает сообщение и выполняет действие изменения масштаба. Безусловно, в этот период вследствие характеристик операционной системы Windows (как ранее описано), между окнами может быть выполнен обмен некоторыми системными сообщениями. Эти системные сообщения отправляет операционная система Windows в блокирующем режиме. Таким образом, действие на окне страницы может быть завершено только после того, как на все системные сообщения ответили.

Например, в структуре окон, показанной на фигуре 3 (для ясности, номера "05В6", "070С" и "0774" используются для соответственного представления окон страниц "Window 004705B6""Maxthon2_View," "Window 006C070C""Maxthon2_View" и "Window 00270774""Maxthon2_View"), в предположении, что окно, соответствующее отображаемой в настоящий момент вкладке, является "05В6", и пользователь нажал кнопку изменения масштаба, когда главное окно "Maxthon2_Fram" отправляет сообщение изменения масштаба окну "05В6" страницы, родительское окно окна "05В6" страницы "Afx:400000:2008:10011:0:0" должно отправить системное сообщение (сообщения) каждому из своих дочерних окон (например, "05В6," "070С" и "0774") в блокирующем режиме. Далее, только после того, как на все системные сообщения ответили, действие изменения масштаба на окне "05В6" страницы может быть завершено.

В этот момент, если отображаемое в настоящий момент окно "05В6" зависает, когда пользователь хочет работать с окном "070С", родительское окно "Afx:400000:2008:10011:0:0" окна "070С" страницы по-прежнему должно отправлять системные сообщения каждому из своих дочерних окон (например, "05В6", "070С" и "0774") в блокирующем режиме. Однако, поскольку окно "05В6" зависло, окно "05В6" не может ответить после того, как родительское окно "Afx:400000:2008:10011:0:0" отправляет системные сообщения окну "05В6". Таким образом, родительское окно "Afx: 400000:2008:10011:0:0" находится в состоянии вечного ожидания, и работа с окном "070С" не может быть завершена. Чтобы завершить работу с окном "070С," родительское окно "Afx: 400000:2008:10011:0:0" также должно отправить системные сообщения каждому из своих дочерних окон, в том числе окну "070С." Однако, поскольку зависшее окно "05В6" не может ответить родительскому окну "Afx:400000:2008:10011:0:0", и вследствие блокирующего режима родительское окно "Afx:400000:2008:10011:0:0" не может выполнить другие действия до приема ответа от окна "05В6" страницы, родительское окно "Afx:400000:2008:10011:0:0" не может завершить отправку системных сообщений всем дочерним окнам, чтобы завершить действие пользователя с окном "070С". Таким образом, действие пользователя с окном "070С" находится в состоянии вечного ожидания, и окно "070С" больше не может отвечать на системные сообщения. Аналогичным образом любое действие с окном "0774" также не может быть завершено. Таким образом, на основе родительско-дочерних взаимоотношений между окном "Afx:400000:2008:10011:0:0" и окнами "05В6", "070С" и "0774" страниц завершение любого действия с окном страницы требует, чтобы родительское окно "Afx:400000:2008:10011:0:0" отправляло системные сообщения каждому из своих дочерних окон в блокирующем режиме. Поэтому зависание любого из окон страниц может непосредственно повлиять на другие окна страниц и сделать невозможной действия с ними.

Если все системные сообщения в системе Windows могут быть отправлены в неблокирующем режиме, то можно естественным образом предотвратить зависание прикладной программы, пока разные окна помещены в разные потоки. Но, как упомянуто прежде, фактически это не тот случай. Только некоторые периферийные сообщения (такие как сообщения мыши, клавиатуры и т.д.) и сообщения отрисовки (WM_PAINT, WM_NCPAINT и т.д.) отправляются в неблокирующем режиме. Другие системные сообщения (такие как уведомление об изменении размера WM_SIZE, уведомление об изменении расположения WM_POSCHANGING и WM_POSCHANGED и т.д.) отправляются в блокирующем режиме.

В предположении, что окно В зависло, если поток А отправляет сообщение окну B в неблокирующем режиме, выполнение потока А не будет затронуто (только сообщение не будет обработано вовремя). Но если поток А отправляет системное сообщение окну В (системное сообщение обычно отправляют в блокирующем режиме), то поток А зависнет после зависания окна В. Поскольку эти системные сообщения реализованы в пределах системы Windows, распространение зависания окна страницы не может быть предотвращено посредством изменения прикладных программ третьей стороны (таких как браузеры).

При выполнении обмена пользовательскими сообщениями в прикладной программе с несколькими вкладками следующие системные сообщения могут обычно формироваться и отправляться в блокирующем режиме.

Родительское окно имеет одно или более дочерних окон. Когда родительское окно имеет фокус (например, главное окно браузера становится текущим активным окном посредством некоторого действия), система Windows отправляет сообщение WM_CHILDACTIVATE в блокирующем режиме.

Следует отметить, что в некоторых операционных системах (таких как операционная система Windows), могут быть ситуации, когда несколько окон верхнего уровня (A, B, C,способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 ) имеют общее окно O "владельца". Когда размер или состояние отображения окон верхнего уровня изменяется, окно О владельца отправит сообщения WM_POSCHANGING и WM_POSCHANGED другим окнам высокого уровня (B, C, способ и система для реализации обмена сообщениями в прикладной   программе с несколькими вкладками, патент № 2490693 ) в блокирующем режиме. Безусловно, эти ситуации могут не существовать в других операционных системах.

Как можно заметить из приведенного выше анализа, первопричина проблемы зависания одного окна, приводящего к невозможности нормальной работы браузера, заключается в следующем: окна страниц, соответствующие отдельным вкладкам, имеют общее родительское окно, и когда отдельные окна страниц отвечают на сообщения пользовательского ввода, родительское окно отправляет (в блокирующем режиме) системные сообщения отдельным окнам страницы. Только когда каждое системное сообщение может быть обработано нормально, обмен пользовательскими сообщениями может быть завершен. Поэтому, если окно А страницы зависнет, когда родительское окно отправляет системное сообщение окну А страницы, окно А страницы не будет в состоянии возвратить ответное сообщение родительскому окну, что заставляет родительское окно находиться в состоянии вечного ожидания. В этот момент, если с другими окнами страниц нужно выполнить действия, родительское окно не может ответить. Таким образом, действия с другими окнами страниц не могут быть завершены, что может вызвать даже невозможность нормальной работы всей прикладной программы.

Кроме того, в приведенном выше примере, показанном на фигуре 3, отдельные окна страниц представляют собой дочерние окна, окна "Afx:400000:2008:10011:0:0", и окно "Afx:400000:2008:10011:0:0" также представляет собой дочернее окно главного окна. Таким образом, в этом примере отношение между главным окном и отдельными окнами страниц не являются прямыми родительско-дочерними отношениями. Однако на практике специалисты в области техники понимают, что вследствие различия в проектировании различных прикладных программ с несколькими вкладками могут существовать ситуации, в которых отдельные окна страниц представляют собой прямые дочерние окна главного окна (то есть, между ними имеются прямые родительско-дочерние отношения), или в которых между отдельными окнами страниц и главным окном существуют несколько уровней окон, и т.д. Но независимо от ситуации отдельные окна страниц имеют родительское окно, и родительское окно будет отправлять системные сообщения отдельным окнам страниц в блокирующем режиме. Таким образом, явление распространения зависания всегда существует.

Однако на практике может не иметь практического значения для родительского окна, чтобы отправлять системное сообщение отдельным окнам страниц в блокирующем режиме (операционная система может использовать системное сообщение, но прикладная программа может не использовать системное сообщение. Другими словами, даже если система Windows не отправляет это системное сообщение, прикладная программа может по-прежнему работать правильно). Когда отдельные окна страниц принимают системное сообщение, отдельным окнам страниц может быть только необходимо вернуть ответное сообщение без какой-либо другой обработки. Таким образом, фактически, если родительское окно не отправило системное сообщение в отдельные окна страниц, отображаемое в настоящий момент окно страницы по-прежнему может обработать сообщения пользовательского ввода.

Таким образом в вариантах воплощения настоящего изобретения окна страниц, соответствующие нескольким вкладкам в прикладной программе с несколькими вкладками, создаются как окна верхнего уровня, на том же самом уровне, как главное окно. Таким образом, нет родительского окна, отправляющего какое-либо системное сообщение отдельным окнам страниц в блокирующем режиме. Безусловно, в системе Windows и других операционных системах отдельные окна страниц могут по-прежнему иметь общего владельца, и владелец также может отправлять системное сообщение отдельным окнам страниц. Чтобы избежать отправки окном владельца системного сообщения отдельным окнам страниц, владелец окон верхнего уровня устанавливается пустым.

Таким образом, что касается структуры окон, прикладная программа, ранее соответствующая одной древовидной структуре, теперь соответствует нескольким древовидным структурам (количество древовидных структур определено количеством вкладок в прикладной программе). Фигура 4 иллюстрирует структуру окон браузера с несколькими вкладками, представленного в вариантах воплощения настоящего изобретения. Как показано, окно SE_AxControl представляет собой окно страницы, соответствующее каждой вкладке. Можно заметить, что эта структура делает окно страницы, соответствующее вкладке, больше не имеющим родительского окна (или имеющим рабочий стол в качестве родительского окна). Таким образом, когда окно страницы отвечает на сообщение пользовательского ввода, больше нет родительского окна, отправляющего сообщения отдельным окнам страниц, и каждое окно страницы независимо среди других. Таким образом, при ответе на сообщения пользовательского ввода, даже если конкретное окно страницы зависло, другие окна страниц не затрагиваются. Пользователь может продолжать просматривать другие окна страниц и может закрыть или перезагрузить зависшее окно страницы.

Таким образом, когда используются способы, раскрытые в вариантах воплощения настоящего изобретения (создание окон страниц как окон верхнего уровня), хотя может существовать много отношений между предыдущим главным окном и окнами страниц (прямые родительско-дочерние отношения или разделение несколькими уровнями окон), нет родительского окна, отправляющего системные сообщения окнам страниц в качестве дочерних окон. Это может обеспечить фундаментальное решение проблемы распространения зависания, вызванной необходимостью операционной системы отправлять системные сообщения.

Например, в структуре окон, показанной на фигуре 4 (для ясности номера "09С6", "0А6Е", "097Е" используются для представления окон страницы "Window 01F609C6""SE_AxControl", "Window 01D50A6E""SE_AxControl" и "Window 0109097E""SE_AxControl"), в предположении, что отображаемая в настоящий момент вкладка соответствует окну "09С6" страницы, когда пользователь через некоторое действие заставляет главное окно браузера стать текущим активным окном (например, пользователь щелкает мышью по строке заголовка браузера), главное окно "SE_SogouExploreFrame" может использоваться для отправки соответствующего сообщения окну "09С6" страницы, и действие затем может быть непосредственно выполнено без формирования системного сообщения. Таким образом, поскольку окна страниц ("09С6", "0А6Е", "097Е") не имеют родительского окна, и владелец этих окон страниц может также быть установлен пустым, поток, которому принадлежит главное окно браузера, также не отправляет системное сообщение окнам страницы.

В этот момент, если отображаемое в настоящий момент окно "09С6" зависло, поскольку для окон "09С6", "0А6Е" и "097Е" нет общего родительского окна, которое должно отправлять системное сообщение этим окнам страниц в блокирующем режиме, чтобы обеспечить возможность завершения действий с отображаемым в настоящий момент окном страницы, нет общего родительского окна для окон "09С6", "0А6Е" и "097Е", которое не может обработать другие системные сообщения, поскольку окно "09С6" не может ответить родительскому окну. Таким образом, когда пользователь должен выполнить действие с окном "070С", только главное окно "SE_SogouExploreFrame" должно отправить сообщение ввода окну "070С", и действие с окном "070С" может быть завершено без привлечения родительского окна, отправляющего системное сообщение окнам страниц в качестве дочерних окон в блокирующем режиме, чтобы завершить действия с окнами страниц. Аналогичным образом действие с окном "0774" также может быть завершено. Таким образом, в соответствии с раскрытым техническим решением согласно вариантам воплощения настоящего изобретения зависание окна страницы больше не будет распространяться, и вся прикладная программа не будет затронута.

Следует отметить, что в вариантах воплощения настоящего изобретения различный обмен сообщениями ввода может быть выполнен либо в неблокирующем режиме, либо в блокирующем режиме. Безусловно, если используется неблокирующий режим, когда главное окно отправляет сообщение окну страницы, главное окно может выполнить возврат к обработке сообщений от других окон страниц, не ожидая, когда окно страницы закончит обрабатывать сообщение. Таким образом, результаты могут быть лучше. Специалисты в области техники понимают, что прикладная программа с несколькими вкладками сама может управлять, какой режим используется главным окном для отправки сообщения окну страницы или какое сообщение формировать и т.д. Другими словами, это может быть сделано посредством модификации прикладной программы третьей стороны (например, браузера). Однако в ранее упомянутых ситуациях родительским окном, отправляющим системное сообщение дочерним окнам (окнам страниц в предшествующей области техники) в блокирующем режиме, управляет операционная система Windows, а не прикладная программа третьей стороны (браузер). Таким образом, режим для отправки системного сообщения не может быть изменен посредством модификации прикладной программы третьей стороны, что становится самой трудной частью для решения проблемы распространения зависания окна страницы. Варианты воплощения настоящего изобретения обеспечивают другой подход. Посредством замены окна страницы с первоначальной формы дочерних окон на окна верхнего уровня окна страниц больше не имеют родительского окна. Таким образом, больше не существует ситуация, в которой операционная система Windows требует, чтобы некоторое родительское окно отправляло системное сообщение отдельным окнам страниц, что в конечном счете решает проблему распространения зависания окна страницы.

Как ранее описано, если два или более окон принадлежат одному и тому же потоку, и блокирующий режим, и неблокирующий режим могут вызвать распространение зависания. Таким образом, в вариантах воплощения настоящего изобретения, чтобы достигнуть более желательного результата для предотвращения распространения зависания, разные окна могут быть сделаны принадлежащими разным потокам (например, разные окна страниц принадлежат разным потокам, и/или главное окно и окна страниц принадлежат разным потокам) для дополнительного уменьшения возникновения распространения зависания. Безусловно, некоторые прикладные программы с несколькими вкладками сами являются многопоточными, то есть, разные окна страниц и главное окно уже создаются разными потоками. Таким образом, эти прикладные программы с несколькими вкладками больше не нуждаются в связанных с потоками модификациях.

Кроме того, если определено, что конкретное окно страницы зависло, пользователю может быть выдана подсказка (информирующая пользователя о возникновении зависания окна страницы и напоминающая пользователю закрыть или перезагрузить окно страницы, см. фигуру 5). Таким образом, варианты воплощения настоящего изобретения эффективно улучшают пользовательское восприятие.

Относительно того, каким образом определить, зависло ли окно страницы, для такой проверки могут использоваться некоторые альтернативные методы. Например, если окно страницы не обрабатывает никакие сообщения, отправленные окну страницы, в пределах промежутка времени (например, 5 секунд), считается, что окно страницы может зависнуть, и т.д. Следует отметить, что фактически может быть невозможно точно обнаружить, зависло ли окно страницы (даже сама система Windows не может достигнуть этого), и, таким образом, могут произойти некоторые ложные обнаружения.

Что касается реализации обмена сообщениями между главным окном и окнами страниц, следует отметить следующее: имеется некоторое отношение сопоставления между главным окном и окном страницы, соответствующей отдельной вкладке. Взаимодействие между главным окном и окном страницы может быть достигнуто на основе этого отношения сопоставления, чтобы завершить обмен сообщениями с пользователем. В традиционной структуре окон, такой как структура браузера, например, браузера Yaoyou, система Windows может автоматически создавать такое отношение сопоставления. Главное окно должно только использовать системную функцию (например, GetWindow(CHILD)) для получения окна страницы и затем отправляет сообщения окну страницы.

Однако в вариантах воплощения настоящего изобретения эта традиционная структура окон сломана, и система Windows может быть неспособна автоматически создавать отношение сопоставления между главным окном и окном страницы. Таким образом, нет функции, которую следует вызвать для получения окна страницы. В указанной выше ситуации для достижения нормального взаимодействия между главным окном и окном страницы, вариантами воплощения настоящего изобретения могут использоваться следующие способы: при создании окна страницы, соответствующего отдельной вкладке, как окна верхнего уровня, также может быть создано отношение сопоставления между главным окном и окном страницы, и такое отношение сопоставления может быть сохранено. Таким образом, после того, как главное окно принимает сообщение от пользователя, главное окно может найти соответствующее окно страницы на основе предварительно сохраненного отношения сопоставления и затем отправляет сообщение окну страницы. Сообщение может быть отправлено в неблокирующем режиме. Кроме того окно страницы выполняет соответствующее действие в соответствии с принятым сообщением. Такое действие может включать в себя действие изменения масштаба, действие переключения или действие поиска и т.д. Безусловно в будущем может быть возможно, что система Windows или другие операционные системы смогут, используя структуру окон, описанную в вариантах воплощения настоящего изобретения, автоматически создавать отношение сопоставления между главным окном и окном страницы.

В вариантах воплощения настоящего изобретения окно страницы, соответствующее вкладке, может быть создано или выполнено как окно верхнего уровня в любое время в соответствии с фактическими потребностями. Предпочтительный путь заключается в том, чтобы при создании новой вкладки создавать окно страницы, соответствующее создаваемой вкладке, как окно верхнего уровня. Кроме того, в браузере с несколькими вкладками создание новой вкладки может включать в себя два подхода: один заключается в том, чтобы создать новую вкладку, когда пользователь дважды щелкает по панели вкладок, и окно страницы, соответствующее новой вкладке, является пустым; а другой заключается в том, чтобы создать новую вкладку автоматически посредством браузера, когда некоторая веб-страница открывается в окне страницы, соответствующем новой вкладке, обычно посредством щелчка мышью по ссылке на отображаемой в настоящий момент странице. Этот подход может иметь большее значение в редакторе документов с несколькими вкладками. Например, в программе 'Excel' зависание окна страницы может произойти не только во время процесса редактирования документа, но также при открывании документа Excel. Когда документ Excel открывается, если окно страницы, соответствующее вкладке, зависло, и окно страницы, соответствующее вкладке, не было создано как окно верхнего уровня, может быть невозможно проверить данные в других окнах страниц, которые не зависли. Таким образом, создание соответствующего окна страницы как окна верхнего уровня при создании новой вкладки может предотвратить эту ситуацию.

Следует отметить, что в способах, представленных вариантами воплощения настоящего изобретения, главное окно и окно страницы, соответствующее вкладке, независимы друг от друга, в отличие от традиционной структуры, в которой окно страницы, соответствующее вкладке, является дочерним окном некоторого дочернего окна главного окна. Без необходимой конфигурации размер и расположение главного окна и окна страницы могут быть произвольными. Однако чтобы позволить пользователю получить лучший визуальный эффект, расположение и размер окон страниц, соответствующих вкладкам, могут быть скорректированы адаптивным образом, чтобы соответствовать расположению и размеру главного окна. Другими словами, интерфейс браузера, окончательно предстающий перед пользователем, может не отличаться от интерфейса браузера Yaoyou и других браузеров. Однако фактически этот интерфейс браузера представляет собой не один объект, а несколько объектов, соединенных вместе. Такой интерфейс, представленный пользователю вариантами воплощения настоящего изобретения, можно назвать "асинхронным пользовательским интерфейсом (UI)". Этот пользовательский интерфейс может предотвратить ситуации, в которых зависание одного окна вкладки вызывает неработоспособность главного окна браузера или других окон вкладок.

Специалисты в области техники могут понять, что все или часть приведенных выше способов могут быть достигнуты посредством компьютерных программ, дающих команды соответствующим аппаратным средствам. Компьютерные программы могут быть сохранены на машиночитаемом носителе. Компьютерные программы при их исполнении включают в себя следующие этапы: создание окна страницы, соответствующей вкладке в прикладной программе с несколькими вкладками, как окна верхнего уровня; и выполнение обмена сообщениями в прикладной программе с несколькими вкладками. Описанный носитель может быть, например, постоянным запоминающим устройством (ПЗУ; ROM), оперативным запоминающим устройством (ОЗУ; RAM), диском, компакт-диском, предназначенным для чтения (CD-ROM), и т.д.

В соответствии со способом выполнения обмена сообщениями в прикладной программе с несколькими вкладками, представленным в вариантах воплощения настоящего изобретения, система для выполнения обмена сообщениями в прикладной программе с несколькими вкладками также представлена в вариантах воплощения настоящего изобретения. Как показано на фигуре 6, система включает в себя:

Модуль U601 управления окнами, который используется для создания окон страниц, соответствующих вкладкам в прикладной программе с несколькими вкладками, как окон верхнего уровня. Согласно ранее описанным способам, главное окно прикладной программы с несколькими вкладками также представляет собой окно верхнего уровня. Таким образом, после того, как окна страниц создаются как окна верхнего уровня, окна страниц и главное окно находятся на одном и том же уровне, все являясь окнами верхнего уровня.

Модуль U602 обмена сообщениями, который используется для выполнения обмена пользовательскими сообщениями между окнами верхнего уровня, то есть обмена сообщениями, относящимися к окнам страниц, например, обмена сообщениями между главным окном в прикладной программе и окнами страниц, теперь являющимися окнами верхнего уровня.

Кроме того модуль U601 управления окнами создает окна страниц, соответствующие вкладкам в прикладной программе с несколькими вкладками, как окна верхнего уровня и выполняет обмен сообщениями в прикладной программе с несколькими вкладками. Окна страниц, соответствующие вкладкам, могут быть сделаны не имеющими родительского окна. Таким образом, при ответе на сообщения нет родительского окна для отправки системных сообщений окнам страниц в блокирующем режиме. Таким образом даже если некоторое окно страницы зависнет, то другие окна страниц не будут затронуты, и пользовательское восприятие улучшается.

Кроме того, в системе Windows и других операционных системах для предотвращения отправки сообщений окнам страниц окном владельца окон верхнего уровня модуль U601 управления окнами может создать окна страниц, соответствующие вкладкам в прикладной программе с несколькими вкладками, как окна верхнего уровня, имеющие пустого владельца. Следует отметить, что в операционных системах, отличных от системы Windows, может не быть проблемы пустого владельца. Может только потребоваться, чтобы окна страницы, соответствующие вкладкам, были созданы как окна верхнего уровня, и может быть достигнута цель, заключающаяся в том, что когда пользователь выполняет действие с некоторым окном страницы, родительское окно не должно отправлять системные сообщения своим дочерним окнам, то есть окнам страниц, в блокирующем режиме. Кроме того также может быть достигнута цель уменьшения возможности возникновения распространения зависания.

В соответствии с ранее описанными способами, чтобы дополнительно уменьшить возможность возникновения распространения зависания, модуль U602 обмена сообщениями может специальным образом использоваться в главном окне прикладной программы с несколькими вкладками для отправки сообщений окнам страниц с использованием неблокирующего режима.

Во время процесса ответа на сообщения при структуре окон, созданной вариантами воплощения настоящего изобретения, главное окно может отправлять сообщения окнам страниц, соответствующим вкладкам, и окна страницы могут выполнять соответствующие действия. Для этого нужно отношение сопоставления между главным окном и окнами страниц. Однако структура окон, создаваемая ранее описанными способами, повреждает традиционную структуру окон. Операционная система не способна автоматически создать отношение сопоставления между главным окном и окнами страниц. Таким образом, при создании окна верхнего уровня также создается и сохраняется отношение сопоставления между главным окном и окнами страниц. Таким образом, модуль U602 обмена сообщениями может включать в себя следующие подмодули:

Подмодуль U6021 хранения отношения сопоставления, который используется для создания и сохранения отношения сопоставления между главным окном прикладной программы с несколькими вкладками и окнами страница-Подмодуль U6022 взаимодействия, который используется для инициирования отправки сообщения главным окном окну страницы верхнего уровня, соответствующему заданной вкладке, и для инициирования выполнения окном страницы верхнего уровня заданного действия, соответствующего принятому сообщению. Чтобы сделать окончательно отображаемый интерфейс более соответствующим способам, которые привык использовать пользователь, система также может включать в себя:

Модуль U603 корректировки окон, который используется для корректировки расположения и размера окон страниц таким образом, чтобы окна страниц, соответствовали расположению и размеру главного окна.

Кроме того, система также может включать в себя:

Модуль U604 подсказки, который используется, когда окно страницы, соответствующее некоторой вкладке, зависло для выдачи пользователю подсказки с некоторым напоминанием, включающим в себя подсказку пользователю закрыть или перезагрузить окно страницы, и т.д.

В предпочтительных вариантах воплощения настоящего изобретения, при создании новой вкладки, например, при создании новой пустой страницы или при открытии страницы в новом окне окно страницы, соответствующее новой вкладке, создается как окно верхнего уровня. Этот подход особенно выгоден для редакторов документов с несколькими вкладками для того, чтобы избежать ситуации, в которой во время процесса открытия документа зависание одной страницы препятствует возможности открытия всего документа. Безусловно, окно страницы, соответствующее вкладке, может быть создано как окно верхнего уровня в любое время в соответствии с фактическими потребностями, например, создание окна верхнего уровня, когда большое количество окон страниц открыто.

В соответствии с ранее описанными способами для дополнительного уменьшения возможности возникновения распространения зависания система также может включать в себя:

Первый модуль создания, который используется для создания окон страницы, соответствующих разным вкладкам в прикладной программе с несколькими вкладками, в разных потоках. Поскольку окно принадлежит потоку, если окно создается в этом потоке, этот многопоточный модуль создания может использоваться, чтобы сделать окна страниц, соответствующие разным вкладкам в прикладной программе с несколькими вкладками принадлежащими разным потокам.

Кроме того, во время конкретного обмена сообщениями главному окну прикладной программы с несколькими вкладками может понадобиться отправить сообщения отдельным окнам страниц как окнам верхнего уровня. Как описано в ранее упомянутых способах, если главное окно и окна страниц принадлежат одному и тому же потоку, независимо используется ли для отправки сообщений блокирующий режим или неблокирующий режим, может возникать распространение зависания между главным окном и окнами страниц. Таким образом предпочтительно система также может включать в себя:

Второй модуль создания, который используется для создания главного окна и окна страниц, соответствующих вкладкам, в разных потоках. Таким образом, главное окно прикладной программы с несколькими вкладками и каждое окно страницы принадлежат разным потокам. Таким образом, поскольку эти два окна не принадлежат одному и тому же потоку, когда главное окно должно отправить сообщение окну страницы, если сообщение отправляется в неблокирующем режиме, оно не будет вызывать возникновение распространения зависания.

Приведенные выше подробные описания иллюстрируют способ и систему для выполнения обмена сообщениями в прикладной программе с несколькими вкладками в соответствии с настоящим изобретением. Отдельные примеры использованы для иллюстрации принципа и реализации настоящего изобретения. Однако примеры и варианты воплощения используются только для того, чтобы помочь пониманию способов и сущности настоящего изобретения. Кроме того, для специалистов в области техники конкретные реализации и объем применения могут быть изменены на основе принципов настоящего изобретения. В итоге, содержание этого описания не должно быть интерпретировано как какое-либо ограничение настоящего изобретения.

Класс G06F3/048 средства взаимодействия для графических интерфейсов пользователя, например взаимодействие через окна, иконки или меню

командный интерфейс пользователя для отображения множества участков элементов управления функциями программного обеспечения -  патент 2523914 (27.07.2014)
способ и устройство обработки изображения для средства диалогового обмена сообщениями -  патент 2523207 (20.07.2014)
изоляция принятой информации на заблокированном устройстве -  патент 2519522 (10.06.2014)
двойная буферизация в режиме транзакции для визуализации графического интерфейса пользователя -  патент 2519034 (10.06.2014)
отображение списка файловых вложений, ассоциированных с потоком сообщений -  патент 2510525 (27.03.2014)
колесо прокрутки -  патент 2509342 (10.03.2014)
устройство обработки изображения и способ обработки изображения -  патент 2509341 (10.03.2014)
создание презентации на бесконечном полотне и навигация по ней -  патент 2506629 (10.02.2014)
способ и устройство обработки ресурсов страницы -  патент 2504832 (20.01.2014)
устройство обработки информации -  патент 2504822 (20.01.2014)

Класс G06F9/44 устройства для выполнения специальных программ

устройство обработки информации, система обработки информации, способ обработки информации и носитель информации -  патент 2525746 (20.08.2014)
устройство воспроизведения, способ воспроизведения, устройство записи, способ записи, программа и структура данных -  патент 2525482 (20.08.2014)
расширяемость для основывающейся на web визуализации диаграмм -  патент 2524855 (10.08.2014)
моделирующий коап -  патент 2516703 (20.05.2014)
устройство и способ предоставления информации, терминальное устройство и способ обработки информации, и программа -  патент 2515717 (20.05.2014)
способ и устройство для классификации контента -  патент 2509352 (10.03.2014)
конфигурируемое разделение для параллельных данных -  патент 2503997 (10.01.2014)
кэширование и предоставление данных перед отправкой, относящихся к отправителю или получателю сообщения электронной почты -  патент 2501074 (10.12.2013)
протокол коммутации смеси мультимедийных данных для управления мультимедийными данными -  патент 2501070 (10.12.2013)
синхронизация жизненных циклов виртуальной машины и приложения -  патент 2498394 (10.11.2013)
Наверх