Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: SendMessage Добавлено: 17.04.04 09:45  

Автор вопроса:  cresta

Приветствую всех. Хочу задать вопрос про SendMessage. Короче, такая вещь: Callback, в нём принимаю сообщение CDN_SELCHANGE - изменение выбраного файла в CommonDialog.
    Dim hdr As NMHDR
    Dim Buff As String, ret As Long
    Select Case uMsg
        Case WM_NOTIFY
            Call CopyMemory(hdr, ByVal lParam, Len(hdr))
            Select Case hdr.Code
                Case CDN_SELCHANGE
                    Buff = String(100, Chr$(0))
                    ret = SendMessage(ByVal hwnd, CDM_GETSPEC, Len(Buff), Buff)
                    Debug.Print ret ' возвращает 0, должно быть длина возвращаемого буфера
                    Debug.Print Buff ' в буфере - строка из 100 пробелов

Вот здесь в буфере должно вернуться имя файла, на который кликнули. Но почему-то возвращается строка, в которой все CHR$(0) заменены на CHR$(32). Кто знает, почему не возвращается имя файла?

Ответить

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

Номер ответа: 1
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #1
Добавлено: 18.04.04 04:39

Была и у меня такая проблема. Я помнится её даже решил. Вот только решение не помню где.

По памяти могу посоветовать отправлять не строку, а адрес байтового массива.

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 18.04.04 07:44
Да я пытался передавать указатель на строку, но программа тогда вылетает. Хотя я тоже обошел это дело. Через EnumChildeWindow получаю интересующие меня окна имени выбранного файла и выбранного расширения и далее SetWindowText в имя файла при изменении текста в окне расширения. Объехал на пьяной козе

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 19.04.04 08:56

Ну так попробуй

Buff = String(100, Chr$(32))

Ответить

Номер ответа: 4
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #4
Добавлено: 20.04.04 04:40

Можно и так:

Buff = Space$(100)

Только не будет всё равно функция с VB-шной строкой работать.

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #5 Добавлено: 20.04.04 12:59
Да пробовал и CHR$(32) и CHR$(0) - разницы нет

Ответить

Страница: 1 |

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



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