Форум: "Основная";
Текущий архив: 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.22 c