Текущий архив: 2007.06.10;
Скачать: CL | DM;
ВнизПример на языке С создание окна, помогите перевести строку Найти похожие ветки
← →
allucard (2007-05-16 13:57) [0]Сабж.
w: переменная типа WNDCLASS;
1.memset(&w,0,sizeof(WNDCLASS));
2.w.hbrBackground = GetStockBrush(WHITE_BRUSH);
3.RegisterClass(&w);
4.while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
if (Message == WM_DESTROY )
{
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,Message,wparam,lparam);
}
Спасибо.
← →
clickmaker © (2007-05-16 14:13) [1]= => :=
& => @ (если функция продекларирована с аргументом-указателем, а не var)
== => =
{ => begin
} => end;
return => Result :=
← →
Anatoly Podgoretsky © (2007-05-16 14:17) [2]> clickmaker (16.05.2007 14:13:01) [1]
> return => Result :=
return => Result := ...; Exit; ?
← →
allucard (2007-05-16 14:18) [3]
> clickmaker © (16.05.07 14:13) [1]
Понял.
но функции memset нет в Delphi, какой аналог?
← →
clickmaker © (2007-05-16 14:38) [4]
> какой аналог?
FillChar, ZeroMemory
← →
allucard (2007-05-16 15:05) [5]Как это интерпретировать:
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);
LRESULT CALLBACK WndProc(HWND:hwnd, UINT:Message, WPARAM:wparam, LPARAM:lparam);
begin
if (Message = WM_DESTROY) then
begin
PostQuitMessage(0);
Result := 0;
end;
Result := DefWindowProc(hwnd,Message,wparam,lparam);
end;
не могу интерпретировать только описание процедуры?
← →
stakan © (2007-05-16 15:42) [6]
> Как это интерпретировать:
>
> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);
>
> LRESULT CALLBACK WndProc(HWND:hwnd, UINT:Message, WPARAM:
> wparam, LPARAM:lparam);
> begin
> if (Message = WM_DESTROY) then
> begin
> PostQuitMessage(0);
> Result := 0;
> end;
> Result := DefWindowProc(hwnd,Message,wparam,lparam);
> end;
>
function WndProc(hwnd: HWND; Message: UINT; wparam: WPARAM; lparam: LPARAM): LRESULT;
begin
if (Message = WM_DESTROY) then
begin
PostQuitMessage(0);
Result := 0;
Exit;
end;
Result := DefWindowProc(hwnd, Message, wparam, lparam);
end;
← →
allucard (2007-05-16 16:11) [7]Просто функция???
Всем спасибо.
← →
clickmaker © (2007-05-16 16:23) [8]
> [7] allucard (16.05.07 16:11)
> Просто функция???
function WndProc(hwnd: HWND; Message: UINT; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
← →
allucard (2007-05-17 08:37) [9]В подчёркнутой строке Variable required, почему?
function WndProc(hwnd: HWND; Message: UINT; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
function WndProc(hwnd: HWND; Message: UINT; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
begin
if (Message = WM_DESTROY) then
begin
PostQuitMessage(0);
Result := 0;
Exit;
end;
Result := DefWindowProc(hwnd, Message, wparam, lparam);
end;procedure TForm2.Button5Click(Sender: TObject);
Var
H: HWND;
M: MSG;
W: WNDCLASS;
begin
ZeroMemory(@W, SizeOf(WNDCLASS));
W.style := CS_HREDRAW or CS_VREDRAW;
W.lpfnWndProc := @WndProc;
end;
← →
allucard (2007-05-17 09:09) [10]Разобрался, WndProc оказывается есть у класса TCustomForm.
Просто поменял имя - работает.
← →
allucard (2007-05-17 09:12) [11]Какой аналог на дельфи функции
GetStockBrush(WHITE_BRUSH);
Полная строкаw.hbrBackground = GetStockBrush(WHITE_BRUSH);
?
← →
clickmaker © (2007-05-17 09:30) [12]
> аналог на дельфи функции
это макрос
GetStockObject()
← →
allucard (2007-05-17 15:39) [13]Ок. Всё пошло.
Только RegisterClass(@w); вызывает Access Violation.
Наверное эти функции в С и Дельфи отличаются?
Какой может быть выход?
← →
Сергей М. © (2007-05-17 16:22) [14]
> Какой может быть выход?
Выход один - учить Паскаль.
Если w - это WNDCLASS, то никаких "баранов"-префиксов перед этим параметром быть не должно.
← →
allucard (2007-05-18 08:56) [15]
> Сергей М. © (17.05.07 16:22) [14]
)))
Incompatible types: "TPersistentClass" and "tagWNDCLASSA"
← →
allucard (2007-05-21 08:19) [16]Народ, подскажите как класс зарегить?
w типа WNDCLASS;
аRegisterClass(w);
вызывает ошибку Incompatible types: "TPersistentClass" and "tagWNDCLASSA".
Спасибо.
← →
Сергей М. © (2007-05-21 09:17) [17]
> allucard (18.05.07 08:56) [15]
Windows.RegisterClass(..);
Учи Паскаль.
Страницы: 1 вся ветка
Текущий архив: 2007.06.10;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.042 c