Показать сообщение отдельно
  #8  
Старый 03.11.2014, 01:18
HTTqp HTTqp вне форума
Новичок
 
Регистрация: 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, работу с формой и т.п. но проблема некоторые сообшения не приходят, потому что форма теряет фокус, либо они срабатывают один раз, как мне зделать чтобы окно было постоянно впереди, не теряя фокуса.
Ответить с цитированием