Пытаюсь сделать программу Напоминатель, столкнулся с небольшой сложностью, когда пользователь сидит в ДОС окне во весь экран, то окошко всплывает , но в фоновом режиме, нужно сделать, чтобы Всплывающее окошко стало Активным (, чтобы из ДОс окна его автоматом на Высплывающее)
Всем спасибо!
Как сделать, чтобы окно открывалось поверх всех?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
ЕМНИП, так можно было сделать до win2k. Потом мелкомягкие одумались, и решили, что раздражать пользователей выплывающими окнами неправильно. И теперь окно может только поморгать на таскбаре или всплыть где-то на фоне.
Впрочем есть решения. Но вначале подумайте
Мне хочется отбить разработчикам таких программ все, что выступает наружу. Не глядючи что-то набираешь, тут вылетает окно с вопросом "Are you ABSOLUTELY sure... ?", и сходу давишь "Yes", потому, что не успеваешь остановить руку.
Иногда с непоправимыми последствиями
2.05. Когда вызываешь ShowWindow(...,SW_SHOW) из пpоцесса, не являющегося
foreground, на таскбаpе начинает мигать таб, соответствующий окошку.
Как заставить окно откpываться сpазу?
AllowSetForegroundWindow() или посылать ему клик по Caption.
комментарий: AllowSetForegroundWindow вызывать должен фореграунд
процесс, чтобы позволить другим процессам делать свое окно активным.
Так что этот метод применим только с использованием хука.
--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836
Написал: ClaList(2)
Впрочем есть решения. Но вначале подумайте

Мне хочется отбить разработчикам таких программ все, что выступает наружу. Не глядючи что-то набираешь, тут вылетает окно с вопросом "Are you ABSOLUTELY sure... ?", и сходу давишь "Yes", потому, что не успеваешь остановить руку.
Иногда с непоправимыми последствиями

2.05. Когда вызываешь ShowWindow(...,SW_SHOW) из пpоцесса, не являющегося
foreground, на таскбаpе начинает мигать таб, соответствующий окошку.
Как заставить окно откpываться сpазу?
AllowSetForegroundWindow() или посылать ему клик по Caption.

комментарий: AllowSetForegroundWindow вызывать должен фореграунд
процесс, чтобы позволить другим процессам делать свое окно активным.
Так что этот метод применим только с использованием хука.
--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836
Написал: ClaList(2)
Есть на самом деле масса ситуаций когда одна прога должна уметь активизировать свое окно без всяких морганий на таскбаре, когда в другой происходят определенные события, когда эти две проги работают как единая система. В свое время пришлось преодолевать эту проблему, в результате появилась такая процедура. Позволяет активизировать окно по его handle.
Удачи!
__________________________________
Владимир Якимченко (IСQ 16 993 194)
Написал: ClaList(2)
Код: Выделить всё
SetWinActive PROCEDURE (HWND hWnd)
hParentWnd HWND
hForWnd HWND
ForThreadID DWORD
CurThreadID DWORD
TmpDWORD DWORD
CODE
LOOP
hParentWnd = GetParent(hWnd)
IF hParentWnd ; hWnd = hParentWnd
ELSE ; BREAK.
END
hForWnd = GetForegroundWindow()
IF hForWnd <> hWnd AND IsWindow(hWnd)
CurThreadID = GetCurrentThreadId()
ForThreadID = GetWindowThreadProcessId(hForWnd, TmpDWORD)
IF CurThreadID = ForThreadID
SetForegroundWindow(hWnd)
ELSE
IF AttachThreadInput(CurThreadID, ForThreadID, TRUE)
SetForegroundWindow(hWnd)
AttachThreadInput(CurThreadID, ForThreadID, FALSE)
END
END
END
__________________________________
Владимир Якимченко (IСQ 16 993 194)
Написал: ClaList(2)