![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не работает сообщение диалогового окна [D5, WinME, Win2k]
stainer © (2002-08-04 01:50:00)Всем привет!
Не пашет сообщение от диалога cdm_getfolderpath
sendmessage(hwnd,cdm_getfolderpath,sizeof(buffer),integer(@buffer))
Точнее переменная buffer не заполняется путём.
В чём дело???????
Спасибо!!!!
Слесарь Матерящийся (2002-08-04 23:42:00) [1]Ну, тогда всё правильно! Так и должно быть.
stainer (2002-08-04 22:26:00) [2]Точнее я немного неправильно сказал
Когда открывается диалог из моей формы то всё нормально (путь возвращается), а для другого диалога, открытого не из моей рограммы переменная, содержащая путь пуста
Неотеничный Педоморф (2002-08-04 20:29:00) [3]А так, например:
char *st = (char *)malloc(260);
OutputDebugString("Timer!");
st[0] = "*"; st[1] = 0;
if (IsWindow(OpenDialog1->Handle)) // TOpenDialog
{
SendMessage(GetParent(OpenDialog1->Handle),CDM_GETFOLDERPATH,259,(long)(&st[1])); // hwnd == Form1->Handle
OutputDebugString(st);
SendMessage(GetParent(OpenDialog1->Handle),CDM_GETFILEPATH,259,(long)(&st[1]));
OutputDebugString(st);
} else
{
OutputDebugString("no dialog");
};
free(st);
Неотеничный Педоморф (2002-08-04 19:48:00) [4]Нужно посмотреть код.
Насколько я понимаю, hwnd -- хэндл диаложека Open/SaveAs, и вызов происходит в то время, когда этот диаложек отображается на экране.
Если так, попробуйте тот же приём с CDM_GETFILEPATH. Интересны результаты.
stainer (2002-08-04 19:26:00) [5]да
Неотеничный Педоморф (2002-08-04 14:01:00) [6]А окно hwnd создано тем же процессом, в котором вызывается SendMessage?
stainer (2002-08-04 13:39:00) [7]buffer - это массив типа
buffer: array [0..max_path] of char;
Suntechnic (2002-08-04 09:21:00) [8]А что такое buffer ты бы для приличия написал бы всё таки...
У меня сейчас никаких хелпов под рукой нет, но существует предположение, что третьим параметром в ф-цию должен передаваться размер буфера(так обычно вызываются API ф-ции), а также существует предположение, что результатом операции sizeof() над таинственным buffer-ом всегда будет 4(размер в байтах указателя), но в любом случае для прояснения картины надо знать что такое buffer...