Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Несколько вопросов Добавлено: 29.05.03 19:51  

Автор вопроса:  shuffle | ICQ: 201502381 
  1. Как сделать окно прозрачным (и изменять степень прозрачности)
  2. Как кодировать текст в основные кодировки: UTF-8, Koi, Macintosh, ISO, Unicode Big Endian и возможно ли сделать что-нибудь типа "автоопределения"?
  3. Сохранение графики в известных форматах: JPG, GIF, TIFF, PNG, WMF, ICO, CUR и т.д. А если у кого есть CorelDRAW, то подскажите где он хранит плюгины?
  4. Как использовать API: FindText и ReplaceText.

Заранее благодарен.

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 V!RU$



ICQ: 132309822 

Вопросов: 24
Ответов: 54
 Web-сайт: cxodnya.narod.ru
 Профиль | | #1
Добавлено: 30.05.03 09:22

1. Это можно зделать только в Win 2000, Win XP, Win 2003 c помощью АПИ!!!!

2. Кодировать можно тоже через вин апи или накачать внешних дос кодировщиков!!!! а автоопределение я незнаю как зделать!

3. сохранять крафику я незнаю как ... я вообще некогда на ВБ с графикой не пахал!

4. скачай справочник от Русского проэкта и посмотри!!!!! (но вроди это функции ВБ а не апи- если так то тогда в справочник по ВБ)

Ответить

Номер ответа: 2
Автор ответа:
  Creator



Вопросов: 11
Ответов: 61
 Профиль | | #2 Добавлено: 30.05.03 09:44

 В  .NET  это всё решаемо тривиально и API не нужно , так что садись на новые сани .....

Хотя и на 6-ом я делал и прозрачность и кодирование, но это всё на API ...... Криво и не на всех платформах работает ....

Искать некогда, намыливай будет время вышлю ....

Ответить

Номер ответа: 3
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #3 Добавлено: 31.05.03 22:19
Я на .NET и пишу, но мне все равно нужен исходник! плз

Ответить

Номер ответа: 4
Автор ответа:
 Padre



ICQ: 346632205 

Вопросов: 25
Ответов: 215
 Web-сайт: localhost
 Профиль | | #4
Добавлено: 01.06.03 02:40

Прозрачность под win2k & winxp (взято из api-guide):

 

Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

 

'param description:

· hwnd
[in] Handle to the layered window. A layered window is created by specifying WS_EX_LAYERED when creating the window with the CreateWindowEx function or by setting WS_EX_LAYERED via SetWindowLong after the window has been created.

· crKey
[in] Pointer to a COLORREF value that specifies the transparency color key to be used when composing the layered window. All pixels painted by the window in this color will be transparent. To generate a COLORREF, use the RGB macro.

· bAlpha
[in] Alpha value used to describe the opacity of the layered window. Similar to the SourceConstantAlpha member of the BLENDFUNCTION structure. When bAlpha is 0, the window is completely transparent. When bAlpha is 255, the window is opaque.

· dwFlags
[in] Specifies an action to take. This parameter can be one or more of the following values.
LWA_COLORKEY
 Use crKey as the transparency color.
LWA_ALPHA
 Use bAlpha to determine the opacity of the layered window..

 

'example:

 

Const LWA_COLORKEY = &H1

 

Const LWA_ALPHA = &H2

 

Const GWL_EXSTYLE = (-20)

 

Const WS_EX_LAYERED = &H80000

 

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 SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Form_Load()

'KPD-Team 2000

 

'URL: http://www.allapi.net/

 

'E-Mail: KPDTeam@Allapi.net

 

Dim Ret As Long

 

'Set the window style to 'Layered'

 

Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)

Ret = Ret Or WS_EX_LAYERED

SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret

'Set the opacity of the layered window to 128

 

SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA

 

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Padre



ICQ: 346632205 

Вопросов: 25
Ответов: 215
 Web-сайт: localhost
 Профиль | | #5
Добавлено: 01.06.03 02:49

Да, вот ещё модуль перекодировки...

 

Option Explicit

Enum Code
    Win = 1
    Dos = 2
    Koi = 3
    Iso = 5
End Enum
Public Function Recode(Char As String, Src As Code, Dest As Code) As String
Const wDos As String = "°±²³´µ¶·¸¹º"¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ðÙÚÛÜÝÞßòóôõö÷øùñûüýþÿØú€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª"¬­®¯àáâãäåæçèéêëìíîï"
Const wIso As String = "°±²³´µ¶·¸¹º"¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×¢ÙÚÛÜÝÞßòóôõö÷øùñûüýþÿØú°±²³´µ¶·¸¹º"¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîï"
Const wKoi As String = "‘’‡²´§¦µ¡¨®­¬ƒ„‰ˆ†€Š¯°"¥"¸± ¾¹º¶·ª©¢¤½³…‚ŒŽ‹™˜“›Ÿ—œž£–š”¿¼•áâ÷çäåöúéêëìíîïðòóôõæèãþûýÿùøüàñÁÂ×ÇÄÅÖÚÉÊËÌÍÎÏÐÒÓÔÕÆÈÃÞÛÝßÙØÜÀÑ"
Const wWin As String = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª"¬­®¯°±²³´µ¶·¸¹º"¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
Const NotRecodedChar As String = "?"

If Src = Dest Then
    Recode = Char
    Exit Function
End If

Dim t As String, i As Long, tt As String, a As Long, ss As String, ch As String
If Src = Win Then
    t = Char
Else
    Select Case Src
        Case Koi: ss = wKoi
        Case Dos: ss = wDos
        Case Iso: ss = wIso
    End Select
    For i = 1 To Len(Char)
        ch = Mid(Char, i, 1)
        If Asc(ch) < 128 Then
            t = t & ch
        Else
            a = InStr(1, ss, ch, vbBinaryCompare)
            If a = 0 Then
                t = t & NotRecodedChar
            Else
                t = t & Mid$(wWin, a, 1)
            End If
        End If
    Next i
