Задача: вывести форму на "Полный экран", по типу просмотра "на весь экран" в ACDSee (программа аналогичной направленности)
Имеется странная проблема с ресайзом формы: форма выводится поверх всех окон, но какие размеры по вертикали на устанавливай - не хочет закрывать панель задач более, чем наполовину.
frmMain.Top = -350 'Чтобы не было видно заголовка
frmMain.Left = 0
Dim ll_Width As Long
Dim ll_Height As Long
ll_Width = GetSystemMetrics(SM_CXSCREEN)
ll_Height = GetSystemMetrics(SM_CYSCREEN)
Call SetWindowPos(frmMain.hWnd, -1, 0, -23, ll_Width * 10, ll_Height * 10, SWP_SHOWWINDOW)
Какой множитель не ставь к параметрам ll_Height и ll_Width - разницы нет...
Если бы всё было так просто - я бы сюда не писал... Это было первое, что я испробовал, однако результат тот же - форма не доходит до нижнего края экрана ровно на половину высоты панели задач. Даже если та скрыта.
Когда у формы нет заголовка изначально (во время написания кода) код
frmMain.SetFocus
Dim ll_Width As Long
Dim ll_Height As Long
ll_Width = GetSystemMetrics(SM_CXSCREEN)
ll_Height = GetSystemMetrics(SM_CYSCREEN)
SetWindowPos frmMain.hwnd, -1, 0, 0, ll_Width * 10, ll_Height * 10, SWP_SHOWWINDOW
работает идеально. Проблема в том, что когда форма не максимизирована, заголовок у неё должен быть (BorderStyle=2). Удаление заголовка (выставление BorderStyle=0) во время выполнения не помогает: заголовок исчезает, форма распахивается... Но опять же, не на весь экран, оставляя пустую полоску там, где раньше был заголовок.
Не помогает ни DoEvents между удалением заголовка и ресайзом, ни Sleep... Только если форму свернуть обратно (это вызывается по двойному клику на ней), а потом развернуть ещё раз - разворачивается как надо. Т.е., требуется три даблклика по форме вместо одного. Программная имитация этих действий не помогает...
Странно, у меня норм работает...
Кстати, frmMain.Top = -350 не катит, т.к. многие выставляют нестандартный размер заголовка у себя в виндовзовских настройках..
В общем ладно, забил я на это дело. Для основных функций программы ограничусь максимизацией в пределах материнской MDI-формы, а для просмотра на весь экран сделаю отдельное приложение. Кстати, его можно вызывать через ShellExecute, так что юзер ничего не заметит... Конечно, это кривое решение, зато будет работать железно
нет, не всёравно, должно работать ровно... Вообщето я не пойму, мне чтоб развернуть форму ПОЛНОСТЬЮ на весь экран хватает св-ва WindowState. И вообще почему именно ПОЛОВИНА панели задач? Мне кажеться то что-то в винде у тебя... Ещё в принципе нечего не мешает поставить BorderStyle=0, скрыть панель задач, и развенуть форму чуть чуть больше (Screen.Height + 100) итп...
Поясняю ещё раз: форма имеет заголовок. Она должна его иметь, пока не развёрнута на весь экран, потому что так надо. Итак, убираем заголовок (Borderstate=0). Если максимизировать через WindowState, она просто развернётся, не перекрыв панели задач. А надо, чтобы поверх всех окон... Поэтому разворачиваем через API, как во втором примере. Форма разворачивается... Перекрывает всё и вся, в том числе панель задач (дело вообще не в ней)... А НА МЕСТЕ, ГДЕ БЫЛ ЗАГОЛОВОК остаётся полоска пустоты, которая исчезает, только если форму свернуть и развернуть ещё раз. Причём не программно, а вручную, программная имитация этих действий не помогает.
Парадокс в том, что когда форма максимизирована, ни перемещать, ни менять её размеры нельзя...
К тому же, оказывается, когда активируешь одну из дочерних форм MDI-формы, НЕ дочерняя форма того же приложения сворачиваются. Если её же сделать дочерней, этого не происходит. Но дочернюю форму сделать НЕ дочерней во время выполнения нельзя! А дочернюю невозможно развернуть на весь экран, только в пределах материнской... Поэтому я на это дело забил. Сделал все формы дочерними, а для просмотра на весь экран - отдельное приложение. Заодно пригодится в качестве автономного просмотрщика, когда не нужен редактор. ^_^
мда, ну ты и замутил тут всё. Ладно, делай как знаешь, а вообще можно посмотреть на тот парадокс? ну там где форма криво разворачивается, или чего там... так и не понял, вообщем дай код посмотреть.
Итак, программа для просмотра/редактирования манги с субтитрами. Для чего это нужно? Предположим, имеется некоторая манга на английском языке. Вы её скачиваете (достаёте), читаете... Постепенно ребята с mangaproject.ru переводят её на русский язык, и чтобы почитать на русском, необходимо заново скачать многие десятки, а то и сотни мегабайт манги... Что не есть хорошо. Теперь же можно будет скачать крошечный архив с субтитрами, подключить их, и наслаждаться мангой на русском языке: оригинальные надписи будут закрыты русскими, их можно в любой момент отключить, подредактировать и т.п. В общем, смотрите: