Страница: 1 | 2 |
Вопрос: Форму в бэкграунд
Добавлено: 22.12.05 16:34
Автор вопроса: Pashenko | ICQ: 176176951
1. Как сделать, чтобы форма всегда была на заднем плане относительно других (чужих) окон?
2. Как сделать форму несворачиваемой? Т.е. чтобы была видна даже после нажатия [win]+D.
Ответы
Всего ответов: 26
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 22.12.05 17:00
1. Представь, что некий другой программист написал программу с такой же фичей, и что эти две программы у пользователя запущены одновременно.
2. Ловить WM_SYSCOMMAND, и если wParam=SC_MINIMIZE, то игнорить.
Номер ответа: 2
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #2
Добавлено: 22.12.05 20:05
Научи так делать. please
Номер ответа: 3
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #3
Добавлено: 23.12.05 00:26
Ха. Мощная штука свернуть все окна. Я с ней ниче не смог сделать. Не удается показать окно, чтоб его. Хотя апи-функции не применял. Может установка AlwaysOnTop когда его не видно поможет, вместе с BringToFront.
Номер ответа: 4
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #4
Добавлено: 23.12.05 00:39
А для чего это может понадобиться, если не секрет? Если пользователь хочет увидеть рабочий чтол, так пусть увидит.
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 23.12.05 10:29
Товарищ наверное хочет сделать часы-календарь на рабочем столе или что-то, что заменит иконки на рабочем столе или какую-то полезную туззу по управлению компьютером. Регионами там окно вырезать нестандартной формы и т.п. Или нет?
Может
2. Ловить WM_SYSCOMMAND, и если wParam=SC_MINIMIZE, то пускать таймер на малый промежуток и снова восстанавливать окно.
Номер ответа: 6
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #6
Добавлено: 23.12.05 11:02
Для подобных вещей полезно просто сделать SetParent свою форму в рабочий стол.
Номер ответа: 7
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #7
Добавлено: 23.12.05 11:20
И что будет, если я форму переназначу рабочему столу? Про элементы управления-то понятно, а какой эффект будет с формой? Идея-то интересная.
Номер ответа: 8
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #8
Добавлено: 23.12.05 12:43
Дык попробуй, делов-то...
Номер ответа: 9
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #9
Добавлено: 23.12.05 13:24
Тогда, извини, не вижу никакого смысла. Показывается простая форма. Минимизируется при WinKey+D.
Номер ответа: 10
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #10
Добавлено: 23.12.05 13:29
А с контролами получается прикольно, ничего не скажешь... Вот пример, когда кнопка после загрузки оказывается на рабочем столе. А это мысль, товарисчи!!!
http://mc-black.narod.ru/desktop.zip
Номер ответа: 11
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #11
Добавлено: 23.12.05 13:32
CtlhWnd-хендл твоего контрола на твоей форме, DeshWnd - хендл окна рабочего стола (по-моему класс "ListView"
Номер ответа: 12
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #12
Добавлено: 23.12.05 13:53
Точно, я же Win+M всегда юзаю...
Номер ответа: 13
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #13
Добавлено: 23.12.05 14:16
Не знаю, мало ли там в системе листвью, а хэндл рабочего стола получаем как результат GetDesktopWindow
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Sub Form_Load()
Dim hDesktopWnd As Long
hDesktopWnd = GetDesktopWindow()
Call SetParent(Command1.hWnd, hDesktopWnd)
End Sub
Но результат привязки формы как дочерней к рабочему столу не дает ничего полезного. Просто форма как форма. Тоже сворачивается по WinKey+D
Номер ответа: 14
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #14
Добавлено: 23.12.05 14:18
там если заменить Command1.hWnd на hDesktopWnd, то форма как форма, ничем не примечательная.. Я думаю, человек хотел, чтобы форма ра рабочем столе была "как прибитая к десктопу"
Номер ответа: 15
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #15
Добавлено: 23.12.05 20:07
Тады попробуй поюзать ActiveDesktop, VBS....