End If

If Dest = Win Then
    Recode = t
Else
    Select Case Dest
        Case Koi: ss = wKoi
        Case Dos: ss = wDos
        Case Iso: ss = wIso
    End Select
    For i = 1 To Len(Char)
        ch = Mid(t, i, 1)
        If Asc(ch) < 128 Then
            tt = tt & ch
        Else
            a = InStr(1, wWin, ch, vbBinaryCompare)
            If a = 0 Then
                tt = tt & NotRecodedChar
            Else
                tt = tt & Mid$(ss, a, 1)
            End If
        End If
    Next i
    Recode = tt
End If
End Function
 

...и пример определения кодировки:

 

'пpовеpяем тип кодиpовки ANSI или ASCII

'беpем пеpвые 1000 байт еcли это возможно. Hевозможно - меньше.

l& = Len(rtbView.Text)

If l& > 1000 Then l& = 1000

'копиpyем yчаcток текcта из RichTextBox в пеpеменнyю, иначе тоpмоз обеcпечен

s$ = Left$(rtbView.Text, l&;)

'обнyляем флажки

fdo% = 0

fwo% = 0

'пpоcматpиваем кycок текcта

For n% = 1 To l&

'вытаcкиваем очеpедной cимвол

c$ = Mid$(s$, n%, 1)

'еcли это pyccкая "о" в DOS кодиpовке то инкpементиpyем cчетчик

Ответить

Номер ответа: 6
Автор ответа:
 Padre



ICQ: 346632205 

Вопросов: 25
Ответов: 215
 Web-сайт: localhost
 Профиль | | #6
Добавлено: 01.06.03 02:58

Мммм, а вот что есть по последнему вопросу:

 

Public Declare Function FindText Lib "comdlg32.dll" Alias "FindTextA" ( _
     pFindreplace As FINDREPLACE) As Long

Public Declare Function ReplaceText Lib "comdlg32.dll" Alias "ReplaceTextA" ( _
     pFindreplace As FINDREPLACE) As Long

Type FINDREPLACE
    lStructSize As Long ' size of this struct 0x20
    hwndOwner As Long ' handle to owner's window
    hInstance As Long ' stance handle of.EXE that
    ' contains cust. dlg. template
    flags As Long ' one or more of the FR_??
    lpstrFindWhat As String ' ptr. to search string
    lpstrReplaceWith As String ' ptr. to replace string
    wFindWhatLen As Integer ' size of find buffer
    wReplaceWithLen As Integer ' size of replace buffer
    lCustData As Long ' data passed to hook fn.
    lpfnHook As Long ' ptr. to hook fn. or NULL
    lpTemplateName As String ' custom template name
End Type

Ответить

Номер ответа: 7
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #7
Добавлено: 01.06.03 13:38

2 Padre: вот перекодировка намного быстрее и лучше:

'===================Перекодировка символов===========
Public Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, _
ByVal lpWideCharStr As String, ByVal cchWideChar As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Public Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As String, ByVal cchWideChar As Long) As Long

Public Const MB_PRECOMPOSED = &H1         '  use precomposed chars

'=============Функция перекодировки===================
Public Function Convert(ByVal strSrc As String, ByVal nFromCP As Long, ByVal nToCP As Long) As String
Dim nLen As Long
Dim strDst As String
Dim strRet As String
Dim nRet As Long
nLen = Len(strSrc)
strDst = String(nLen * 2, Chr(0))
strRet = String(nLen * 2, Chr(0))
nRet = MultiByteToWideChar(nFromCP, MB_PRECOMPOSED, strSrc, nLen, strDst, nLen)
nRet = WideCharToMultiByte(nToCP, 0, strDst, nRet, strRet, nLen * 2, ByVal 0, 0)
Convert = Left(strRet, nRet)
End Function

 

Вызывай функцию Convert. Ей передаёшь исходную строку, исходную кодировку (например, 1251) и кодировку, которую надо получить (например, 866).

В .NET для перекодировки надо юзать класс System.Text.Encoding. То есть создаём один Encoding для исходной кодировки, другой - для получаемой кодировки. Потом в первом юзаем GetBytes, полученный байтовый массив закидываем в метод второго Encoding'а - GetString.

Ответить

Номер ответа: 8
Автор ответа:
 shuffle



Администратор

ICQ: 201502381 

Вопросов: 15
Ответов: 737
 Профиль | | #8 Добавлено: 02.06.03 18:49

2 Павел

Замечательная функция!!!! Но как узнать кодовую страницу Koi, ISO?

Ответить

Номер ответа: 9
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #9
Добавлено: 03.06.03 07:11

Вот список кодов некоторых кодировок.

 

Central European (DOS)

852

Central European Alphabet (Windows)

1250

Central European Alphabet (ISO)

28592

Cyrillic Alphabet (DOS)

866

Cyrillic Alphabet (Windows)

1251

Cyrillic Alphabet (ISO)

28595

Cyrillic Alphabet (KOI8-R)

20866

Ukrainian Alphabet (KOI8-RU)

21866

Номер ответа: 10
Автор ответа:
  Creator



Вопросов: 11
Ответов: 61
 Профиль | | #10 Добавлено: 03.06.03 08:46

 В NET всё просто:

по 1 - есть такое чудное свойство у формы Opacity

по 2 - здесь уже много вопросов обсуждалось на тему перекодоровок посмотри

по 3 - юзай пространство System.Drawing.Imaging там все формыты есть

по 4 - Зачем API , выслал на мыло класс ......юзай .....удачи.....

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам