
03.11.2014, 01:18
|
Новичок
|
|
Регистрация: 16.04.2014
Сообщения: 77
Версия Delphi: Delphi 7
Репутация: -25
|
|
Цитата:
Сообщение от NumLock
формы в VCL, там - окна. вызывай DefWindowProc внутри оконной процедуры, для необрабатываемых сообщений! пример работающей процедуры:
Код:
function WindowProc(AWnd: HWND; Msg: Integer;
wParam: WPARAM; lParam: LPARAM): Longint; stdcall;
begin
case Msg of
WM_CLOSE: begin
PostQuitMessage(0);
Result:=0;
end;
else Result:=DefWindowProc(AWnd, Msg, wParam, lParam);
end
end;
|
Вот малая часть и так сказать основная, просто я не понял про форму VLC начали говорить.
Код:
program Project1;
uses
Windows,
Messages;
const
WindowWidth=600;
WindowHeight=400;
var
HM: THandle;
Msg: TMsg;
wc: TWndClass;
hWindow: HWND;
function WindowProc(hWnd,Msg,wParam,lParam:Integer):Integer;stdcall;
var
PS: TPaintStruct;
begin
Result:=0;
case msg of
WM_DESTROY:
begin
PostQuitMessage(0);
Exit;
end;
end;
Result:=DefWindowProc(hWnd,Msg,wParam,lParam);
end;
//Процедура создания окна
procedure CreateMain;
begin
FillChar(wc,SizeOf(TWndClassEx), 0);
wc.lpszClassName:='MainForm';//Название имени класса окна
wc.lpfnWndProc:=@WindowProc;
wc.hbrBackground:=COLOR_WINDOW;//Цвет формы
wc.hIcon:=LoadIcon(hInstance,MakeIntResource('MAINICON'));{тут мы подгрузим дефолтную иконку делфи}
wc.hCursor:=LoadCursor(0,IDC_ARROW);{Выставим курсор по умолчаннию}
RegisterClass(wc);{Регистрируем класс}
CreateWindowEx(WS_EX_CONTROLPARENT,{Поверхи всех окон}
wc.lpszClassName,{Имя класса окна}
'Window'{Имя окна},
WS_TILEDWINDOW or WS_VISIBLE{Стиль окна or Видимое окно},
300,100,WindowWidth,WindowHeight,
0,0,
hInstance,{Описатель приложения, с которым окно связывается}
nil);
ShowWindow(hWindow,SW_SHOW);
UpDateWindow(hWindow);
end;
begin
CreateMain;
while GetMessage(Msg,0,0,0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
Вот я создал форму. в function WindowProc я произвожу обработку нажатий button, работу с формой и т.п. но проблема некоторые сообшения не приходят, потому что форма теряет фокус, либо они срабатывают один раз, как мне зделать чтобы окно было постоянно впереди, не теряя фокуса.
|