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