![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Enum & CallBack
Nick N A © (2002-10-27 06:58:00)Все CallBack функции у меня задыхаются в Delphi после первого шага - нарушение стека.
BOOL CALLBACK PropEnumProc(HWND hwnd, LPCTSTR lpszString, HANDLE hData )
{
result = true;
}// вариант в си работает,
а что нужно Delphi ? (в си я небольшой мастер, да и интерфейс у
Delphi лучше продуман)
неработают даже такой вариант:
procedure Add(lpszString:LPCTSTR);
Begin
Form1.ListBox1.Add(lpszString);
end;
function PropEnumProc;(hwnd:HWND;enumerated
lpszString:LPCTSTR; HANDLE:cardinal ):LongBool;cdecl;
assembler
asm
pusha;// variant 2
push lpszString;//variant 2
call add; //variant 2
popa;//variant 2
end;// ошибка всегда после этой строчки
var wm:HWND;
Begin
wn:=GetForegroundWindow;
ListBox1.Clear;
EnumProps(wn,@PropEnumProc);
end;
Enum - это перечисление различных параметров, свойств, отличный быстрый, часто единственный способ получить информацию о винде
Anatoly Podgoretsky (2002-11-02 14:39:00) [1]Не только здесь перепутано соглащение о вызове, но и в Add также
Digitman (2002-11-02 14:32:00) [2]function PropEnumProc(hwnd:THandle;
lpszString:PChar; HANDLE:cardinal):LongBool;stdcall;
begin
Add(lpszString);
Result := True;
end;
apay (2002-11-02 01:35:00) [3]вообще-то в windef.h есть строчка
#define CALLBACK __stdcall
так что если в хелпе сишная ф-я CALLBACK, надо писать stdcall
Cobalt (2002-10-30 15:14:00) [4]BOOL CALLBACK PropEnumProc( HWND hwnd,
// handle to window whose property list is being enumerated
LPCTSTR lpszString,
// string component of property
HANDLE hData
// data handle component of property );
Попробуйте вместо LPCTSTR поставить PCHar
Nick N A (2002-10-30 03:50:00) [5]Я уже пробывал stdcall, в справке их гораздо больше :) ,
но ни с одиним из них неработает :( .
Alex4444444444 (2002-10-27 14:40:00) [6]VSEGDA stdcall !
Cobalt (2002-10-27 13:18:00) [7]Обычно CallBack-ф-ии - stdcall