Cyrax писал(а):а никак, разве что искать другую кнопку
тут можешь посмотреть где искать эти другие кнопки
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long
Cyrax писал(а):
- Код: Выделить всё
Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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
- Код: Выделить всё
Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
можно попробовать эти функции...
а эта функция
- Код: Выделить всё
Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Long) As Long
вернет hDC кнопки...
но у меня нет стопроцентной уверенности, что это сработает
попробуй, вдруг получится...
Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, lpDrawTextParams As DRAWTEXTPARAMS) As Long
GoGosha писал(а):Да и ещё вопрос: можно ли нарисовать картинку на hDC не загружая её в PictureBox(и не по пикселям!)
Из переменной IPictureDisp
Cyrax писал(а):GoGosha писал(а):Да и ещё вопрос: можно ли нарисовать картинку на hDC не загружая её в PictureBox(и не по пикселям!)
Из переменной IPictureDisp
можно конечно в памяти создать контекст устройства (DC) и внего картинку грузить...
по этому поводу могу лишь посоветовать книжки по API почитать
и еще поищи книгу Брюса Мак-Кинни "Крепкий орешек Visual Basic" в ней не плохо описана работа с API. ну и конечно же Дэн Эплман
GoGosha писал(а):Эта типа GetObjectAPI?
Boris_BGB писал(а):Мучать кнопку через API - оригинально! Проще контрол написать.
PVS писал(а):Кстати, я тут в Excel недавно на VBA писал - дык в VBA можно без проблем картинку на кнопке куда нужно хреначить - а вот никак эти VBA-ые кнопки в проект на VB не подтащить?
Cyrax писал(а)::oops: ой, люди...PVS писал(а):Кстати, я тут в Excel недавно на VBA писал - дык в VBA можно без проблем картинку на кнопке куда нужно хреначить - а вот никак эти VBA-ые кнопки в проект на VB не подтащить?
совсем чегой-то я ступил
конечно можно. Microsoft Forms 2.0 Object Library - библиотека называется. как раз контролы из офисного VBA.
хорошо добрый человек напомнил... большое ему за это СПАСИБО
GoGosha писал(а):Хм-м-м-м лишний миг с прогой таскать не хочется
Или она и в чистой винде есть????
Cyrax писал(а)::oops: ой, люди...
конечно можно. Microsoft Forms 2.0 Object Library - библиотека называется. как раз контролы из офисного VBA.
PSV писал(а):Cyrax писал(а)::oops: ой, люди...
конечно можно. Microsoft Forms 2.0 Object Library - библиотека называется. как раз контролы из офисного VBA.
А она лицензий отдельных для работы не требует? А лицензий для распространения с ПО?
Так то я посмотрел на зависимости этого fm20.dll - ничего сверхестественного.
RayShade писал(а):Нету. Ставится вместе с MS Office.
v-adix писал(а):создаёшь проект ActiveX OCX
добавляешь кнопку, свойство picture ставишь то что хочешь
там ещё пару своёств пошатай и будет всё ок
а потом исходник добавляй к EXE проекту чтобы OCX не таскать
v-adix писал(а):создаёшь проект ActiveX OCX
добавляешь кнопку, свойство picture ставишь то что хочешь
там ещё пару своёств пошатай и будет всё ок
а потом исходник добавляй к EXE проекту чтобы OCX не таскать
PSV писал(а):Ну все хорошо с этими кнопками (из MS Forms 2.0), но ... как всегда есть маленький недочет способный все испортить: при выключении кнопки Enabled=False текст становится серым, как и должно быть у неактивной кнопки, а картинка ... остается цветной и сочной
Свойство Picture есть ссылка на объект StdPicture. Ну и как бы программно делать при выключении ентой кнопки картинку серой и потом, при включении, делать картинку нормальной (цветной).
' выключенная картинка
cdm.Enabled = False
Set cmd.Picture = picDisabled.Picture
' включенная картинка
cdm.Enabled = True
Set cmd.Picture = picEnabled.Picture
Cyrax писал(а):PSV писал(а):Ну и как бы программно делать при выключении ентой кнопки картинку серой и потом, при включении, делать картинку нормальной (цветной).
нк наверное как-то так
- Код: Выделить всё
' выключенная картинка
cdm.Enabled = False
Set cmd.Picture = picDisabled.Picture
' включенная картинка
cdm.Enabled = True
Set cmd.Picture = picEnabled.Picture
где:
picEnabled и picDisabled содержат нормальную и серую картинки
cmd - твоя кнопка...
Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 62