Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не работает сообщение диалогового окна [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...


Наверх

Титульная страница Поиск, карта сайта Написать письмо