Кто знает, возможно ли вообще добавить в заголовок формы иконку (мне нужна конкретно иконка справки, но вообще - вопрос шире), помимо трех стандартных (Свернуть, Развернуть и Закрыть)? И если это возможно, то как именно?
Для простоты понимания прикладываю картинки и файл
Кто знает, возможно ли вообще добавить в заголовок формы иконку (мне нужна конкретно иконка справки, но вообще - вопрос шире), помимо трех стандартных (Свернуть, Развернуть и Закрыть)? И если это возможно, то как именно?
Для простоты понимания прикладываю картинки и файл
а событие при нажатии на WhatsThisButton можно как то отследить? ато нигде не нашел этого. Не совсем то, но нашел вот такую вот штуку, малоли, вдруг что то придумаешь с этого., на эту панельку можно как я понял в процессе вешать любый значки.
а событие при нажатии на WhatsThisButton можно как то отследить? ато нигде не нашел этого. Не совсем то, но нашел вот такую вот штуку, малоли, вдруг что то придумаешь с этого., на эту панельку можно как я понял в процессе вешать любый значки.DJ_Marker_MC
'Пример добавляет иконку в заголовок формы, кнопку свернуть и 'отображает форму на панель задач. ' 'Для работы примера поместите на Лист1 рисунок Image1 с подходящей 'картинкой для иконки формы.
Private Declare Function GetWindowLong Lib "user32" Alias _ "GetWindowLongA" (ByVal hWnd As Long, _ ByVal nIndex As Long) As Long 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 Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function GetActiveWindow Lib "user32.dll" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Declare Function DrawMenuBar Lib "user32" _ (ByVal hWnd As Long) As Long
Private Sub UserForm_Activate() AddIcon AddMinimiseButton AppTasklist Me End Sub '-------------------------------------------------------------------------------------- Private Sub AddIcon() 'добавляет иконку в заголовок формы Dim hWnd As Long Dim lngRet As Long Dim hIcon As Long hIcon = Лист1.Image1.Picture.Handle hWnd = FindWindow(vbNullString, Me.Caption) lngRet = SendMessage(hWnd, WM_SETICON, ICON_SMALL, ByVal hIcon) lngRet = SendMessage(hWnd, WM_SETICON, ICON_BIG, ByVal hIcon) lngRet = DrawMenuBar(hWnd) End Sub '-------------------------------------------------------------------------------------- Private Sub AddMinimiseButton() 'добавляет кнопку свернуть в заголовок формы Dim hWnd As Long hWnd = GetActiveWindow Call SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) Or WS_MINIMIZEBOX) Call SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE) End Sub '-------------------------------------------------------------------------------------- Private Sub AppTasklist(myForm) 'отображает форму на панели задач Dim WStyle As Long Dim Result As Long Dim hWnd As Long
hWnd = FindWindow(vbNullString, myForm.Caption) WStyle = GetWindowLong(hWnd, GWL_EXSTYLE) WStyle = WStyle Or WS_EX_APPWINDOW Result = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_HIDEWINDOW) Result = SetWindowLong(hWnd, GWL_EXSTYLE, WStyle) Result = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW) End Sub
'Пример добавляет иконку в заголовок формы, кнопку свернуть и 'отображает форму на панель задач. ' 'Для работы примера поместите на Лист1 рисунок Image1 с подходящей 'картинкой для иконки формы.
Private Declare Function GetWindowLong Lib "user32" Alias _ "GetWindowLongA" (ByVal hWnd As Long, _ ByVal nIndex As Long) As Long 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 Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function GetActiveWindow Lib "user32.dll" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Declare Function DrawMenuBar Lib "user32" _ (ByVal hWnd As Long) As Long
Private Sub UserForm_Activate() AddIcon AddMinimiseButton AppTasklist Me End Sub '-------------------------------------------------------------------------------------- Private Sub AddIcon() 'добавляет иконку в заголовок формы Dim hWnd As Long Dim lngRet As Long Dim hIcon As Long hIcon = Лист1.Image1.Picture.Handle hWnd = FindWindow(vbNullString, Me.Caption) lngRet = SendMessage(hWnd, WM_SETICON, ICON_SMALL, ByVal hIcon) lngRet = SendMessage(hWnd, WM_SETICON, ICON_BIG, ByVal hIcon) lngRet = DrawMenuBar(hWnd) End Sub '-------------------------------------------------------------------------------------- Private Sub AddMinimiseButton() 'добавляет кнопку свернуть в заголовок формы Dim hWnd As Long hWnd = GetActiveWindow Call SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) Or WS_MINIMIZEBOX) Call SetWindowPos(hWnd, 0, 0, 0, 0, 0, SWP_FRAMECHANGED Or SWP_NOMOVE Or SWP_NOSIZE) End Sub '-------------------------------------------------------------------------------------- Private Sub AppTasklist(myForm) 'отображает форму на панели задач Dim WStyle As Long Dim Result As Long Dim hWnd As Long
hWnd = FindWindow(vbNullString, myForm.Caption) WStyle = GetWindowLong(hWnd, GWL_EXSTYLE) WStyle = WStyle Or WS_EX_APPWINDOW Result = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_HIDEWINDOW) Result = SetWindowLong(hWnd, GWL_EXSTYLE, WStyle) Result = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE Or SWP_SHOWWINDOW) End Sub
Добавить иконку получилось (правда слева, а не справа). Но вот как на нее макрос повесить - для меня загадка (1-й файл). Предложу еще вот какой вариант: сам заголовок формы убрать совсем, а вверху формы нарисовать все, что нужно (2-й файл), в примере только кнопка справки и крестик для закрытия.
Добавить иконку получилось (правда слева, а не справа). Но вот как на нее макрос повесить - для меня загадка (1-й файл). Предложу еще вот какой вариант: сам заголовок формы убрать совсем, а вверху формы нарисовать все, что нужно (2-й файл), в примере только кнопка справки и крестик для закрытия.Manyasha
Оно вероятно, через API можно, но и гемора может возникнуть масса. Основное - стабильность работы. И стоит ее менять на псевдокрасивость? Обычно, при упоминании возможности нестабильности работы, заказчик тут же понимает, что эта красивость ему не так уж и нужна.
Оно вероятно, через API можно, но и гемора может возникнуть масса. Основное - стабильность работы. И стоит ее менять на псевдокрасивость? Обычно, при упоминании возможности нестабильности работы, заказчик тут же понимает, что эта красивость ему не так уж и нужна.RAN