Страница: 1 |
Страница: 1 |
Вопрос: Рисунок CommandButton-а.
Добавлено: 16.07.08 15:18
Автор вопроса: J. Smith | Web-сайт:
Нужен код, чтоб рисунок не пропадал с батона при наведении на него мыши.
Моя попытка:
Option Explicit
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function DrawIconEx Lib "user32" (ByVal hDC As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Initialize()
InitCommonControlsXP 'т.е. контролы в теме винды
End Sub
Private Sub Form_Load()
Dim Icon As Long
Show
DoEvents
Icon = ExtractIcon(App.hInstance, "shell32.dll", 165)
DrawIconEx GetDC(Command1.hwnd), 4, 4, Icon, 32, 32, 0, 0, 3
End Sub
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #1
Добавлено: 16.07.08 15:43
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form_Load
End Sub
Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Form_Load
End Sub
Номер ответа: 2
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #2
Добавлено: 16.07.08 15:43
От блин, винда не накладывает фокус сверху, она по новой всю кнопку рисует из темы.
Маусмувы отлавливать полная засада.
Номер ответа: 3
Автор ответа:
J. Smith
ICQ: ненавижу
Вопросов: 40
Ответов: 477
Web-сайт:
Профиль | | #3
Добавлено: 16.07.08 15:46
Одновременно отпостились.
Ну ты прав Михалыч, походу нажатие тоже дорисовывать надо.
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 20.07.08 02:14
Не чудите, почитайте как это делается через сабклассинг, или расширения контрлов (не знаю, есть ли такое в VB6)