Страница: 1 |
Приветствую всех. Хочу задать вопрос про SendMessage. Короче, такая вещь: Callback, в нём принимаю сообщение CDN_SELCHANGE - изменение выбраного файла в CommonDialog. Вот здесь в буфере должно вернуться имя файла, на который кликнули. Но почему-то возвращается строка, в которой все CHR$(0) заменены на CHR$(32). Кто знает, почему не возвращается имя файла?
Была и у меня такая проблема. Я помнится её даже решил. Вот только решение не помню где. По памяти могу посоветовать отправлять не строку, а адрес байтового массива. Ну так попробуй Buff = String(100, Chr$(32)) Можно и так: Buff = Space$(100) Только не будет всё равно функция с VB-шной строкой работать. Страница: 1 |
Вопрос: SendMessage
Добавлено: 17.04.04 09:45
Автор вопроса: cresta
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 пробелов
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #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
Номер ответа: 4
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #4
Добавлено: 20.04.04 04:40
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 20.04.04 12:59
Да пробовал и CHR$(32) и CHR$(0) - разницы нет