|
|
|
Прозрачная форма но только форма
|
|||
|---|---|---|---|
|
#18+
Доброго Вам времени суток Уважаемые господа при наличии времени прошу Вас помочь мне необходимо сделать прозрачной только форму а контролы чтобы все остовались видимыми в поисках я нашел вот этот код --------------------------------- Создаем стандартный модуль (*.bas). В нем мы создадим процедурку, которая и будет делать прозрачные окна. Для начала нам необходимо объявить 3 функции: Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal Hrgn As Long, byVal bRedraw As Boolean) As Long Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long Первая функция устанавливает регион окна, Вторая функция создает прямоугольный регион с указанными координатами, Третья функция объединяет 2 региона в один. Затем объявим 2 константы. Public Const RGN_DIFF = 4 Public Const RGN_OR = 2 Ну а теперь приступаем к написанию процедуры. Пишем заголовок процедуры (у нас будет один параметр, в котором мы укажем нужную форму). Public Sub RebuildWindowRgn(FormName As Form) Объявляем переменную, в которой будет храниться полный регион Dim FullRgn As Long А в следующей переменной будут храниться промежуточные регионы Dim Rgn As Long Dim CaptionHeight As Integer 'Высота заголовка формы Допустим, у нас высота заголовка формы – 22 пикселя CaptionHeight = 22 Переводим масштаб формы в пиксели FormName.ScaleMode = 3 'Создаем регион для всей формы FullRgn = CreateRectRgn(0, 0, FormName.Width, FormName.Height) Создаем регион клиентской части (часть окна без заголовка) Rgn = CreateRectRgn(0, CaptionHeight, FormName.Width, FormName.Height) Вычеркиваем из региона заголовок окна. CombineRgn FullRgn, FullRgn, Rgn, RGN_DIFF Создаем регион для каждого элемента управления For Each Control In FormName.Controls Rgn = CreateRectRgn(Control.Left + 2, (Control.Top + CaptionHeight), (Control.Left + Control.Width + 2), (Control.Top + Control.Height + CaptionHeight)) 'Добавляем регион для элемента управления CombineRgn FullRgn, FullRgn, Rgn, RGN_OR Next Control 'Устанавливаем новый регион окна SetWindowRgn FormName.hwnd, FullRgn, True 'Конец процедуры End Sub Итак, как же пользоваться полученной процедурой? Допустим у нас есть форма Form1, тогда в событии Form_Load мы помещаем такой код: RebuildWindowRgn (Form1) --------------------------------- но он выдает ошибку Tayp Mismatch в чем дело понять не могу помогите пожалуйста С Уважением и Благодарностью Намик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 22:10 |
|
||
|
Прозрачная форма но только форма
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2006, 22:36 |
|
||
|
Прозрачная форма но только форма
|
|||
|---|---|---|---|
|
#18+
Доброго Вам времени суток Уважаемый VladConn благодарю Вас за ответ но все равно выдает ошибку и выделяет желтым цветом вот этот код - RebuildWindowRgn (Form1) я вроде все далаю правильно создаю стандартный модуль ввожу туду код при загрузке формы - RebuildWindowRgn (Form1) все равно Tayp Mismatch С Уважением и Благодарностью Намик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 09:56 |
|
||
|
Прозрачная форма но только форма
|
|||
|---|---|---|---|
|
#18+
при вызове пиши так RebuildWindowRgn Form1 без скобок или так call RebuildWindowRgn(Form1) со скобоками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 11:55 |
|
||
|
Прозрачная форма но только форма
|
|||
|---|---|---|---|
|
#18+
работает благодарю Вас С Уважением Намик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 13:58 |
|
||
|
Прозрачная форма но только форма
|
|||
|---|---|---|---|
|
#18+
Уважаемые господа возникла проблема с контролом Image я помещаю на форму контрол Image1 свойство strech = trye загружаю изображение - gif файл без фона при загрузке форма исчезает а за картинкой появляется фон контрол Image1 хотя до загрузки никакого фона нет и если даже просто без картинки пустой контрол Image1 загрузить то всеравно фон в размере контрола подскажите пожалуйста как убрать этот фон С Уважением и Благодарностью Намик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2006, 16:48 |
|
||
|
Прозрачная форма но только форма
|
|||
|---|---|---|---|
|
#18+
Доброго Вам времени суток прошу Вас посмотрите этот код -------------------- Option Explicit Private Const GWL_EXSTYLE = (-20) Private Const WS_EX_TRANSPARENT = &H20& Private Const SWP_FRAMECHANGED = &H20 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOSIZE = &H1 Private Const SWP_SHOWME = SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE Private Const HWND_NOTOPMOST = -1 Private Declare Function SetWindowLong _ Lib "user32" Alias "SetWindowLongA" ( _ ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long _ ) As Long Private Declare Function SetWindowPos _ Lib "user32" ( _ ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal X As Long, _ ByVal Y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal wFlags As Long _ ) As Long Private Sub Form_Load() SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_EX_TRANSPARENT SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0&, 0&, 0&, 0&, SWP_SHOWME End Sub ---------------------------------- он дает мне то что надо только происходит что то не понятное то форма появляется, то исчезает то видна одна картинка то вся форма С Уважением и Благодарностью Намик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2006, 17:34 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2164792]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 493ms |

| 0 / 0 |
