Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: vt-dbnz.narod.ru
 Профиль | | #3
Добавлено: 23.12.05 00:26
Ха. Мощная штука свернуть все окна. Я с ней ниче не смог сделать. Не удается показать окно, чтоб его. Хотя апи-функции не применял. Может установка AlwaysOnTop когда его не видно поможет, вместе с BringToFront.

Ответить

Номер ответа: 4
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #4
Добавлено: 23.12.05 00:39
Т.е. чтобы была видна даже после нажатия [win]+D.

А для чего это может понадобиться, если не секрет? Если пользователь хочет увидеть рабочий чтол, так пусть увидит.

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #9
Добавлено: 23.12.05 13:24
Тогда, извини, не вижу никакого смысла. Показывается простая форма. Минимизируется при WinKey+D.

Ответить

Номер ответа: 10
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #10
Добавлено: 23.12.05 13:29
А с контролами получается прикольно, ничего не скажешь... :) Вот пример, когда кнопка после загрузки оказывается на рабочем столе. А это мысль, товарисчи!!!

http://mc-black.narod.ru/desktop.zip

Ответить

Номер ответа: 11
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #11 Добавлено: 23.12.05 13:32
SetParent CtlhWnd, DeskhWnd' где
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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #14
Добавлено: 23.12.05 14:18
там если заменить Command1.hWnd на hDesktopWnd, то форма как форма, ничем не примечательная.. Я думаю, человек хотел, чтобы форма ра рабочем столе была "как прибитая к десктопу"

Ответить

Номер ответа: 15
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #15 Добавлено: 23.12.05 20:07
Тады попробуй поюзать ActiveDesktop, VBS....

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам