Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];

Вниз

Как   Найти похожие ветки 

 
Yr2   (2003-03-29 19:17) [0]

Как "всплыть" окно программы поверх всех других по срабатыванию внутреннего таймера (в той же программе). Например, на экране отображается окно Form1, которое я вручную "накрываю" другим окном, например Far_ом. Через 5 сек (по событию от таймера) Form1 должна полностью перерисоваться, то есть "всплыть наверх".
Перепробовал массу методов(GetForegroundWindow, BringWindowToTop, SetActiveWindow, ShowWindow, SetWindowPos...)- всё не удовлетворяет. В частности, метод GetForegroundWindow приводит к активизации (миганию) кнопки на панели TaskBar, а не к перерисовке Form1.
Как побороть?
С уважением.


 
Song   (2003-03-29 20:49) [1]

SwithToThisWindow()
вроде так


 
Morfein   (2003-03-29 22:03) [2]


SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
SetWindowPos(handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);


 
Zazoo   (2003-03-29 22:24) [3]

2Morfein:
Более корректно будет: SWP_NOMOVE or SWP_NOSIZE


 
Anatoly Podgoretsky   (2003-03-29 23:04) [4]

Нафиг, нафиг, боролись, но все равно находятся настойчивые попрыгунчики.


 
Yr2   (2003-03-31 17:06) [5]

To Song:
SwithToThisWindow - нет такой функции. Очень бы хотелось, но нет. Хотя Task Manager именно это и делает каким-то образом по кнопочке "Swith To". Есть похожая функция SwitchToThread, но не работает.

To Morfein:
Спасибо это уже лучше, но есть несколько отрицательных эффектов. Хочу предупредить, что, (как ни странно!?) на одной машине с WIN2000 они проявляются, на другой с WIN2000 - нет. То есть у Вас могут и не проявиться.
а)если я накрываю форму FAR_ом, то по срабатыванию этой пары функций кнопка FAR_а на панели TaskBar остается нажатой, и если после этого по ней кликнуть, то FAR вместо того, чтобы активизироваться - наоборот полностью сворачивается;
б)после срабатывания этой пары функций клик по любой частично видимой области FAR_а, за исключением его Caption не приводит к активизации окна FAR_а; активизировать можно кликом только по его Caption.
в) после срабатывания этой пары функций Caption моей программы (формы) не "подсинивается", то есть как бы не активизируется.
Но самое главное, всё-равно эта пара не работает в моей конечной ситуации, о которой напишу ниже.

To Anatoly Podgoretsky:
Честно говоря, не понял известного, уважаемого мастера...
"попрыгунчиком" никто быть не собирается. Возможно, Ваше мнение из-за того, что я упростил описание задачи. На самом деле ситуация сложнее. Насколько я помню, в WIN95 окна сами активизировались и раскрывались по внутренним событиям, что многих раздражало (видимо отсюда Ваше "нафиг, нафиг"). В WIN2000 это уже переделано и внутреннее событие не раскрывает окно, а приводит к подмигиванию соответствующей кнопки на TaskBar_е. Я тоже не хочу распахивать окно вразрез с установленными правилами, но.
Если точнее, то задача (проблема) в следующем:
Есть три независимых Windows-процесса, каждый имеет своё окно, но окна эти "вклеены" в мою форму методом SetParent. Так вот, когда я кликаю по любому из этих окон, то главная форма (их содержащая)НЕ перерисовывается, то есть остается частично перекрытой другими программами, например FAR_ом. При этом курсор во "вклеенном" окне активизируется! Надеюсь, что рассказал не сильно сумбурно. Таймер здесь был для примера. С таймером метод от Morfein в целом работает.
Возможно, надо пойти по другому пути. Имитировать что-то вроде клика мышью по форме или по кнопке на TaskBar_е. Но пока не получилось.
А вообще, я сам уже намаялся, но так хочет заказчик...
С уважением.


 
Anatoly Podgoretsky   (2003-03-31 17:41) [6]

Именно про это "ушли" и имелось в виду, в 98 наконец этих попрыгунчиков прибили, они столько хлопот доставляют и проблем, просто жуть.

SwithToThisWindow это недокументированная функция.


 
Diamond Cat   (2003-03-31 19:39) [7]


> Yr2 © (31.03.03 17:06)
> To Song:
> SwithToThisWindow - нет такой функции

The SwitchToThisWindow function is called to switch focus to a specified window and bring it to the foreground.

Syntax

VOID SwitchToThisWindow( HWND hWnd,
BOOL fAltTab
);
Parameters

hWnd
[in] Handle to the window being switched to.
fAltTab
[in] A TRUE for this parameter indicates that the window is being switched to using the Alt/Ctl+Tab key sequence. This parameter should be FALSE otherwise.
Return Value

None.

Remarks

This function is typically called to maintain window z-ordering.

Although you can access this function by using LoadLibrary and GetProcAddress combined in Microsoft® Windows® versions prior to Windows XP, the function is not accessible using the standard Include file and library linkage. The header files included in Windows XP Service Pack 1 (SP1) and WindowsWindows Server 2003 family document this function and make it accessible using the appropriate Include file and library linkage. However, this function is deprecated and not intended for general use. It is recommended that you do not use it in new programs because it might be altered or unavailable in subsequent versions of Windows.

Function Information

Header Declared in Winuser.h, include Windows.h
Import library User32.lib
Minimum operating systems Included in Windows 2000

See Also

Windows Overview, IsWindowVisible, ShowWindow
ищи в msdn



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
1-30377
Михайлов Антон
2003-03-29 09:51
2003.04.10
MainMenu=>SubMenu


14-30556
bkv
2003-03-24 16:18
2003.04.10
Снижение спроса на Delphi -разработчиков!!!!!!!!!!!!!!!!!!!!!!!!!


1-30433
acsoft
2003-03-31 07:59
2003.04.10
Хотелось бы научиться создавать плагины для своей программы в вид


1-30332
lory
2003-03-31 14:42
2003.04.10
многострочный текст в ячейке StringGrida


14-30595
acsoft
2003-03-25 06:31
2003.04.10
Создать zip-архив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский