Хочу на форме поместить анимированный смайлик, типа

alibek писал(а):Отчего же, подобных ActiveX-контролов целая куча.
Чудик писал(а):Все - Запутался. Сбили с толку. Причем тут RichTextBox?
tyomitch писал(а):Чудик писал(а):Все - Запутался. Сбили с толку. Причем тут RichTextBox?
Это ты меня сбил с толку, и я ошибочно решил, что он здесь при чём-то
Не обращай внимания
Private Const WM_PASTE = &H302
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, lp As Any) _
As Long
Private Sub Command1_Click()
Dim pic As StdPicture
Set pic = LoadPicture("d:\a.bmp")
Clipboard.Clear
Clipboard.SetData pic, vbCFBitmap
SendMessage RichTextBox1.hwnd, WM_PASTE, 0, 0
End Sub
Шурик писал(а):2Ruslan Demidow:
попробуй через буфер обмена, код не проверял![]()
- Код: Выделить всё
Private Const WM_PASTE = &H302
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal Msg As Long, ByVal wp As Long, lp As Any) _
As Long
Private Sub Command1_Click()
Dim pic As StdPicture
Set pic = LoadPicture("d:\a.bmp")
Clipboard.Clear
Clipboard.SetData pic, vbCFBitmap
SendMessage RichTextBox1.hwnd, WM_PASTE, 0, 0
End Sub
Шурик писал(а):2Ruslan Demidow:
попробуй через буфер обмена, код не проверял![]()
- Код: Выделить всё
Private Const WM_PASTE = &H302
==== Сгрызено моей собакой =====
SendMessage RichTextBox1.hwnd, WM_PASTE, 0, 0
End Sub
tyomitch писал(а):Ruslan - можно прямо в рантайме из bmp сделать иконку. Пример был на vbrussian, я линк уже постил в тему в трёпе, где иконки собирались конвертировать.
Sub ShowSmailes()
Dim pic As StdPicture
Dim sSmail As String
Dim sStart As Long, i As Integer
Dim arrSmail(1 To 5)
arrSmail(1) = ":)"
arrSmail(2) = ";)"
arrSmail(3) = ":("
arrSmail(4) = ":-("
arrSmail(5) = "%)"
For i = 1 To UBound(arrSmail)
SmailImageList.BackColor = MsgTextBox.BackColor
Set pic = SmailImageList.ListImages("Smail" & i).Picture
With MsgTextBox
Do While .SelStart <> 0
.SelStart = InStr(1, .Text, arrSmail(i)) '- 1
If .SelStart <> 0 Then
.SelStart = .SelStart - 1
.SelLength = Len(arrSmail(i))
Clipboard.Clear
Clipboard.SetData pic
SendMessage .hwnd, WM_PASTE, 0, 0
End If
Loop
.SelStart = 1
End With
Next i
End Sub
Set pic = SmailImageList.ListImages("Smail" & i).Picture
Set pic = SmailImageList.ListImages("Smail" & i).ExtractIcon
tyomitch писал(а):Если просто заменить строку
- Код: Выделить всё
Set pic = SmailImageList.ListImages("Smail" & i).Picture
На
- Код: Выделить всё
Set pic = SmailImageList.ListImages("Smail" & i).ExtractIcon
- не поможет?
Zer писал(а):Хм... А не проще .gif файл открыть, раскодировать и востпроизводить спокойно анимацию. А можешь и контрол такой написать. Если интересует строение .gif файла, могу выслать.
tyomitch писал(а):Ещё один вариант - взять данные иконки (GetIconInfo), скинуть hbmColor в отдельную битмапу, поверх него нарисовать фоновый цвет с маской из hbmMask (PatBlt), потом из полцучившегося битмапа сделать Picture (OleCreatePictureIndirect), и его уже кинуть в буфер
Сейчас этот форум просматривают: AhrefsBot и гости: 7