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

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

Адрес WndProc [D6, WinXP]


ZrenBy ©   (2002-10-07 18:14:00) 

Приветствую всех.
Есть следующий код.

uses Windows;

type TCLS = class
hWin:HWND;
constructor Create(hInst:Cardinal);
function ClsWndPrc(hW:HWND;uM:UINT;wP:WPARAM;lP:LPARAM):LRESULT;stdcall;
. . . .
end;
....
constructor TCLS.Create(hInst:Cardinal);
var wc:TWNDCLASS;
begin
. . . . .
wc.hInstance := hInst;
wc.lpfnWndProc := @TCLS.ClsWndPrc;// !!!
RegisterClass(wc);

hWin := CreateWindow(...

Здесь он выдает ошибку 1400 - Неверный дескриптор.

Вопрос: Как грамотно присвоить wc.lpfnWndProc адрес
оконной функции ?

PS: Про MakeObjectInstance я знаю. Неужели без него нельзя ?


ZrenBy   (2002-10-07 19:40:00) [1]

Так я как раз и не хочу использовать объектные методы.
Но я так понял, что в Delphi нельзя создать класс-ненаследник от
TObject. Блин, ну ладно, придется опять все гнать в Буилдер.


troits   (2002-10-07 19:09:00) [2]

Что значит нельзя? Вызов методов и статических процедур происходит по-разному. Поэтому эти типы и несовместимы. MakeObjectInstance как раз и устраняет эту несовместимость.


Наверх

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