VirusZ2D Опубликовано 5 апреля, 2017 Поделиться Опубликовано 5 апреля, 2017 как правильно подключить функцию на Delphi робит на c++ нет (( HWND FHwnd; LONG_PTR OldWndProc; в создании формы FHwnd = Fmx::Platform::Win::WindowHandleToPlatform(Handle)->Wnd; OldWndProc = GetWindowLongPtr(FHwnd, GWL_WNDPROC); SetWindowLongPtr(FHwnd, GWL_WNDPROC, LONG_PTR(MyWndProc)); LRESULT __stdcall MyWndProc(HWND Hwnd,UINT Msg, WPARAM WParam,LPARAM LParam) { if (Msg == WM_MOVE) { ShowMessage("Тест") ; } return CallWindowProc(OldWndProc,Hwnd, Msg, WParam, LParam); /////// ошибка E2034 Cannot convert 'long' to 'long (__stdcall *)(HWND__ *,unsigned int,unsigned int,long)' } Цитата Ссылка на комментарий
0 VirusZ2D Опубликовано 6 апреля, 2017 Автор Поделиться Опубликовано 6 апреля, 2017 сам же и отвечаю ))) заменить LONG_PTR OldWndProc; на typedef LRESULT(__stdcall * func)(HWND,unsigned,WPARAM,LPARAM); func OldWndProc; OldWndProc = GetWindowLongPtr(FHwnd, GWL_WNDPROC); на OldWndProc = (func)GetWindowLongPtr(FHwnd, GWL_WNDPROC); Цитата Ссылка на комментарий
Вопрос
VirusZ2D
как правильно подключить функцию на Delphi робит на c++ нет ((
HWND FHwnd;
LONG_PTR OldWndProc;
в создании формы
FHwnd = Fmx::Platform::Win::WindowHandleToPlatform(Handle)->Wnd;
OldWndProc = GetWindowLongPtr(FHwnd, GWL_WNDPROC);
SetWindowLongPtr(FHwnd, GWL_WNDPROC, LONG_PTR(MyWndProc));
LRESULT __stdcall MyWndProc(HWND Hwnd,UINT Msg, WPARAM WParam,LPARAM LParam)
{
if (Msg == WM_MOVE) {
ShowMessage("Тест") ;
}
return CallWindowProc(OldWndProc,Hwnd, Msg, WParam, LParam); /////// ошибка E2034 Cannot convert 'long' to 'long (__stdcall *)(HWND__ *,unsigned int,unsigned int,long)'
}
Ссылка на комментарий
1 ответ на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.